import gradio as gr import requests import logging logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) # OpenRouter API Configuration API_KEY = "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" BASE_URL = "https://openrouter.ai/api/v1/chat/completions" MODEL = "arcee-ai/trinity-large-preview:free" def get_ai_response(user_message, history): """Get response from OpenRouter API""" try: headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Build messages from history messages = [{"role": "system", "content": "You are a helpful chatbot. Provide concise and helpful responses."}] # Add history - handle different formats safely if history: for item in history: if isinstance(item, (list, tuple)) and len(item) >= 2: messages.append({"role": "user", "content": item[0]}) if item[1]: # Only add if assistant response exists messages.append({"role": "assistant", "content": item[1]}) messages.append({"role": "user", "content": user_message}) payload = { "model": MODEL, "messages": messages, "temperature": 0.7, "max_tokens": 500 } response = requests.post(BASE_URL, headers=headers, json=payload, timeout=10) response.raise_for_status() data = response.json() if "choices" in data and len(data["choices"]) > 0: return data["choices"][0]["message"]["content"] else: return "I apologize, but I couldn't generate a response. Please try again." except Exception as e: logger.error(f"API Error: {str(e)}") return f"Error: {str(e)}" def chat(user_message, history): """Main chat function""" if not user_message.strip(): return "" # Get AI response bot_response = get_ai_response(user_message, history) return bot_response # Create the Gradio interface demo = gr.ChatInterface( chat, examples=["Hello"], title="SAK Informatics Chatbot By Namani Vamshi Krishna", description="Chat with an AI assistant", ) if __name__ == "__main__": demo.launch()