Spaces:
Sleeping
Sleeping
| from openai import OpenAI | |
| from context import TWIN_SYSTEM_PROMPT | |
| from tools import tools, handle_tool_calls | |
| from styles import CSS, JS, EXAMPLES | |
| from dotenv import load_dotenv | |
| import gradio as gr | |
| load_dotenv(override=True) | |
| MODEL_NAME = "gpt-5.4-mini" | |
| openai = OpenAI() | |
| system = [{"role": "system", "content": TWIN_SYSTEM_PROMPT}] | |
| def chat(message, history): | |
| messages = system + history + [{"role": "user", "content": message}] | |
| response = openai.chat.completions.create(model=MODEL_NAME, messages=messages, tools=tools) | |
| while response.choices[0].finish_reason == "tool_calls": | |
| message = response.choices[0].message | |
| tool_calls = message.tool_calls | |
| results = handle_tool_calls(tool_calls) | |
| messages.append(message) | |
| messages.extend(results) | |
| response = openai.chat.completions.create(model=MODEL_NAME, messages=messages, tools=tools) | |
| return response.choices[0].message.content | |
| if __name__ == "__main__": | |
| gr.ChatInterface( | |
| chat, | |
| examples=EXAMPLES, | |
| title="Naim's Digital Twin", | |
| description="Talk to Naim's AI digital twin about his career", | |
| chatbot=gr.Chatbot(show_label=False), | |
| ).launch(css=CSS, js=JS, theme=gr.themes.Base()) |