LangGraph嵌入编译子图节点触发KeyError: 'scheduler_assistant'求助
问题:LangGraph父图调用子图节点触发KeyError
使用LangGraph 0.6.7 + Python 3.12构建多智能体工作流并部署在FastAPI中,父图通过builder.add_node("scheduler_assistant", subgraph)嵌入已编译的scheduler_assistant子图,同时配置了进入节点和关联边。但在START阶段的路由逻辑返回"scheduler_assistant"委托控制权时,流式处理图事件出现如下错误:
KeyError: 'scheduler_assistant' During task with name '__start__' and id '...' During task with name 'scheduler_assistant' and id '...'
错误表明LangGraph内部路由未在编译后的图端点字典中找到scheduler_assistant节点。
最小结构示例
# 子图代码 subgraph = StateGraph(SharedState) # 定义子图节点和边 subgraph = subgraph.compile() # 父图代码 builder = StateGraph(SharedState) builder.add_node("scheduler_assistant", subgraph) builder.add_node("enter_scheduler_assistant", create_entry_node(...)) builder.add_edge("enter_scheduler_assistant", "scheduler_assistant") builder.add_conditional_edges( START, route_to_workflow, ["primary_assistant", "scheduler_assistant", "generate_query_or_respond"] ) graph = builder.compile()
解决方案
路由指向子图的进入节点而非子图本身
子图作为节点添加后,不能直接在路由中返回子图节点名,需要指向对应的进入节点。修改条件路由的目标列表和路由逻辑返回值:builder.add_conditional_edges( START, route_to_workflow, ["primary_assistant", "enter_scheduler_assistant", "generate_query_or_respond"] ) # 同时确保route_to_workflow函数在需要调度时返回"enter_scheduler_assistant"因为子图的执行需要通过你定义的进入节点
enter_scheduler_assistant来触发,直接路由到子图节点会绕过LangGraph的子图嵌入逻辑,导致找不到端点。检查子图编译后的端点配置
确认子图编译时是否正确设置了入口端点。如果子图没有显式指定入口,可在编译时添加:subgraph = subgraph.compile(entry_point="subgraph_start_node")不过在你的场景中,已经通过父图的进入节点关联子图,所以优先用第一种方案更稳妥,无需大规模重构。
验证父图编译后的节点映射
可以在父图编译后打印节点列表,确认scheduler_assistant是否存在:print(graph.nodes)如果存在但仍报错,检查路由逻辑返回的字符串是否和节点名完全一致(注意大小写、空格等拼写问题)。
内容的提问来源于stack exchange,提问作者Bennison J
相关产品推荐
相关产品推荐

