from dotenv import load_dotenv _ = load_dotenv() import os import openai from langchain_core.messages import AIMessage from langchain_core.prompts import PromptTemplate from langchain_core.output_parsers import JsonOutputParser class DaleAgent: def __init__(self, name="Dale"): self.name = name self.client = openai.OpenAI( api_key="LAAS", base_url="https://api-laas.wanted.co.kr/api/preset/", ) def get_prompt(self, query: str): prompt_template = """당신의 임무는 Dale Carnegie's book "How to Win Friends and Influence People"에서 사용자의 질문과 관련된 내용을 찾는 것입니다. 이 작업에 접근하는 방법은 다음과 같습니다: 1. 먼저 사용자의 질문을 주의 깊게 읽고 이해합니다: {USER_QUESTION} 2. 사용자의 질문에 따라 데일 카네기의 책에 나오는 어떤 원칙이나 개념이 관련성이 있을지 생각해 보세요. 다음과 같은 주제를 생각해 보세요: - 다른 사람에게 진정한 관심 보여주기 - 좋은 경청자 되기 - 다른 사람이 중요하다고 느끼도록 하기 - 비판과 불평 피하기 - 솔직하고 진심 어린 감사 표현하기 - 상대방의 관점에서 사물을 바라보기 - 다른 사람을 격려하고 그들의 잘못을 쉽게 고칠 수 있도록 만들기 - 칭찬과 정직한 감사를 사용하기 3. 카네기의 책에서 관련 원칙의 본질을 포착할 수 있는 키워드나 문구를 2~3개 작성해 보세요. 이 문장으로 카네기의 저서에서 관련된 내용을 찾을 수 있습니다. 4. 응답을 작성할 때는 다음 사항을 고려해 주세요: - 영어로 작성해 주세요. - 저자의 원문을 인용하거나 요약하여 사용해 주세요. - 가능한 한 간결하게 작성해 주세요. - 배열로 작성해 주세요. #Format: Return a JSON array. [ "The only way to get the best of an argument is to avoid it.", "If you want to gather honey, don't kick over the beehive.", "Criticism is futile because it puts a person on the defensive and usually makes them strive to justify themselves." ] """ prompt = PromptTemplate.from_template(prompt_template) return prompt.format(USER_QUESTION=query) def get_chat_completions(self, query: str): response = self.client.chat.completions.create( extra_headers={ "apiKey": os.environ.get("LAAS_API_KEY"), "project": os.environ.get("LAAS_PROJECT"), }, extra_body={ "hash": "d33f1c5fe1f4c091a88357b61f8638599b5556445454a87ef0a1a6d35846fe0d", }, model="gpt-4o", messages=[ { "role": "system", "content": self.get_prompt(query), } ], ) return AIMessage(content=response.choices[0].message.content) def get_sentence_completions(self, query: str): response = self.get_chat_completions(query) texts = JsonOutputParser().parse(text=response.content) filtered_texts = [text for text in texts if len(text) >= 10] return filtered_texts if __name__ == "__main__": query = "How can I make friends and influence people?" response = DaleAgent().get_sentence_completions(query) print(response)