SKS 공부 - 2025-11-12

SKS 홈으로
13회차 공부

한줄요약:
    보안데이터 기반 데이터 분석 - LangChain으로 LLM(OpenAI)에 프롬프트 템플릿을 연결하여 작업을 자동화하고, LLM의 응답에서 필요한 구조화된 데이터(JSON, 이메일 등)를 얻기 위해 정규표현식(re 모듈)을 사용하여 불필요한 서식을 제거하고 정보를 정확하게 추출합니다.
    
    					

오늘 공부한 내용:
    1. 🤖 LLM (Large Language Model) 복습
    LLM은 문자를 이해하고 답변하는 인공지능 모델이며, LangChain은 이러한 LLM을 활용한 애플리케이션 개발을 돕는 '연결 조립 키트'입니다.
    
    LangChain 모델 설정: ChatOpenAI 클래스를 사용하여 LLM 모델을 초기화합니다.
    
    temperature 매개변수: 응답의 무작위성(창의성)을 제어합니다.
    
    temperature=0: 보수적이고 일관된 답변 생성 (사실 확인, 데이터 추출에 유리).
    
    temperature=0.8 (0 ~ 1): 창의적이고 다양한 답변 생성.
    
    LangChain Chain: LLMChain은 프롬프트 템플릿과 LLM을 결합하여 특정 작업을 수행하는 기본적인 구조입니다.
    
    prompt = ChatPromptTemplate.from_template("...")
    chain = LLMChain(llm=chat, prompt=prompt)
    answer = chain.run(text=question)
    
    2. 📝 정규표현식 (Regular Expression, re 모듈)
    정규표현식은 문자열에서 특정 패턴을 검색, 추출, 치환하는 데 사용되는 강력한 도구입니다. 특히 LLM의 응답에서 불필요한 서식이나 특정 데이터(예: 이메일, JSON)를 추출할 때 유용합니다.
    함수,목적,설명
    re.search(),부분 일치,문자열 내에서 패턴의 첫 번째 매치를 찾음.
    re.findall(),모두 찾기,문자열 전체에서 일치하는 모든 부분을 리스트로 반환.
    re.sub(),치환,일치하는 부분을 다른 문자열로 대체.
    
    패턴 예시 (데이터 추출):
    
    이메일: r'\w+@\w+\.\w+' (단어@단어.단어)
    
    전화번호: r'0[0-9][0-9]-\d{4}-\d{4}' (010, 011 등으로 시작하는 전화번호 형식)
    
    숫자만: r'\d+' (하나 이상의 숫자)
    
    3. 📊 LLM 결과 전처리 및 구조화
    LLM이 반환하는 자유로운 문자열 응답에서 구조화된 데이터 (예: JSON)를 추출하고 처리하는 과정은 분석의 필수 단계입니다.
    
    불필요한 서식 제거 (re.sub): LLM은 종종 마크다운 형식으로 응답합니다.
    
    응답 시작의 **````json** 또는 ** ** 제거: `re.sub(r"^[a-zA-Z]*\n?","",csv_text])`
    
    응답 끝의 **```** 제거:re.sub(r"```$","",csv_text).strip()`
    
    JSON 데이터 추출 및 파싱 (Quiz 예시):
    
    JSON 객체 패턴 검색: LLM 응답 전체에서 중괄호로 시작하는 JSON 문자열을 검색합니다.
    
    # 'json' 이라는 키워드와 중괄호로 둘러싸인 내용 모두를 찾음
    pattern = r'json\s*(\{[\s\S]*?\})'
    match = re.search(pattern, answer)
    if match:
        json_string = match.group(1)
    
    
    # json.loads(json 문자열)
    data_dict = json.loads(json_string)
    print(type(data_dict)) # 
    
    
                        
노트북 전체보기
전체화면 코드