from __future__ import annotations """地图研究阶段子图:对目的地执行高德地图POI搜索与天气查询,为路线评估准备数据。""" from langgraph.graph import ( END, START, StateGraph, ) from app.agents.map_agent import MapResearchAgent from app.agents.requirement_agent import ( RequirementAgent, ) from app.agents.resource_agent import ( ResourceSearchAgent, ) from app.graph.map_nodes import ( make_map_research_node, route_after_resources, ) from app.graph.nodes import ( clarification_node, error_node, make_parse_request_node, route_after_parse, ) from app.graph.resource_nodes import ( make_resource_search_node, ) from app.graph.state import TravelState from app.mcp_client import load_mcp_tools async def build_research_graph(): """构建需求、旅行资源和地图研究工作流。""" tool_bundle = await load_mcp_tools() requirement_agent = RequirementAgent() resource_agent = ResourceSearchAgent( tools=tool_bundle.travel_tools, ) map_agent = MapResearchAgent( tools=tool_bundle.amap_tools, ) builder = StateGraph(TravelState) builder.add_node( "parse_request", make_parse_request_node( requirement_agent ), ) builder.add_node( "clarify", clarification_node, ) builder.add_node( "error", error_node, ) builder.add_node( "search_resources", make_resource_search_node( resource_agent ), ) builder.add_node( "research_destination", make_map_research_node( map_agent ), ) builder.add_edge( START, "parse_request", ) builder.add_conditional_edges( "parse_request", route_after_parse, { "clarify": "clarify", "error": "error", "ready": "search_resources", }, ) builder.add_edge("clarify", END) builder.add_edge("error", END) builder.add_conditional_edges( "search_resources", route_after_resources, { "research_destination": ( "research_destination" ), "end": END, }, ) builder.add_edge( "research_destination", END, ) return builder.compile()