travel_builder.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from __future__ import annotations
  2. """资源查询阶段子图:在需求解析后调用航班/酒店MCP工具查询外部资源。"""
  3. from langgraph.graph import (
  4. END,
  5. START,
  6. StateGraph,
  7. )
  8. from app.agents.requirement_agent import (
  9. RequirementAgent,
  10. )
  11. from app.agents.resource_agent import (
  12. ResourceSearchAgent,
  13. )
  14. from app.graph.nodes import (
  15. clarification_node,
  16. error_node,
  17. make_parse_request_node,
  18. route_after_parse,
  19. )
  20. from app.graph.resource_nodes import (
  21. make_resource_search_node,
  22. )
  23. from app.graph.state import TravelState
  24. from app.mcp_client import load_mcp_tools
  25. async def build_resource_graph():
  26. """构建需求解析与资源查询工作流。"""
  27. tool_bundle = await load_mcp_tools()
  28. requirement_agent = RequirementAgent()
  29. resource_agent = ResourceSearchAgent(
  30. tools=tool_bundle.travel_tools,
  31. )
  32. builder = StateGraph(TravelState)
  33. builder.add_node(
  34. "parse_request",
  35. make_parse_request_node(
  36. requirement_agent
  37. ),
  38. )
  39. builder.add_node(
  40. "clarify",
  41. clarification_node,
  42. )
  43. builder.add_node(
  44. "error",
  45. error_node,
  46. )
  47. builder.add_node(
  48. "search_resources",
  49. make_resource_search_node(
  50. resource_agent
  51. ),
  52. )
  53. builder.add_edge(
  54. START,
  55. "parse_request",
  56. )
  57. builder.add_conditional_edges(
  58. "parse_request",
  59. route_after_parse,
  60. {
  61. "clarify": "clarify",
  62. "error": "error",
  63. "ready": "search_resources",
  64. },
  65. )
  66. builder.add_edge(
  67. "clarify",
  68. END,
  69. )
  70. builder.add_edge(
  71. "error",
  72. END,
  73. )
  74. builder.add_edge(
  75. "search_resources",
  76. END,
  77. )
  78. return builder.compile()