Spaces:
Sleeping
Sleeping
| """ | |
| Hugging Face Spaces version of the chatbot - Gradio only | |
| For API integration, use the original Flask app.py | |
| """ | |
| import gradio as gr | |
| import os | |
| import requests | |
| from vector_store import query_vector_store, init_vector_store | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| # Get API key from environment (HF Spaces secrets) | |
| DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") | |
| # Initialize vector store | |
| print("Initializing vector store...") | |
| init_vector_store() | |
| print("Vector store initialized!") | |
| def chat_with_eve(message, history): | |
| """Gradio chat function""" | |
| try: | |
| if not message.strip(): | |
| return "Please enter a message!" | |
| # Get context from vector store | |
| context = query_vector_store(message) | |
| headers = { | |
| "Authorization": f"Bearer {DEEPSEEK_API_KEY}", | |
| "Content-Type": "application/json", | |
| "HTTP-Referer": "https://huggingface.co/spaces/", | |
| "X-Title": "mAIseums ChatBot" | |
| } | |
| payload = { | |
| "model": "deepseek/deepseek-chat-v3-0324", | |
| "messages": [ | |
| { | |
| "role": "system", | |
| "content": f"You are Eve, a warm and knowledgeable museum assistant. You help visitors learn about art, history, culture, and museum collections. Use this context to provide helpful, engaging responses: {context}" | |
| }, | |
| {"role": "user", "content": message} | |
| ] | |
| } | |
| response = requests.post( | |
| "https://openrouter.ai/api/v1/chat/completions", | |
| headers=headers, | |
| json=payload, | |
| timeout=30 | |
| ) | |
| if response.status_code == 200: | |
| data = response.json() | |
| if "choices" in data and len(data["choices"]) > 0: | |
| return data["choices"][0]["message"]["content"] | |
| else: | |
| return "I'm sorry, I didn't get a proper response. Please try again!" | |
| else: | |
| return f"I'm having trouble connecting right now (Error: {response.status_code}). Please try again in a moment!" | |
| except requests.exceptions.Timeout: | |
| return "The request timed out. Please try again with a shorter message." | |
| except requests.exceptions.RequestException as e: | |
| logging.error(f"Request error: {str(e)}") | |
| return "I'm having connection issues. Please try again in a moment." | |
| except Exception as e: | |
| logging.error(f"Chat error: {str(e)}") | |
| return "Something went wrong. Please try again or rephrase your question." | |
| # Create the Gradio interface | |
| demo = gr.ChatInterface( | |
| fn=chat_with_eve, | |
| title="🏛️ mAIseums - Meet Eve, Your Museum Assistant", | |
| description=""" | |
| Welcome to mAIseums! I'm Eve, your virtual museum guide. Ask me anything about: | |
| • Museum collections and exhibits | |
| • Art history and cultural heritage | |
| • Historical artifacts and their stories | |
| • Visiting information and museum tips | |
| I'm here to make your museum experience educational and enjoyable! ✨ | |
| """, | |
| examples=[ | |
| "Tell me about the museum's art collection", | |
| "What can you tell me about ancient civilizations?", | |
| "I'm interested in Renaissance paintings", | |
| "What exhibitions do you currently have?", | |
| "Can you explain the history behind this artifact?", | |
| "What are your visiting hours and ticket prices?" | |
| ] | |
| ) | |
| if __name__ == "__main__": | |
| # Launch the Gradio app | |
| demo.launch() | |