LangChain example 02

Kitkat·2025년 1월 14일

from_template

  • 단일 템플릿 문자열을 사용하여 프롬프트를 생성할 때 사용
  • 변수는 {변수명} 형식으로 지정
  • 단순한 텍스트 기반 프롬프트에 적합
  • 기본 문자열 템플릿 생성에 사용
from langchain_core.prompts import PromptTemplate

template = "{country}의 수도는 어디인가요?"
prompt = PromptTemplate.from_template(template)
result = prompt.format(country="대한민국")

from_messages

  • 대화형 프롬프트를 생성할 때 사용되며 다음과 같은 메시지 유형을 지원
  • SystemMessage: 시스템 설정 및 동작 정의
  • HumanMessage: 사용자 입력
  • AIMessage: AI 응답
  • FunctionMessage: 함수 호출 결과
  • ToolMessage: 도구 사용 결과
from langchain_core.prompts import ChatPromptTemplate

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", "이 시스템은 천문학 질문에 답변할 수 있습니다."),
    ("user", "{user_input}")
])

FewShotPromptTemplate

  • 모델은 규칙을 설명하는 것보다 예시를 통해 더 잘 학습함
  • 예시의 패턴을 따라 더 일관되고 정확한 응답을 생성
  • 소수의 예제만으로도 복잡한 지시사항 없이 원하는 결과를 얻을 수 있음
# 예제 데이터
examples = [
    {
        "country": "France",
        "answer": """
        Here is what I know:
        Capital: Paris
        ...
        """
    },
    # 추가 예제들...
]

# 기본 대화 형식 정의
example_prompt = ChatPromptTemplate.from_messages([
    ("human", "What do you know about {country}?"), 
    ("ai", " {answer}")
])

# Few-shot 템플릿 생성
example_prompt = FewShotChatMessagePromptTemplate(
    example_prompt=example_prompt,
    examples=examples,
)

# 최종 프롬프트 조합
final_prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a travel guide"),  		# 시스템 역할 정의
    example_prompt,                            # Few-shot 예제들
    ("human", "what do you know about {country}?")  # 실제 질문
])

ExampleSelector

  • Few-shot 프롬프팅에서 입력에 따라 적절한 예시를 동적으로 선택해주는 Langchain의 기능

  • ExampleSelector 종류
    Fixed Example Selector : 사전에 정의된 고정된 예시들을 항상 사용
    Length-Based Example Selector : 지정된 최대 길이를 넘지 않도록 예시의 수를 조절
    Semantic Similarity Example Selector : 입력과 예시들 간의 의미적 유사도를 계산하여 선택
    Maximum Marginal Relevance (MMR) Example Selector : 입력과의 유사성과 예시들 간의 다양성을 모두 고려
    Random Example Selector : 무작위로 일정 수의 예시를 선택

  • 사용 이점

  1. 효율성 향상
  • LLM의 컨텍스트 길이 제한을 고려하여 최적의 예제만 선택, 사용하여 토큰 사용량 감소
  1. 응답 품질 개선
  • 현재 질문과 가장 관련된 예제를 선택하여 더 정확한 응답 생성
  • 중복되는 예제를 피하고 다양한 관점의 예제 제공
  1. 동적 대응
  • 입력에 따라 자동으로 가장 적절한 예제 선택
  • 새로운 예제를 쉽게 추가하고 관리 가능

0개의 댓글