核心组件详解
边的路由逻辑
详解各类边的实现,包括条件边、动态路由及循环控制
📚 学习目标
学完这篇文章后,你将能够:
- 区分普通边与条件边
- 编写条件路由函数实现动态分支
- 使用映射对象解耦路由逻辑与节点名称
- 理解图中的循环结构及其在 Agent 中的应用
前置知识
在开始学习之前,建议先阅读:
你需要了解:
- JavaScript
switch语句或if-else逻辑 - 状态机基本概念
1️⃣ 边的类型
边连接节点,控制流向。
1. 普通边 (Normal Edge)
最简单的连接,A 做完B 做。
// 执行完 node_a 后,立即执行 node_b
graph.addEdge("node_a", "node_b");2. 条件边 (Conditional Edge)
根据上一节点的输出(即当前状态),决定下一节点。这是 Agent 自主决策的关键。
// 语法:addConditionalEdges(sourceNode, routingFunction, pathMap?)
graph.addConditionalEdges("check_node", routeLogic);3. 入口与出口
addEdge(START, "first_node"):定义起点。addEdge("last_node", END):定义终点。
2️⃣ 编写路由函数
路由函数接收当前状态,返回下一个节点的名称。
// 路由逻辑
const routeLogic = (state: typeof StateAnnotation.State) => {
if (state.isHappy) {
return "happy_path"; // 返回节点名称
} else {
return "sad_path";
}
};
// 注册
graph.addConditionalEdges("sentiment_analysis", routeLogic);使用 Path Map(推荐)
为了解耦代码,建议使用第三个参数 pathMap。这样路由函数返回逻辑名称(如 "continue"),而不是硬编码的节点名。
const shouldContinue = (state: State) => {
return state.messages.length > 10 ? "stop" : "continue";
};
graph.addConditionalEdges(
"model_node",
shouldContinue,
{
// 逻辑名称 : 实际节点名称
"continue": "model_node", // 循环!
"stop": END
}
);3️⃣ 常见路由模式
模式 1:基于工具调用的路由
这是 Tool Calling Agent 的核心模式。
function routeTools(state: typeof ToolStateAnnotation.State) {
const lastMessage = state.messages[state.messages.length - 1];
// 检查最后一条消息是否有工具调用请求
if (lastMessage?.tool_calls?.length) {
return "tools"; // 路由到工具执行节点
}
return END; // 否则结束
}模式 2:人机交互(HIL)路由
审批流常用模式。
function routeApproval(state: State) {
if (state.approvalStatus === "approved") {
return "deploy";
} else if (state.approvalStatus === "rejected") {
return "notify_rejection";
}
return "human_review"; // 默认等待
}4️⃣ 循环结构
LangGraph 原生支持循环(Graph 中的 Cycle),这在 Agent 中非常常见(例如:思考-行动-观察-思考...)。
[!WARNING] 递归限制:为了防止死循环,LangGraph 设置了默认的递归深度限制(通常是 25)。你可以通过配置修改它:
graph.compile().invoke(inputs, { recursionLimit: 50 })
💡 练习题
- 分析题:在不使用 Path Map 的情况下,如果我重命名了一个节点,需要修改哪些地方?使用 Path Map 有什么好处?
- 设计题:设计一个“多级客服路由”,先判断用户等级(VIP/普通),VIP 用户直接转人工,普通用户先经过关键词分类(退款/咨询),再分流到不同节点。用伪代码写出
addConditionalEdges的逻辑。
📚 参考资源
官方文档
✅ 总结
本章要点:
- 普通边构建线性流,条件边构建逻辑流。
- 路由函数是 Agent 的“大脑”决策层。
- Path Map 提供了更好的代码组织方式。
- 只有有了边,分散的节点才能协同工作,组成强大的 Agent。
下一步:所有组件都学完了!下一章《架构模式》我们将把它们组合起来,构建真正实用的 Agent 架构。
登录以继续阅读
解锁完整文档、代码示例及更多高级功能。