innate_portrait.py 875 B

123456789101112131415161718192021222324252627282930313233
  1. from fastapi import APIRouter
  2. from pydantic import BaseModel
  3. from typing import Any, Dict, Optional
  4. from app.graphs.innate_portrait_graph import InnatePortraitAgent
  5. import logging
  6. logger = logging.getLogger(__name__)
  7. router = APIRouter(prefix="/api/v1", tags=["innate"])
  8. _agent: InnatePortraitAgent = None
  9. class InnateReadingRequest(BaseModel):
  10. portrait: Dict[str, Any]
  11. class InnateReadingResponse(BaseModel):
  12. reading: str
  13. generated_at: Optional[str] = None
  14. def get_agent() -> InnatePortraitAgent:
  15. global _agent
  16. if _agent is None:
  17. _agent = InnatePortraitAgent()
  18. return _agent
  19. @router.post("/innate/reading", response_model=InnateReadingResponse)
  20. async def innate_reading(req: InnateReadingRequest):
  21. agent = get_agent()
  22. result = await agent.run(req.portrait)
  23. return InnateReadingResponse(reading=result.get("reading", ""))