内容纲要
一、核心定义
路由(Routing):智能体系统根据环境状态、用户输入或执行结果等情境信息,从多个可选方案中动态选择最合适的处理路径的机制。
可视化示意图:

图:路由模式 - 利用大语言模型作为路由器,根据用户输入分发到不同处理路径
关键机制:
用户输入 → 意图识别/分类 → 路由决策 → 分发到专业处理单元 → 执行结果
典型路由流程示例(客服场景):
用户查询 →
├─ 「查订单」→ 订单查询工具链
├─ 「问产品」→ 产品目录检索智能体
├─ 「技术支持」→ 故障排除或转人工
└─ 「意图不明」→ 澄清子智能体
二、为什么需要路由?
| 线性流程的问题 | 路由机制的优势 |
|---|---|
| 单一流程无法应对多样化输入 | 根据场景选择最优处理路径 |
| 所有请求用同一套逻辑处理 | 不同专业模块处理各自擅长的任务 |
| 系统僵化,缺乏灵活性 | 动态适应,上下文感知 |
| 难以扩展新功能 | 添加新路由即可扩展能力 |
核心思想:分类派发,各司其职,动态决策。
三、典型应用场景
1. 人机交互系统
用户查询 → 意图分析 → 路由决策 → 专业模块响应
实例:虚拟助手识别用户是要「查信息」还是「下订单」,分别调用检索工具或订单系统。
价值:超越线性对话,实现上下文相关响应。
2. 数据处理流水线
数据输入 → 格式/内容分类 → 路由到对应处理流程
实例:邮件系统将「销售线索」「技术问题」「紧急事项」自动分发到不同部门。
价值:自动分类分发,提高处理效率。
3. 多智能体协作
任务输入 → 高层调度器 → 分派给最合适的专业智能体
实例:AI 编码助手识别编程语言和意图(调试/解释/翻译),分派给对应工具。
价值:充分发挥各专业智能体优势。
四、四种路由实现方法
| 方法 | 原理 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|---|
| 大模型路由 | 提示词引导LLM输出分类标识 | 灵活,可处理复杂语境 | 速度慢,成本高 | 需要理解语义的场景 |
| 向量路由 | 计算输入与路由选项的向量相似度 | 语义理解强 | 需要向量化预处理 | 语义相似度判断 |
| 规则路由 | 基于关键词/模式的if-else逻辑 | 快速,确定性强 | 灵活性低 | 规则明确的场景 |
| 机器学习路由 | 训练专门的分类器模型 | 速度快,准确度高 | 需要标注数据训练 | 有历史数据的场景 |
选型建议:
- 复杂语境、新颖输入 → 大模型路由
- 语义相似判断 → 向量路由
- 规则明确、追求速度 → 规则路由
- 有大量历史数据 → 机器学习路由
五、设计原则
何时使用路由?
黄金法则:当智能体需要在多个不同工作流/工具/子智能体之间做出选择时。
典型信号:
- 系统需要处理多种不同类型的任务
- 不同任务需要不同的工具或专业知识
- 需要根据上下文动态调整处理逻辑
- 需要将请求分类后分发到不同处理单元
实现要点
- 清晰定义路由选项:每个路由目标的职责明确且不重叠
- 选择合适的路由方法:根据场景复杂度和性能要求选择
- 处理边界情况:为「无法分类」的请求设计兜底逻辑
- 可观测性:记录路由决策过程,便于调试优化
六、主流框架对比
| 框架 | 路由实现方式 | 核心特性 | 适用场景 |
|---|---|---|---|
| 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 章节