Spaces:
Build error
Build error
| import logging | |
| import gradio as gr | |
| from sql_generator import SQLGenerator | |
| from intent_classifier import IntentClassifier | |
| from rag_system import RAGSystem | |
| # Initialize logging | |
| logging.basicConfig( | |
| level=logging.INFO, # Set the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) | |
| format='%(asctime)s - %(levelname)s - %(message)s' # Format for the log messages | |
| ) | |
| class UnifiedSystem: | |
| def __init__(self): | |
| self.sql_generator = SQLGenerator() | |
| self.intent_classifier = IntentClassifier() | |
| self.rag_system = RAGSystem() | |
| def process_query(self, query): | |
| logging.info(f"Processing query: {query}") # Log the incoming query | |
| intent, confidence = self.intent_classifier.classify(query) | |
| logging.info(f"Classified intent: {intent} with confidence: {confidence:.2f}") | |
| if intent == "database_query": | |
| sql_query = self.sql_generator.generate_query(query) # Assuming this method is correct | |
| products = self.sql_generator.fetch_shopify_data("products") | |
| if products and 'products' in products: | |
| results = "\n".join([ | |
| f"Title: {p['title']}, Vendor: {p['vendor']}" | |
| for p in products['products'] | |
| ]) | |
| return f"Intent: Database Query (Confidence: {confidence:.2f})\n\n" \ | |
| f"SQL Query: {sql_query}\n\nResults:\n{results}" | |
| else: | |
| logging.warning("No results found or error fetching data from Shopify.") | |
| return "No results found or error fetching data from Shopify." | |
| elif intent == "product_description": | |
| rag_response = self.rag_system.process_query(query) | |
| return f"Intent: Product Description (Confidence: {confidence:.2f})\n\n" \ | |
| f"Response: {rag_response}" | |
| logging.error("Intent not recognized.") | |
| return "Intent not recognized." | |
| def create_interface(): | |
| system = UnifiedSystem() | |
| iface = gr.Interface( | |
| fn=system.process_query, | |
| inputs=gr.Textbox( | |
| label="Enter your query", | |
| placeholder="e.g., 'Show me all T-shirts' or 'Describe the product features'" | |
| ), | |
| outputs=gr.Textbox(label="Response"), | |
| title="Unified Query Processing System", | |
| description="Enter a natural language query to search products or get descriptions." | |
| ) | |
| return iface | |
| if __name__ == "__main__": | |
| iface = create_interface() | |
| iface.launch() | |