from fastapi import APIRouter from app.models.recommend import RecommendRequest, RecommendResponse, RecommendItem from app.graphs.recommend_graph import RecommendAgent import logging logger = logging.getLogger(__name__) router = APIRouter(prefix="/api/v1", tags=["recommend"]) _agent: RecommendAgent = None def get_agent() -> RecommendAgent: global _agent if _agent is None: _agent = RecommendAgent() return _agent @router.post("/recommend", response_model=RecommendResponse) async def recommend(req: RecommendRequest): """营养推荐: Agent 搜索+LLM 解释""" try: agent = get_agent() result = await agent.run(query=req.query, tags=req.tags, limit=req.limit) items_data = result.get("items", []) items = [] for item in items_data: items.append(RecommendItem( type=item.get("type", "product"), id=item.get("id", 0), name=item.get("name", ""), description=item.get("description", ""), reason=item.get("reason", ""), )) return RecommendResponse(items=items, source="agent") except Exception as e: logger.error("RecommendAgent 调用失败: %s", e, exc_info=True) return RecommendResponse(items=[], source="error")