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