Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from typing import List, Dict, Any, Optional | |
| import uvicorn | |
| from src.agents.legal_agent import LegalAgent | |
| app = FastAPI( | |
| title="Agentic Defensor", | |
| description="An agentic RAG system for legal defense analysis", | |
| version="0.1.0" | |
| ) | |
| # Initialize the legal agent | |
| legal_agent = LegalAgent() | |
| class QueryRequest(BaseModel): | |
| """Request model for query endpoint.""" | |
| query: str | |
| top_k: Optional[int] = None | |
| class QueryResponse(BaseModel): | |
| """Response model for query endpoint.""" | |
| query: str | |
| answer: str | |
| model_used: str | |
| num_chunks_retrieved: int | |
| async def root(): | |
| """Root endpoint.""" | |
| return {"message": "Welcome to the Agentic Defensor API"} | |
| async def query(request: QueryRequest): | |
| """ | |
| Process a query using the legal agent. | |
| Args: | |
| request: Query request containing the query text and optional parameters | |
| Returns: | |
| Response containing the answer and metadata | |
| """ | |
| try: | |
| result = legal_agent.answer_query(request.query, request.top_k) | |
| return QueryResponse( | |
| query=result["query"], | |
| answer=result["answer"], | |
| model_used=result["model_used"], | |
| num_chunks_retrieved=len(result["retrieved_chunks"]) | |
| ) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=f"Error processing query: {str(e)}") | |
| # Run the server if this file is executed directly | |
| if __name__ == "__main__": | |
| uvicorn.run("src.api.app:app", host="0.0.0.0", port=8000, reload=True) |