-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
43 lines (34 loc) · 1.52 KB
/
Copy pathapp.py
File metadata and controls
43 lines (34 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 os
import gradio as gr
load_dotenv(override=True)
MODEL_NAME = "gemini-2.5-flash"
GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/openai/"
port = int(os.getenv("GRADIO_SERVER_PORT", 7860))
server_name = os.getenv("GRADIO_SERVER_NAME", "0.0.0.0")
google_api_key = os.getenv("GOOGLE_API_KEY")
gemini = OpenAI(api_key=google_api_key, base_url=GEMINI_BASE_URL)
system = [{"role": "system", "content": TWIN_SYSTEM_PROMPT}]
def chat(message, history):
messages = system + history + [{"role": "user", "content": message}]
response = gemini.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 = gemini.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="Digital Twin",
description="Talk to my AI twin about my career",
chatbot=gr.Chatbot(show_label=False),
).launch(css=CSS, js=JS, theme=gr.themes.Base(), server_port=port, server_name=server_name)