Spaces:
Build error
Build error
import os | |
import time | |
import openai | |
from dotenv import load_dotenv | |
load_dotenv() | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
import gradio as gr | |
messages = [] | |
def add_user_text(chat_history, user_text): | |
print('user_text_from_typing: ', user_text) | |
global messages | |
messages += [{"role":'user', 'content': user_text}] | |
chat_history = chat_history + [(user_text, None)] | |
return chat_history, gr.update(value="", interactive=False) | |
def bot_respond(chat_history, openai_gpt_key): | |
global messages | |
if openai_gpt_key is not "": | |
openai.api_key = openai_gpt_key | |
bot_response = openai.ChatCompletion.create( | |
model = 'gpt-3.5-turbo', | |
messages = messages, | |
) | |
bot_text = bot_response["choices"][0]["message"]["content"] | |
print("bot_text: ",bot_text) | |
messages = messages + [{"role":'assistant', 'content': bot_text}] | |
print(chat_history) | |
chat_history[-1][1] = "" | |
for character in bot_text: | |
chat_history[-1][1] += character | |
time.sleep(0.02) | |
yield chat_history | |
with gr.Blocks() as demo: | |
# radio = gr.Radio( | |
# value='gpt-3.5-turbo', | |
# choices=['gpt-3.5-turbo','gpt-4'], | |
# label='Model Options') | |
openai_gpt_key = gr.Textbox(label="OpenAI GPT API Key", value="", placeholder="sk..", info = "If Error raised, you have to provide your own GPT keys for this app to function properly",) | |
clear_btn = gr.Button("Clear for Restart") | |
chat_history = gr.Chatbot([], elem_id="chat_history").style(height=500) | |
with gr.Box(): | |
user_text = gr.Textbox( | |
show_label=False, | |
placeholder="Enter text and press enter", | |
).style(container=False) | |
user_text.submit( | |
add_user_text, [chat_history, user_text], [chat_history, user_text], queue=False).then( | |
bot_respond, [chat_history, openai_gpt_key], chat_history).then( | |
lambda: gr.update(interactive=True), None, [user_text], queue=False) | |
clear_btn.click(lambda: None, None, chat_history, queue=False) | |
if __name__ == "__main__": | |
demo.queue() | |
demo.launch() | |