Spaces:
Running
Running
import gradio as gr | |
import openai | |
import os | |
import json | |
openai.api_key = os.environ["OPENAI_API_KEY"] | |
openai.base_url = "https://api.ozone-ai.com/v1/" | |
log_file = "gpt4_chat_logs.jsonl" | |
def log_message(messages): | |
with open(log_file, "a") as f: | |
json.dump(messages, f) | |
f.write("\n") | |
def respond(message, chat_history): | |
messages = [{"role": "system", "content": "You are a helpful assistant."}] | |
for user_msg, bot_msg in chat_history: | |
messages.append({"role": "user", "content": user_msg}) | |
messages.append({"role": "assistant", "content": bot_msg}) | |
messages.append({"role": "user", "content": message}) | |
bot_message = "" | |
try: | |
chat_history.append((message, "")) | |
for response in openai.chat.completions.create( | |
model="gpt-4o-mini", | |
messages=messages, | |
max_tokens=5000, | |
temperature=0.7, | |
top_p=1, | |
frequency_penalty=0, | |
presence_penalty=0, | |
stream=True | |
): | |
bot_message += (response.choices[0].delta.content or "") | |
chat_history[-1] = (message, bot_message) | |
yield "", chat_history | |
except Exception as e: | |
print(f"Error during API call: {e}") | |
bot_message = "Sorry, I encountered an error. Please try again later." | |
if chat_history: | |
chat_history[-1] = (message, bot_message) | |
else: | |
chat_history.append((message, bot_message)) | |
log_messages = [{"role": "system", "content": "You are a helpful assistant."}] | |
for user_msg, bot_msg in chat_history: | |
log_messages.append({"role": "user", "content": user_msg}) | |
log_messages.append({"role": "assistant", "content": bot_msg}) | |
log_message(log_messages) | |
return "", chat_history | |
with gr.Blocks() as demo: | |
gr.Markdown("") | |
chatbot = gr.Chatbot() | |
msg = gr.Textbox() | |
clear = gr.Button("Clear") | |
def clear_chat(): | |
return None | |
msg.submit(respond, [msg, chatbot], [msg, chatbot]) | |
clear.click(clear_chat, None, chatbot, queue=False) | |
demo.launch() |