第 2 章:路由
路由模式概述
虽然通过提示词链进行顺序处理是使用语言模型执行确定性、线性工作流的基础技术,但在需要自适应响应的场景中,它的适用性会受到限制。现实世界的智能体系统必须经常根据偶然因素在多个潜在行动之间进行仲裁,例如环境状态、用户输入或前一操作的结果。这种控制流向不同专门函数、工具或子流程的动态决策能力,是通过一种称为路由的机制实现的。 路由将条件逻辑引入智能体系统的操作框架,使其从固定的执行路径转变为这样一种模型:智能体动态评估特定标准,从一组可能的后续操作中进行选择。这使得系统行为更加灵活且具有上下文感知能力。 例如,一个设计用于处理客户查询的智能体,在配备路由功能时,可以首先对传入查询进行分类以确定用户的意图。基于此分类,它可以将查询定向到专门的智能体进行直接问答、用于帐户信息的数据库检索工具,或用于复杂问题的升级流程,而不是默认使用单一的预定响应路径。因此,使用路由的更复杂智能体可以:- 分析用户的查询。
- 基于其意图路由查询:
- 如果意图是”检查订单状态”,路由到与订单数据库交互的子智能体或工具链。
- 如果意图是”产品信息”,路由到搜索产品目录的子智能体或链。
- 如果意图是”技术支持”,路由到访问故障排除指南或升级到人工的不同链。
- 如果意图不清楚,路由到澄清子智能体或提示词链。
- 基于 LLM 的路由: 可以提示语言模型本身分析输入并输出指示下一步或目的地的特定标识符或指令。例如,提示词可能要求 LLM “分析以下用户查询并仅输出类别:‘订单状态’、‘产品信息’、‘技术支持’或’其他’。“智能体系统然后读取此输出并相应地指导工作流。
- 基于嵌入的路由: 输入查询可以转换为向量嵌入(参见第 14 章 RAG)。然后将此嵌入与代表不同路由或能力的嵌入进行比较。查询被路由到嵌入最相似的路由。这对于语义路由很有用,其中决策基于输入的含义而不仅仅是关键词。
- 基于规则的路由: 这涉及使用基于关键词、模式或从输入中提取的结构化数据的预定义规则或逻辑(例如,if-else 语句、switch case)。这可以比基于 LLM 的路由更快、更具确定性,但在处理细微或新颖输入方面的灵活性较差。
- 基于机器学习模型的路由: 它采用判别模型,例如分类器,该模型已经在小型标记数据语料库上专门训练以执行路由任务。虽然它与基于嵌入的方法在概念上有相似之处,但其关键特征是监督微调过程,该过程调整模型的参数以创建专门的路由功能。这种技术与基于 LLM 的路由不同,因为决策组件不是在推理时执行提示词的生成模型。相反,路由逻辑被编码在微调模型的学习权重中。虽然 LLM 可能在预处理步骤中用于生成合成数据以增强训练集,但它们不参与实时路由决策本身。
实际应用与用例
路由模式是自适应智能体系统设计中的关键控制机制,使它们能够动态改变其执行路径以响应可变输入和内部状态。它通过提供必要的条件逻辑层,在多个领域发挥作用。 在人机交互中,例如虚拟助手或 AI 驱动的导师,路由用于解释用户意图。对自然语言查询的初始分析确定最合适的后续操作,无论是调用特定信息检索工具、升级到人工操作员,还是根据用户表现选择课程中的下一个模块。这使系统能够超越线性对话流并进行上下文响应。 在自动化数据和文档处理管道中,路由作为分类和分发功能。传入的数据,如电子邮件、支持工单或 API 有效载荷,根据内容、元数据或格式进行分析。然后系统将每个项目定向到相应的工作流,例如销售线索摄入流程、JSON 或 CSV 格式的特定数据转换函数,或紧急问题升级路径。 在涉及多个专门工具或智能体的复杂系统中,路由充当高级调度器。由用于搜索、总结和分析信息的不同智能体组成的研究系统将使用路由器根据当前目标将任务分配给最合适的智能体。类似地,AI 编码助手使用路由来识别编程语言和用户意图——调试、解释或翻译——然后将代码片段传递给正确的专门工具。 最终,路由提供了创建功能多样化和上下文感知系统所必需的逻辑仲裁能力。它将智能体从预定义序列的静态执行器转变为可以在变化条件下就完成任务的最有效方法做出决策的动态系统。实操代码示例(LangChain)
在代码中实现路由涉及定义可能的路径和决定采取哪条路径的逻辑。像 LangChain 和 LangGraph 这样的框架为此提供了特定的组件和结构。LangGraph 基于状态的图结构对于可视化和实现路由逻辑特别直观。 此代码演示了使用 LangChain 和 Google 的生成式 AI 的简单类智能体系统。它设置了一个”协调器”,根据请求的意图(预订、信息或不清楚)将用户请求路由到不同的模拟”子智能体”处理程序。系统使用语言模型对请求进行分类,然后将其委托给适当的处理函数,模拟多智能体架构中常见的基本委托模式。 首先,确保您已安装必要的库:实操代码示例(Google ADK)
智能体开发工具包 (ADK) 是一个用于工程化智能体系统的框架,为定义智能体能力和行为提供了结构化环境。与基于显式计算图的架构相比,ADK 范式中的路由通常通过定义一组离散的”工具”来实现,这些工具代表智能体的功能。响应用户查询选择适当工具由框架的内部逻辑管理,该逻辑利用底层模型将用户意图与正确的功能处理程序匹配。 此 Python 代码演示了使用 Google ADK 库的智能体开发工具包 (ADK) 应用程序示例。它设置了一个”协调器”智能体,根据定义的指令将用户请求路由到专门的子智能体(“Booker”用于预订,“Info”用于一般信息)。然后子智能体使用特定工具模拟处理请求,展示了智能体系统中的基本委托模式。概览
是什么: 智能体系统必须经常响应各种各样的输入和情况,这些无法由单一的线性流程处理。简单的顺序工作流缺乏基于上下文做出决策的能力。没有为特定任务选择正确工具或子流程的机制,系统仍然是僵化和非自适应的。这种限制使得难以构建能够管理现实世界用户请求的复杂性和可变性的复杂应用程序。 为什么: 路由模式通过将条件逻辑引入智能体的操作框架提供了标准化解决方案。它使系统能够首先分析传入查询以确定其意图或性质。基于此分析,智能体动态地将控制流定向到最合适的专门工具、函数或子智能体。这个决策可以由各种方法驱动,包括提示 LLM、应用预定义规则或使用基于嵌入的语义相似性。最终,路由将静态的预定执行路径转变为能够选择最佳可能操作的灵活和上下文感知工作流。 经验法则: 当智能体必须根据用户输入或当前状态在多个不同的工作流、工具或子智能体之间做出决策时,使用路由模式。它对于需要对传入请求进行分类以处理不同类型任务的应用程序至关重要,例如客户支持机器人区分销售查询、技术支持和帐户管理问题。可视化摘要:

图 1:路由模式,使用 LLM 作为路由器
关键要点
- 路由使智能体能够根据条件动态决定工作流中的下一步。
- 它允许智能体处理各种输入并调整其行为,超越线性执行。
- 路由逻辑可以使用 LLM、基于规则的系统或嵌入相似性实现。
- 像 LangGraph 和 Google ADK 这样的框架提供了在智能体工作流中定义和管理路由的结构化方式,尽管采用不同的架构方法。
结论
路由模式是构建真正动态响应式智能体系统的关键步骤。通过实现路由,我们超越了简单的线性执行流,使智能体能够智能地决策如何处理信息、响应用户输入以及利用可用工具或子智能体。 我们已经看到路由如何应用于各个领域,从客户服务聊天机器人到复杂的数据处理管道。分析输入并有条件地指导工作流的能力是创建能够处理现实世界任务固有可变性的智能体的基础。 使用 LangChain 和 Google ADK 的代码示例展示了实现路由的两种不同但有效的方法。LangGraph 基于图的结构提供了定义状态和转换的可视化和显式方式,使其成为具有复杂路由逻辑的复杂多步工作流的理想选择。另一方面,Google ADK 通常专注于定义不同的能力(工具)并依赖框架将用户请求路由到适当的工具处理程序的能力,这对于具有明确定义的离散操作集的智能体来说可能更简单。 掌握路由模式对于构建能够智能地导航不同场景并根据上下文提供定制响应或操作的智能体至关重要。它是创建多功能和健壮智能体应用程序的关键组件。参考文献
- LangGraph Documentation: https://www.langchain.com/
- Google 智能体开发工具包文档: https://google.github.io/adk-docs/