| |
|
|
| from pydantic import BaseModel |
| import openai |
| from environs import Env |
|
|
| |
| env = Env() |
| env.read_env("openai.env") |
|
|
| |
| openai.api_key = env.str("OPENAI_API_KEY") |
|
|
| |
| SYSTEM_PROMPT = env.str("SYSTEM_PROMPT", "generate 3 different friendly short conversation starter for a user to another unknown user.") |
| MODEL = env.str("MODEL", "gpt-3.5-turbo") |
| NUMBER_OF_MESSAGES_FOR_CONTEXT = min(env.int("NUMBER_OF_MESSAGES_FOR_CONTEXT", 4), 10) |
| AI_RESPONSE_TIMEOUT = env.int("AI_RESPONSE_TIMEOUT", 20) |
|
|
| class ConversationPayload(BaseModel): |
| fromusername: str |
| tousername: str |
| FromUserKavasQuestions: list |
| ToUserKavasQuestions: list |
| Chatmood: str |
|
|
| def create_conversation_starter_prompt(user_questions, chatmood): |
| formatted_info = " ".join([f"{qa['Question']} - {qa['Answer']}" for qa in user_questions if qa['Answer']]) |
| prompt = (f"Based on user profile info and a {chatmood} mood, " |
| f"generate 3 subtle and very short conversation starters. " |
| f"Explore various topics like travel, hobbies, movies, and not just culinary tastes. " |
| f"\nProfile Info: {formatted_info}") |
| return prompt |
|
|
| def generate_conversation_starters(prompt): |
| try: |
| response = openai.ChatCompletion.create( |
| model=MODEL, |
| messages=[{"role": "system", "content": prompt}], |
| temperature=0.7, |
| max_tokens=100, |
| n=1, |
| request_timeout=AI_RESPONSE_TIMEOUT |
| ) |
| return response.choices[0].message["content"] |
| except openai.error.OpenAIError as e: |
| raise Exception(f"OpenAI API error: {str(e)}") |
| except Exception as e: |
| raise Exception(f"Unexpected error: {str(e)}") |
|
|