Spaces:
No application file
No application file
| import time | |
| from typing import List | |
| from src.config.settings import settings | |
| from src.agenticRAG.models.state import AgentState | |
| from src.agenticRAG.models.schemas import QueryRequest, QueryResponse | |
| from src.agenticRAG.graph.builder import GraphBuilder | |
| from loguru import logger | |
| class AgenticRAGSystem: | |
| """Main AgenticRAG system""" | |
| def __init__(self): | |
| # Validate settings | |
| settings.validate() | |
| # Create graph | |
| self.app = GraphBuilder.create_graph() | |
| logger.info("AgenticRAG system initialized successfully") | |
| def process_query(self, query: str) -> QueryResponse: | |
| """Process a single query""" | |
| start_time = time.time() | |
| try: | |
| # Initialize state | |
| initial_state = AgentState(user_query=query) | |
| # Run the graph | |
| final_state = self.app.invoke(initial_state) | |
| # Calculate processing time | |
| processing_time = time.time() - start_time | |
| # Create response | |
| response = QueryResponse( | |
| query=final_state.user_query, | |
| upgraded_query=final_state.upgraded_query, | |
| route_taken=final_state.route_decision, | |
| response=final_state.final_response, | |
| metadata=final_state.metadata, | |
| processing_time=processing_time | |
| ) | |
| logger.info(f"Query processed successfully in {processing_time:.2f}s") | |
| return response | |
| except Exception as e: | |
| logger.error(f"Error processing query: {e}") | |
| raise | |
| def process_batch(self, queries: List[str]) -> List[QueryResponse]: | |
| """Process multiple queries""" | |
| responses = [] | |
| for query in queries: | |
| try: | |
| response = self.process_query(query) | |
| responses.append(response) | |
| except Exception as e: | |
| logger.error(f"Error processing query '{query}': {e}") | |
| return responses | |
| def agenticRAGResponse(query: str) -> QueryResponse: | |
| """Function to get response for a single query""" | |
| system = AgenticRAGSystem() | |
| return system.process_query(query) | |
| def main(): | |
| """Main function""" | |
| # Initialize system | |
| system = AgenticRAGSystem() | |
| # Test queries | |
| test_queries = [ | |
| "What is machine learning?", | |
| "Latest news about AI", | |
| "Write a poem about spring" | |
| ] | |
| # Process queries | |
| for query in test_queries: | |
| print(f"\n{'='*50}") | |
| print(f"Query: {query}") | |
| print(f"{'='*50}") | |
| try: | |
| response = system.process_query(query) | |
| print(f"Original Query: {response.query}") | |
| print(f"Upgraded Query: {response.upgraded_query}") | |
| print(f"Route Taken: {response.route_taken}") | |
| print(f"Response: {response.response}") | |
| print(f"Processing Time: {response.processing_time:.2f}s") | |
| print(f"Metadata: {response.metadata}") | |
| except Exception as e: | |
| print(f"Error: {e}") | |
| if __name__ == "__main__": | |
| main() |