路由(Routing) | Agentic Design Patterns | 智能体设计模式

内容纲要

一、核心定义

路由(Routing):智能体系统根据环境状态、用户输入或执行结果等情境信息,从多个可选方案中动态选择最合适的处理路径的机制。

可视化示意图

路由模式

图:路由模式 - 利用大语言模型作为路由器,根据用户输入分发到不同处理路径

关键机制

用户输入 → 意图识别/分类 → 路由决策 → 分发到专业处理单元 → 执行结果

典型路由流程示例(客服场景):

用户查询 → 
  ├─ 「查订单」→ 订单查询工具链
  ├─ 「问产品」→ 产品目录检索智能体
  ├─ 「技术支持」→ 故障排除或转人工
  └─ 「意图不明」→ 澄清子智能体

二、为什么需要路由?

线性流程的问题 路由机制的优势
单一流程无法应对多样化输入 根据场景选择最优处理路径
所有请求用同一套逻辑处理 不同专业模块处理各自擅长的任务
系统僵化,缺乏灵活性 动态适应,上下文感知
难以扩展新功能 添加新路由即可扩展能力

核心思想:分类派发,各司其职,动态决策。


三、典型应用场景

1. 人机交互系统

用户查询 → 意图分析 → 路由决策 → 专业模块响应

实例:虚拟助手识别用户是要「查信息」还是「下订单」,分别调用检索工具或订单系统。
价值:超越线性对话,实现上下文相关响应。

2. 数据处理流水线

数据输入 → 格式/内容分类 → 路由到对应处理流程

实例:邮件系统将「销售线索」「技术问题」「紧急事项」自动分发到不同部门。
价值:自动分类分发,提高处理效率。

3. 多智能体协作

任务输入 → 高层调度器 → 分派给最合适的专业智能体

实例:AI 编码助手识别编程语言和意图(调试/解释/翻译),分派给对应工具。
价值:充分发挥各专业智能体优势。


四、四种路由实现方法

方法 原理 优势 劣势 适用场景
大模型路由 提示词引导LLM输出分类标识 灵活,可处理复杂语境 速度慢,成本高 需要理解语义的场景
向量路由 计算输入与路由选项的向量相似度 语义理解强 需要向量化预处理 语义相似度判断
规则路由 基于关键词/模式的if-else逻辑 快速,确定性强 灵活性低 规则明确的场景
机器学习路由 训练专门的分类器模型 速度快,准确度高 需要标注数据训练 有历史数据的场景

选型建议

  • 复杂语境、新颖输入 → 大模型路由
  • 语义相似判断 → 向量路由
  • 规则明确、追求速度 → 规则路由
  • 有大量历史数据 → 机器学习路由

五、设计原则

何时使用路由?

黄金法则:当智能体需要在多个不同工作流/工具/子智能体之间做出选择时。

典型信号

  1. 系统需要处理多种不同类型的任务
  2. 不同任务需要不同的工具或专业知识
  3. 需要根据上下文动态调整处理逻辑
  4. 需要将请求分类后分发到不同处理单元

实现要点

  1. 清晰定义路由选项:每个路由目标的职责明确且不重叠
  2. 选择合适的路由方法:根据场景复杂度和性能要求选择
  3. 处理边界情况:为「无法分类」的请求设计兜底逻辑
  4. 可观测性:记录路由决策过程,便于调试优化

六、主流框架对比

框架 路由实现方式 核心特性 适用场景
LangChain/LangGraph RunnableBranch + 显式条件判断 基于图的状态管理,决策逻辑可视化 复杂多步路由,需要明确状态转换
Google ADK 定义sub_agents,自动路由 框架自动匹配意图到工具/子智能体 多智能体系统,功能明确的场景

代码示例位置

  • LangChain 实现:<code>codes/Chapter-02-Routing-LangChain-Example.py</code>
  • Google ADK 实现:<code>codes/Chapter-02-Routing-ADK-Example.py</code>

关键区别

  • LangGraph:开发者显式定义路由逻辑和状态图,控制力强
  • ADK:框架根据 sub_agents 描述自动路由,开发更简单

七、关键概念速查

概念 定义
路由(Routing) 根据条件动态选择执行路径
意图识别 分析输入确定用户真实目的
LLM 路由 用大模型分析输入并输出分类
向量路由 基于嵌入相似度的语义路由
规则路由 if-else 或关键词匹配
子智能体(sub_agents) 专门处理特定任务的智能体单元

八、常见问题

Q1:路由会增加多少延迟?
取决于路由方法。规则路由几乎无延迟,LLM 路由需要额外的模型调用(通常 100-500ms)。可通过缓存常见请求的路由结果优化。

Q2:路由决策错误怎么办?
设计容错机制:允许用户纠正路由、提供「重新路由」选项、记录错误案例用于优化路由逻辑。

Q3:如何评估路由准确性?
建立测试集,包含各类典型请求,计算路由到正确目标的准确率。目标:>95% 准确率。

Q4:路由和提示链的区别?
提示链是顺序执行,路由是条件分支。可组合使用:路由选择执行哪条提示链。

Q5:多层路由会不会太复杂?
可以。建议最多 2-3 层路由。过深的路由树应考虑重构,合并相似路由或简化分类体系。


九、参考资源

官方文档

代码示例

  • LangChain 实现:<code>codes/Chapter-02-Routing-LangChain-Example.py</code>
  • Google ADK 实现:<code>codes/Chapter-02-Routing-ADK-Example.py</code>

扩展阅读

  • 原文章节:<code>08-Chapter-02-Routing.md</code>
  • 向量路由详解:第 14 章 RAG 章节

滚动至顶部