from openai import OpenAI import os client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) def generate_scenario(gender): PROMPT = f"""Create a scenario where you're see a {gender} you're interested in. You haven't yet approached them yet but are interested. Keep it brief, around 20 words. For example: 'There's a cute {gender} in my boxing class. I approach her after a class.' or 'I see two {gender}s having coffee at the table next to mine.'.""" return llm(PROMPT) def suggest_next_line(scenario, history): PROMPT = f"""This is my scenario: {scenario} \n\n""" if len(history) == 0: PROMPT += "Suggest a line with which I can introduce myself or strike up a conversation." else: PROMPT += f"""This is the conversation so far: \n\n{format_history(history)} \n\nSuggest my next response. Provide the response and nothing else.""" return llm(PROMPT) def generate_response(scenario, history, personality, interested): PROMPT = f"""This is my scenario: {scenario}. Roleplay the conversation with me. Provide the response and nothing else. You're personality is {personality}. You are {'interested' if interested else 'not interested'} in me. The conversation so far: \n\n{format_history(history)} Only provide the response and nothing else. """ return llm(PROMPT) def transcribe_audio(audio_path): with open(audio_path, "rb") as audio_file: transcript = client.audio.transcriptions.create( model="whisper-1", file=audio_file ) return transcript.text def llm(prompt): response = client.completions.create( model="gpt-3.5-turbo-instruct", prompt=prompt, temperature=0.9, max_tokens=100, top_p=1, frequency_penalty=0.0, presence_penalty=0.6, ) return response.choices[0].text.strip() def format_history(history): return "\n\n".join([f"Me: {line[0]} \nThem: {line[1] if line[1] else ''}" for line in history])