用途
本技能聚焦 LangGraph 中的条件路由(Conditional Routing),用于根据工作流状态动态决定下一步执行哪个节点。适用于实现动态路由、分支工作流、重试循环以及基于语义相似度的意图路由等场景。
主要能力
基础条件边
通过 add_conditional_edges 将路由函数与节点连接,路由函数返回字符串决定跳转目标。示例中根据 quality_score 与 retry_count 决定发布、重试或转人工审核。
质量门控模式
在质量检查节点后路由:质量通过则继续压缩结果,未通过且重试次数小于 2 则回到 supervisor 重试,否则返回 END 输出部分结果。
重试循环模式
在 LLM 调用节点中捕获异常并累加 retry_count,路由函数根据是否有输出及重试次数决定成功、重试(循环回本节点)或失败转错误处理。
路由模式分类
- 顺序:A → B → C(简单边)
- 分支:A → (B 或 C)(条件边)
- 循环:A → B → A(重试逻辑)
- 汇聚:(A 或 B) → C(多输入)
- 菱形:A → (B, C) → D(并行后合并)
基于状态的路由器
根据多个状态条件依次判断:有错误转错误处理、未验证转验证器、置信度低于 0.5 转增强、否则最终化。
Command 与条件边的选择
- 纯路由、不更新状态时使用条件边。
- 需要同时更新状态并路由时使用
Command,通过update更新状态、goto指定目标,无需再添加条件边。
语义路由实现
使用 SentenceTransformer 预计算各路由的嵌入向量,对查询编码后计算余弦相似度,返回相似度最高的路由;可设置阈值,低于阈值时回退到 general。
使用方式
技能提供可直接参考的 Python 代码片段,包括路由函数定义、add_conditional_edges 的显式边映射、Command 用法以及语义路由的完整实现。开发者可将其作为模板复制到自己的 LangGraph 工作流中。
关键决策建议
- 最大重试次数:LLM 调用建议 2-3 次。
- 回退:始终保留 END 回退。
- 路由函数:保持纯净,无副作用。
- 边映射:显式映射以提升清晰度。
- Command 与条件边:更新状态并路由时用 Command。
- 语义路由:预计算嵌入,使用余弦相似度。
常见错误
- 没有 END 回退导致工作流挂起。
- 无限循环(未设最大重试)。
- 路由函数含副作用,难以调试。
- 缺少边映射导致运行时错误。
适用场景
需要根据状态动态分支、实现重试与质量门控、按语义意图分发到不同处理节点的 LangGraph 工作流开发。
限制
资料未提供安装命令、依赖版本、性能数据或收费信息。评估测试用例见 references/evaluations.md(资料未展开具体内容)。