| 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 |
| import os |
|
|
| load_dotenv(override=True) |
|
|
| openrouter_api_key = os.getenv('OPENROUTER_API_KEY') |
| OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1" |
| openrouter = OpenAI(api_key=openrouter_api_key, base_url=OPENROUTER_BASE_URL) |
| model_name= "poolside/laguna-xs-2.1:free" |
|
|
| |
| MODEL_NAME = model_name |
|
|
| |
|
|
| system = [{"role": "system", "content": TWIN_SYSTEM_PROMPT}] |
|
|
|
|
| def chat(message, history): |
| messages = system + history + [{"role": "user", "content": message}] |
| response = openrouter.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 = openrouter.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()) |
|
|