vichudo's picture
add first approach
b840b29
Raw
History Blame Contribute Delete
1.68 kB
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
@app.get("/")
async def root():
"""Root endpoint."""
return {"message": "Welcome to the Agentic Defensor API"}
@app.post("/query", response_model=QueryResponse)
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)