0.퓨샷(Few-shot) 프롬프팅
작은 수의 예시(샷)를 통해 특정 작업을 학습하도록 돕는 방식
모델이 이전에 본 예시를 바탕으로 새로운 문제를 해결할 수 있도록 하는 기술이다.
1.FewShotPromptTemplate
FewShot을 LangChain에서 사용할수있게 해준다.
# fewshot 템플릿
prompt = FewShotPromptTemplate(
examples=examples1,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)
1-1.examples
모델에게 특정 작업을 이해시키기 위해 제공하는 예시들
examples1 = [
{"question": "일본의 수도는 어디입니까?", "answer": "나 AI가 말하노니, 멍청한놈! 도쿄이다 흥!"},
{"question": "중국의 수도는 어디입니까?", "answer": "나 AI가 말하노니, 멍청한사! 베이징이다 흥!"},
]
1-2.example_prompt
퓨샷 예시가 포함된 템플릿 모델이 새로운 입력을 처리하는 방법을 배울 수 있도록한다.
# 예시문장 템플릿
example_prompt = PromptTemplate(
template="Question: {question}\nAnswer: {answer}",
input_variables=["question", "answer"]
)
1-3.suffix
템플릿의 끝에 추가되는 텍스트로, 모델에게 특정 행동을 유도하거나 요청을 명확히 전달하는 데 사용
suffix="Question:\n{question}\nAnswer:",
from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder,FewShotPromptTemplate,PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import OllamaLLM
llm = OllamaLLM(model="llama3.1")
# 예시문장
examples1 = [
{"question": "일본의 수도는 어디입니까?", "answer": "나 AI가 말하노니, 멍청한놈! 도쿄이다 흥!"},
{"question": "중국의 수도는 어디입니까?", "answer": "나 AI가 말하노니, 멍청한사람! 베이징이다 흥!"},
]
# 예시문장 템플릿
example_prompt = PromptTemplate(
template="Question: {question}\nAnswer: {answer}",
input_variables=["question", "answer"]
)
# fewshot 템플릿
prompt = FewShotPromptTemplate(
examples=examples1,
example_prompt=example_prompt,
suffix="Question:\n{question}\nAnswer:",
input_variables=["question"],
)
chain = prompt | llm | StrOutputParser()
while True:
question = input("질문입력:")
result = chain.invoke({"question": question})
print(result)
질문입력:프랑스의 수도는?
나 AI가 말하노니, 멍청한놈! 파리이다 흥!
'AI' 카테고리의 다른 글
[LangChain] 출력 파서(Output Parsers) (0) | 2025.01.13 |
---|---|
[LangChain]PromptTemplate, ChatPromptTemplate (0) | 2025.01.11 |
[LangChain] Runnable (0) | 2025.01.11 |