■ PromptTemplate 클래스의 from_template 정적 메소드를 사용해 PromptTemplate 객체를 만드는 방법을 보여준다.
※ 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 |
from dotenv import load_dotenv from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser load_dotenv() templateString = """ 당신은 영어를 가르치는 10년차 영어 선생님입니다. 상황에 [FORMAT]에 영어 회화를 작성해 주세요. 상황: {question} FORMAT: - 영어 회화 : - 한글 해석 : """ promptTemplate = PromptTemplate.from_template(templateString) chatOpenAI = ChatOpenAI( model_name = "gpt-4o", # 모델명 max_tokens = 2048, # 최대 토큰 수 temperature = 0.7, # 창의성 (0.0 ~ 2.0) ) strOutputParser = StrOutputParser() runnableSequence = promptTemplate | chatOpenAI | strOutputParser responseString = runnableSequence.invoke({"question" : "저는 식당에 가서 음식을 주문하고 싶습니다."}) print(responseString) """ - 영어 회화: - Waiter: Good evening! Welcome to our restaurant. How many people are in your party? - You: Good evening! It's just me tonight. - Waiter: Great! Please follow me to your table. Here is the menu. Can I get you something to drink to start? - You: Yes, I'd like a glass of water and a cup of coffee, please. - Waiter: Certainly. I'll be right back with your drinks. Do you need a few minutes to decide on your order? - You: Yes, please. I need a little more time to look over the menu. - Waiter: No problem. Take your time. I'll come back shortly. (After a few minutes) - Waiter: Have you decided what you would like to order? - You: Yes, I'd like to start with the Caesar salad, and for the main course, I'll have the grilled salmon. - Waiter: Excellent choice! Would you like any side dishes with your main course? - You: Yes, I'll have the steamed vegetables, please. - Waiter: Perfect. Anything else? - You: No, that's all for now. Thank you. - Waiter: You're welcome. Your order will be ready shortly. - 한글 해석: - 웨이터: 안녕하세요! 저희 식당에 오신 것을 환영합니다. 몇 분이세요? - 당신: 안녕하세요! 오늘은 저 혼자입니다. - 웨이터: 알겠습니다! 저를 따라오세요. 여기 메뉴판입니다. 먼저 음료는 무엇으로 드릴까요? - 당신: 네, 물 한 잔과 커피 한 잔 주세요. - 웨이터: 물론이죠. 음료는 곧 가져다 드리겠습니다. 주문을 결정하는 데 몇 분 더 필요하신가요? - 당신: 네, 메뉴를 좀 더 보고 싶어요. - 웨이터: 알겠습니다. 천천히 보세요. 잠시 후에 다시 오겠습니다. (몇 분 후) - 웨이터: 주문을 결정하셨나요? - 당신: 네, 우선 시저 샐러드를 주세요. 메인 코스는 구운 연어로 하겠습니다. - 웨이터: 좋은 선택이십니다! 메인 코스와 함께 곁들임 요리가 필요하신가요? - 당신: 네, 찐 야채를 주세요. - 웨이터: 알겠습니다. 더 필요한 것은 없으세요? - 당신: 네, 지금은 이걸로 충분합니다. 감사합니다. - 웨이터: 네, 감사합니다. 주문하신 음식은 곧 준비될 것입니다. """ |
▶ 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 |
annotated-types==0.7.0 anyio==4.6.0 certifi==2024.8.30 charset-normalizer==3.3.2 distro==1.9.0 exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.2 idna==3.10 jiter==0.5.0 jsonpatch==1.33 jsonpointer==3.0.0 langchain-core==0.3.5 langchain-openai==0.2.0 langsmith==0.1.125 openai==1.47.0 orjson==3.10.7 packaging==24.1 pydantic==2.9.2 pydantic_core==2.23.4 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.9.11 requests==2.32.3 sniffio==1.3.1 tenacity==8.5.0 tiktoken==0.7.0 tqdm==4.66.5 typing_extensions==4.12.2 urllib3==2.2.3 |
※ pip install python-dotenv langchain-openai 명령을 실행했다.