본문 바로가기
기타

[We-Co] langchain - FewShotPromptTemplate란 무엇일까!

by 위기의코딩맨 2025. 7. 2.
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 RAG의 langchain프레임 워크에서 FewShotPromptTemplate에 대해서 알아보겠습니다~!

요즘 RAG에 관련된 내용을 공부하고있는데 아주 재밌더라구요.

 

[ FewShotPromptTemplate ]

 

FewShotPromptTemplate 간단하게 말하면 몇가지 사례를 주고,

사용자가 질의를 입력하면, 해당 사례를 기반으로 프롬프트를 구성하여 답변을 주는 것으로 보시면 됩니다.

예시를 보겠습니다.

  • 질문 : "아이언맨의 실제 이름이 뭐야?"
  • 답변 : "토니 스타크"

 

  • 질문 : "캡틴아메리카의 실제 이름이 뭐야?"
  • 답변 : "스티브 로저스"

이런식으로 답과 질의를 생성하여 사례를 만들고 프롬프트에 적용하면

"블랙위도우의 실제 이름이 뭐야??"의 질문을 하게되면 "나타샤 로마노프"의 답변을 받게될 것입니다!

 

 

  • Few-shot prompting - 사례를 주고 답변을 받는 기법
  • FewShotPromptTemplate - 파이썬에서 사용되는 함수
import os
from dotenv import load_dotenv
from langchain import FewShotPromptTemplate, PromptTemplate
from langchain_community.chat_models import ChatOpenAI
from langchain.chains import LLMChain
 
load_dotenv() 
api_key = os.getenv("Your Key")
 
examples = [
    {"question": "아이언맨의 진짜 이름은?", "answer": "토니 스타크"},
    {"question": "캡틴 아메리카의 진짜 이름은??",    "answer": "스티브 로저스"},
]
example_template = PromptTemplate(
    input_variables=["question", "answer"],
    template="Q: {question}\nA: {answer}\n"
)
few_shot = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_template,
    prefix="아래는 슈퍼히어로 본명 예시입니다.\n\n",
    suffix="Q: {user_question}\nA:",
    input_variables=["user_question"],
    example_separator="\n"
)
 
llm = ChatOpenAI(
    model_name="your modeli",
    temperature=0.7,
    openai_api_key=api_key
)

 
chain = LLMChain(llm=llm, prompt=few_shot, verbose=True)
 
if __name__ == "__main__":
    answer = chain.run(user_question="블랙 위도우의 진짜 이름은??")
    print(answer)

 

코드의 순서는

  1. Key 불러오기
  2. 예제 생성
  3. 템플릿 생성
  4. few_shot 설정
  5. llm 설정
  6. chin 설정

 

결과는 제가 생각한 결과와 동일하게

"나타샤 로마노프"가 나왔습니다.

 

 

 

앞으로도 계속 RAG와 Langchain에 대해서

공부해보도록 하겠습니다.

반응형