from __future__ import annotations """资源查询阶段子图:在需求解析后调用航班/酒店MCP工具查询外部资源。""" from langgraph.graph import ( END, START, StateGraph, ) from app.agents.requirement_agent import ( RequirementAgent, ) from app.agents.resource_agent import ( ResourceSearchAgent, ) 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_resource_graph(): """构建需求解析与资源查询工作流。""" tool_bundle = await load_mcp_tools() requirement_agent = RequirementAgent() resource_agent = ResourceSearchAgent( tools=tool_bundle.travel_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_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_edge( "search_resources", END, ) return builder.compile()