| 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]) | |