alecdickinson's picture
Increase the likelihood of the user's contact information be correct.
32881c3
import streamlit as st
import pandas as pd
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
import openai
import json
import whisper
from audiorecorder import audiorecorder
# whisper
model = whisper.load_model('base')
data_transcription = []
def send_email(email, subject, body):
"""send the user an email with the answer"""
try:
if(subject == ''):
subject = 'GPT Email'
message = Mail(
# add the email connected to your sendgrid code here
from_email='daniel@judini.ai',
to_emails=email,
subject=subject,
html_content=body
)
st.write(message)
sg = SendGridAPIClient(st.secrets["SENDGRID_API_KEY"])
response = sg.send(message)
st.write(response.status_code)
st.write(response.body)
st.write(response.headers)
except Exception as e:
st.write(f"An error occurred: {str(e)}")
st.title('GPT Sends Emails')
st.write('Instructions:')
st.write('Paste your OpenAI API Key')
st.write("Click on the 'Start recording' button and allow the browser permission to use the microphone. Say a sentence requesting to send an email with a message. You must say the person's full email address. Then click the same button to stop recording.")
st.write("English example: Send an email to dan.avila7@gmail.com reminding him that he must study the OpenAI Functions API for tomorrow's exam")
st.write("Ejemplo en Español: Envía un email a dan.avila7@gmail.com recordando que debe estudiar la API de funciones de OpenAI para el examen de mañana")
result = False
user_secret = ''
user_input = False
message = False
audio = 0
button_run = False
user_secret = st.text_input(label = ":blue[OpenAI API key]",
value="",
placeholder = "Paste your openAI API key, sk-",
type = "password")
if user_secret:
audio = audiorecorder("Start recording", "Click to stop")
if len(audio) > 0:
# To play audio in frontend:
st.audio(audio.tobytes())
# To save audio to a file:
wav_file = open("audio.mp3", "wb")
wav_file.write(audio.tobytes())
# Whisper
output = model.transcribe("audio.mp3")
with st.spinner('Wait for it...'):
user_audio = output['text']
user_input = st.text_area("Please EDIT your text BEFORE you SEND)", user_audio)
button_run = st.button("Run")
if(button_run):
openai.api_key = user_secret
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0613",
messages=[
{"role": "user", "content": user_input}],
functions=[
{
"name": "send_email",
"description": "Sends an email to a person",
"parameters": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "A person to send the email",
},
"body": {"type": "string"},
"subject": {"type": "string"},
},
},
}
],
function_call="auto",
)
message = response["choices"][0]["message"]
st.write('GPT: ', message)
if message.get("function_call"):
function_name = message["function_call"]["name"]
st.write('function_name: ', function_name)
if(function_name == 'send_email'):
# Access the arguments
arguments = json.loads(message['function_call']['arguments'])
email_arg = arguments['email']
body_arg = arguments['body']
if(arguments['subject']):
arguments['subject'] = 'GPT Email'
subject_arg = arguments['subject']
# Step 3, call the function
function_response = send_email(
email_arg, subject_arg, body_arg
)
st.write('Function Send Email:')
st.write(function_response)
else:
st.warning('Paste your OpenAI API Key to continue')