• Feed
  • Explore
  • Ranking
/
/
    💭LLM

    LangChain 입문 (1)

    Langchain
    k
    kawaihachiwarae
    2026.01.05
    ·
    5 min read

    LangChain

    • LLMs로 구동되는 애플리케이션을 개발하기 위한 프레임워크

    RAG

    • Retrieval-Augmented Generation (검색-증강-생성)

    • 최신정보에 대한 학습을 하고 싶을때

    • 제한된 내부데이터에 대한 학습을 하고 싶을때

    • 특정 도메인에 대한 질문을 할 때

    • 문서화 시켜 기대하는 답변이나 환각 현상을 없애고 싶을때

    -> 궁극적으로 더 나은 답변 품질을 기대할 수 있으며, 방대한 지식 기반으로 답변하는 도메인 특화 챗봇을 생성하는 것이 가능하다.

    토큰

    • 자연어 처리에서 텍스트를 작은 단위로 나누어 처리하기 위해 사용되는 기본 단위

    • 단어, 부분 단어, 문자 등이 토큰이 될 수 있음

    • LLM에서 토큰은 텍스트 데이터를 모델이 이해하고 처리하기 위해 분할된 기본 단위

    • BPE 알고리즘 등으로 자주 등장하는 문자 쌍을 합쳐가며 서브워드를 생성

    토큰의 중요성

    • 토큰화는 자연어 처리의 기본적인 단계 로 LLM을 이해하고 사용하는데 필수적인 개념

    • 다양한 토큰화 방법을 잘 이해하면 모델 성능 최적화에 도움

    • 어떤 방식이 사용되느냐에 따라 모델의 성능과 효율성이 달라질 수 있음

    • 토큰화 방법을 선정할때는 모델의 목적에 따라 선정해야함

    Context Window

    • 입출력을 처리할 수 있는 최대 토큰 길이

    • max_tokens : 답변에 대한 최대 출력 토큰 수

    • 입력과 출력의 비용은 다름

    LangChain 문법

    ChatOpenAI 주요 파라미터

    • temperature

    • max_tokens

    • model_name

    • llm.invoke 함수 사용

    import os
    from dotenv import load_dotenv
    from langchain_openai import ChatOpenAI
    
    load_dotenv()
    
    llm = ChatOpenAI(
        temperature=0.1,
        model_name='gpt-4o',
    )
    
    question = '미국의 수도는?'
    print(f"[답변]: {llm.invoke(question)}")
    8646
    • 답변에 굉장히 많은 내용이 나옴

    • AImessagesms 객체로 나오게 됨

    86478648

    content key값으로 접근하면 깔끔하게 답변 출력 가능

    logprobs=True

    • 각 토큰의 확률값을 확인 가능

    스트리밍 출력

    • 실시간 출력 및 출력 답변 저장

    • llm.stream

    question = "데이터 사이언티스트의 역량 3가지만 알려줘"
    
    # 1. 전체 내용을 담을 빈 문자열 변수 생성
    full_response = ""
    
    print("[실시간 출력 시작]")
    
    # 2. 스트림으로 한 조각씩 가져오기
    for chunk in llm.stream(question):
        content = chunk.content  # 조각의 내용 추출
        print(content, end="", flush=True)  # 화면에 실시간으로 출력 (end="" 필수)
        
        full_response += content  # 전체 내용을 변수에 차곡차곡 저장
    
    print("\n\n[스트리밍 종료]")
    print("-" * 30)
    
    ############## 
    
    # 3. 나중에 한 번에 출력하거나 다른 용도로 사용
    print(f"변수에 저장된 최종 내용:\n{full_response}")
    

    프롬프트템플릿

    PromptTemplate

    • 사용자의 입력 변수를 사용해 완전한 프롬프트 문자열을 만드는 데 사용되는 템플릿

    • 사용법

      • template: 템플릿 문자열, {}는 변수를 나타냄

      • input_variables: 중괄호 안에 들어갈 변수 이름을 리스트로 정의

    • from langchain_core.prompts import PromptTemplate 으로 사용

      8651






    - 컬렉션 아티클