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 load_prompt(path): with open(path) as f: lines = f.readlines() return "".join(lines) def chat(passage, max_tokens=256, temprature=0, debug=False): if debug: passage = """ A car or automobile is a motor vehicle with wheels. Most definitions of cars say that they run primarily on roads, seat one to eight people, have four wheels, and mainly transport people (rather than goods). """ prompt = load_prompt("summary_prompt.txt").replace("<>", passage) summary = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}], ) return summary["choices"][0]["message"]["content"].strip() # 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.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()