jeremierostan's picture
Update app.py
507880e verified
raw
history blame
2.25 kB
import os
import openai
import gradio as gr
import time
# Set up password
username = os.getenv('username')
password = os.getenv('password')
# Set up OpenAI client
openai_api_key = os.getenv('openai_api_key')
client = openai.Client(api_key=openai.api_key)
# Set up assistant
assistant_id = os.getenv('assistant_id')
assistant = client.beta.assistants.retrieve(assistant_id)
thread = client.beta.threads.create()
# Get avatar link
avatar_link = os.getenv('avatar_link')
def chat_with_assistant(message, history):
# Add the user's message to the thread
client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content=message
)
# Run the assistant
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant_id
)
# Wait for the assistant's response
while True:
run_status = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
if run_status.status == 'completed':
# Retrieve the assistant's response
messages = client.beta.threads.messages.list(thread_id=thread.id)
assistant_response = messages.data[0].content[0].text.value
break
time.sleep(1)
return assistant_response
# Custom CSS for chat bubbles and colors
custom_css = """
.user-message { background-color: #DCF8C6; }
.assistant-message { background-color: #E2E2E2; }
"""
# Create the Gradio interface
with gr.Blocks(css=custom_css) as demo:
gr.Markdown("# **NewsWave Companion** 🌊🐬")
chatbot = gr.Chatbot(
[],
elem_id="chatbot",
bubble_full_width=False,
avatar_images=(None, avatar_link)
)
msg = gr.Textbox(
show_label=False,
placeholder="Enter text and press enter",
)
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
user_message = history[-1][0]
bot_message = chat_with_assistant(user_message, history)
history[-1][1] = bot_message
return history
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
demo.launch(auth=(username, password))