import os import gradio as gr from dotenv import load_dotenv import openai from utils import serialize from utils import compress from description import DESCRIPTION load_dotenv() # configuring openai package OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") openai.api_key = OPENAI_API_KEY def chat(message, history): """ Sends a request to the OpenAi api based on the user input and the history """ messages = serialize(history) messages.append({"role": "user", "content": message}) completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, ) return completion["choices"][0]["message"]["content"].strip() def transcribe(audio_file): audio_file = open(audio_file, "rb") transcription = openai.Audio.transcribe("whisper-1", audio_file, language="en") transcription = transcription["text"] return transcription def predict(input, history=[]): compress(input) transcription = transcribe(input) answer = chat(transcription, history) history.append((transcription, answer)) response = history return response, history with gr.Blocks() as demo: gr.Markdown(DESCRIPTION) chatbot = gr.Chatbot() state = gr.State([]) with gr.Row(): audio_file = gr.Audio(label="Audio", source="microphone", type="filepath") audio_file.change(predict, [audio_file, state], [chatbot, state]) demo.launch()