trip.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. """旅行规划API路由"""
  2. from fastapi import APIRouter, HTTPException
  3. from ...models.schemas import (
  4. TripRequest,
  5. TripPlanResponse,
  6. ErrorResponse
  7. )
  8. from ...agents.trip_planner_agent import get_trip_planner_agent
  9. router = APIRouter(prefix="/trip", tags=["旅行规划"])
  10. @router.post(
  11. "/plan",
  12. response_model=TripPlanResponse,
  13. summary="生成旅行计划",
  14. description="根据用户输入的旅行需求,生成详细的旅行计划"
  15. )
  16. async def plan_trip(request: TripRequest):
  17. """
  18. 生成旅行计划
  19. Args:
  20. request: 旅行请求参数
  21. Returns:
  22. 旅行计划响应
  23. """
  24. try:
  25. print(f"\n{'='*60}")
  26. print(f"📥 收到旅行规划请求:")
  27. print(f" 城市: {request.city}")
  28. print(f" 日期: {request.start_date} - {request.end_date}")
  29. print(f" 天数: {request.travel_days}")
  30. print(f"{'='*60}\n")
  31. # 获取Agent实例
  32. print("🔄 获取多智能体系统实例...")
  33. agent = get_trip_planner_agent()
  34. # 生成旅行计划
  35. print("🚀 开始生成旅行计划...")
  36. trip_plan = agent.plan_trip(request)
  37. print("✅ 旅行计划生成成功,准备返回响应\n")
  38. return TripPlanResponse(
  39. success=True,
  40. message="旅行计划生成成功",
  41. data=trip_plan
  42. )
  43. except Exception as e:
  44. print(f"❌ 生成旅行计划失败: {str(e)}")
  45. import traceback
  46. traceback.print_exc()
  47. raise HTTPException(
  48. status_code=500,
  49. detail=f"生成旅行计划失败: {str(e)}"
  50. )
  51. @router.get(
  52. "/health",
  53. summary="健康检查",
  54. description="检查旅行规划服务是否正常"
  55. )
  56. async def health_check():
  57. """健康检查"""
  58. try:
  59. # 检查Agent是否可用
  60. agent = get_trip_planner_agent()
  61. return {
  62. "status": "healthy",
  63. "service": "trip-planner",
  64. "agent_name": agent.agent.name,
  65. "tools_count": len(agent.agent.list_tools())
  66. }
  67. except Exception as e:
  68. raise HTTPException(
  69. status_code=503,
  70. detail=f"服务不可用: {str(e)}"
  71. )