import gradio as gr import requests MODEL = "mistralai/mixtral-8x7b-instruct" API_URL = "https://openrouter.ai/api/v1/chat/completions" def chat_with_openrouter(api_key, message, history): if not api_key: return "Please enter your OpenRouter API key." headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } messages = [] for user_msg, bot_msg in history: messages.append({"role": "user", "content": user_msg}) messages.append({"role": "assistant", "content": bot_msg}) messages.append({"role": "user", "content": message}) data = { "model": MODEL, "messages": messages } response = requests.post(API_URL, headers=headers, json=data) if response.status_code == 200: reply = response.json()["choices"][0]["message"]["content"] return reply else: return f"Error: {response.status_code} - {response.text}" def respond(api_key, message, chat_history): bot_message = chat_with_openrouter(api_key, message, chat_history) chat_history.append((message, bot_message)) return "", chat_history with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown( """ # 🤖 OpenRouter AI Chatbot Enter your [OpenRouter API key](https://openrouter.ai/keys) to start chatting! """ ) api_key_box = gr.Textbox( placeholder="Paste your OpenRouter API key here", label="OpenRouter API Key", type="password" ) chatbot = gr.Chatbot([], label="OpenRouter Chatbot", height=500) with gr.Row(): msg = gr.Textbox( placeholder="Type your message and press Enter...", show_label=False, lines=1, max_lines=3, autofocus=True ) clear = gr.Button("🧹 Clear", variant="secondary") msg.submit(respond, [api_key_box, msg, chatbot], [msg, chatbot]) clear.click(lambda: [], None, chatbot, queue=False) demo.launch()