| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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")
|