■ FewShotPromptTemplate 클래스의 format 메소드를 사용하는 방법을 보여준다.
※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다.
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
from dotenv import load_dotenv from langchain_core.prompts import PromptTemplate from langchain_core.prompts.few_shot import FewShotPromptTemplate from langchain_openai import ChatOpenAI load_dotenv() exampleDictionaryList = [ { "question" : "스티브 잡스와 아인슈타인 중 누가 더 오래 살았습니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 스티브 잡스는 몇 살에 사망했습니까? 중간 답변 : 스티브 잡스는 56세에 사망했습니다. 추가 질문 : 아인슈타인은 몇 살에 사망했습니까? 중간 답변 : 아인슈타인은 76세에 사망했습니다. 최종 답변 : 아인슈타인 """, }, { "question" : "네이버의 창립자는 언제 태어났습니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 네이버의 창립자는 누구입니까? 중간 답변 : 네이버는 이해진에 의해 창립되었습니다. 추가 질문 : 이해진은 언제 태어났습니까? 중간 답변 : 이해진은 1967년 6월 22일에 태어났습니다. 최종 답변 : 1967년 6월 22일 """, }, { "question" : "율곡 이이의 어머니가 태어난 해의 통치하던 왕은 누구입니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 율곡 이이의 어머니는 누구입니까? 중간 답변 : 율곡 이이의 어머니는 신사임당입니다. 추가 질문 : 신사임당은 언제 태어났습니까? 중간 답변 : 신사임당은 1504년에 태어났습니다. 추가 질문 : 1504년에 조선을 통치한 왕은 누구입니까? 중간 답변 : 1504년에 조선을 통치한 왕은 연산군입니다. 최종 답변 : 연산군 """, }, { "question" : "올드보이와 기생충의 감독이 같은 나라 출신입니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 올드보이의 감독은 누구입니까? 중간 답변 : 올드보이의 감독은 박찬욱입니다. 추가 질문 : 박찬욱은 어느 나라 출신입니까? 중간 답변 : 박찬욱은 대한민국 출신입니다. 추가 질문 : 기생충의 감독은 누구입니까? 중간 답변 : 기생충의 감독은 봉준호입니다. 추가 질문 : 봉준호는 어느 나라 출신입니까? 중간 답변 : 봉준호는 대한민국 출신입니다. 최종 답변 : 예 """, }, ] promptTemplate = PromptTemplate.from_template("Question :\n{question}\nAnswer :\n{answer}") fewShotPromptTemplate = FewShotPromptTemplate( examples = exampleDictionaryList, example_prompt = promptTemplate, suffix = "Question :\n{question}\nAnswer :", input_variables = ["question"] ) fewShotPromptString = fewShotPromptTemplate.format(question = "Google이 창립된 연도에 Bill Gates의 나이는 몇 살인가요?") chatOpenAI = ChatOpenAI(model = "gpt-4o-mini") responseAIMessage = chatOpenAI.invoke(fewShotPromptString) print(responseAIMessage.content) """ 이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : Google은 몇 년에 창립되었습니까? 중간 답변 : Google은 1998년에 창립되었습니다. 추가 질문 : Bill Gates는 몇 년에 태어났습니까? 중간 답변 : Bill Gates는 1955년에 태어났습니다. 추가 질문 : 1998년에는 Bill Gates가 몇 살이었습니까? 중간 답변 : 1998년에는 Bill Gates가 43세였습니다. 최종 답변 : 43세 """ |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
annotated-types==0.7.0 anyio==4.8.0 certifi==2024.12.14 charset-normalizer==3.4.1 distro==1.9.0 exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.7 httpx==0.28.1 idna==3.10 jiter==0.8.2 jsonpatch==1.33 jsonpointer==3.0.0 langchain-core==0.3.29 langchain-openai==0.2.14 langsmith==0.2.10 openai==1.59.5 orjson==3.10.14 packaging==24.2 pydantic==2.10.4 pydantic_core==2.27.2 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.11.6 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 tenacity==9.0.0 tiktoken==0.8.0 tqdm==4.67.1 typing_extensions==4.12.2 urllib3==2.3.0 |
※ pip install python-dotenv langchain-openai 명령을 실행했다.