gpt-4o-mini / app.py
ozone-ai's picture
Rename main.py to app.py
d341ef2 verified
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()