Agent设计模式
date
Sep 14, 2025
slug
agent-design
status
Published
tags
summary
type
Post
🚀 引言
AI Agent 概念定义
虽然"Agent"一词被广泛使用,但其核心特征在于能够:
- 🔧 动态规划并执行任务
- 🛠️ 利用外部工具扩展能力
- 💾 维护记忆实现连续性
- 🎯 实现复杂目标的自主性
我们将深入探讨几种常见模式,并区分两大类别:
特征 | workflow模式 | Agent模式 |
执行方式 | 遵循预定义路径 | 拥有更大自主权 |
灵活性 | 结构化、可预测 | 动态、自适应 |
适用场景 | 步骤明确的任务 | 复杂、模糊的问题 |
控制程度 | 高度可控 | 模型驱动的决策 |
🔍 Agent应用场景分析
在深入研究设计模式之前,需要系统性评估何时采用Agent方法。
📌 核心原则:首先寻求最简单的解决方案
- 已知步骤? → 如果知道解决问题的确切步骤,固定的工作流程甚至简单的脚本可能更高效可靠
- 成本效益? → Agent系统通常以增加延迟和计算成本为代价,换取潜在的性能提升
- 复杂性权衡? → 确保Agent带来的好处超过其引入的复杂性
适用场景分析
场景类型 | 推荐方案 | 理由 |
步骤已知、定义明确 | workflow | 可预测性和一致性 |
需要灵活性、适应性 | Agent | 模型驱动的决策能力 |
动态变化的环境 | Agent | 自适应和实时调整 |
创造性任务 | Agent | 创新和探索能力 |
核心设计原则
- 简化至上:即使在构建Agent系统时,也要追求最简单有效的设计
- 异常处理:Agent引入了固有的不可预测性,必须包含:
- 🔍 强大的错误记录
- 🛡️ 异常处理机制
- 🔄 自动重试策略
- 📊 监控和调试工具
🏗️ 设计模式概览
🔄 工作流程模式 (Workflow Patterns)
- Prompt Chaining (提示链)
- 将复杂任务分解为链式执行的简单步骤
- Routing or Handoff (路由或转换)
- 根据输入特征智能选择处理路径
- Parallelization (并行化)
- 同时执行多个任务以提高效率
🤖 智能代理模式 (Agent Patterns)
- Reflection Pattern (反思模式)
- 自我评估和改进输出质量*
- Tool Use Pattern (工具使用模式)
- 扩展能力边界的外部工具集成
- Planning Pattern (规划模式 - 协调者-工作者)
- 任务分解和协调执行
- Multi-Agent Pattern (多智能体模式)
- 多个专业化代理的协作系统
🔄 工作流程模式详述
1. 提示链模式 (Prompt Chaining)
核心概念: 一个大型语言模型调用的输出依次作为下一个大型语言模型调用的输入。此模式将复杂任务分解为一系列固定的步骤,每个步骤由处理前一个步骤输出的大型语言模型调用处理。此方法适用于能够清晰分解为可预测、顺序子任务的作业。
应用场景:
- 结构化文档生成:LLM1 创建大纲,LLM2 根据标准验证大纲,LLM3 根据验证过的大纲撰写内容
- 多步骤数据处理:信息提取 → 转换 → 总结
- 精选输入的总结简报生成
代码示例:
Qwen3 思考模式示例:
2. 路由模式 (Routing)
📍 架构图: 智能路由决策流程

核心概念: 一个初始的大型语言模型充当路由器,对用户的输入进行分类,并将其引导至最合适的专用任务或大型语言模型。
此模式实现了关注点分离,并允许独立优化各个下游任务(使用专用提示、不同模型或特定工具)。通过使用更小的模型处理简单任务,它提高了效率并可能降低成本。当任务被路由时,所选的代理“接管”完成任务的职责。
应用场景:
- 客户支持系统:将查询路由到擅长账单、技术支持或产品信息的客服代表
- 分级大型语言模型使用:将简单查询路由到更快、更便宜的模型,将复杂或不同寻常的问题路由到更强大的模型
- 内容生成:将博客文章、社交媒体更新或广告文案的请求路由到不同的专业提示/模型
3. 并行化模式 (Parallelization)
🔥 性能提升: 同时处理多个独立任务

核心概念: 任务被分解为独立的子任务,这些子任务由多个大型语言模型同时处理,并将它们的输出结果汇总。
此模式利用并发处理任务。初始查询(或其部分)与单独的提示/目标并行发送给多个大型语言模型。一旦所有分支任务完成,它们的单独结果将被收集,并传递给一个最终的聚合大型语言模型,该模型将它们综合成最终响应。
应用场景:
- 检索增强生成(RAG)与查询分解:将复杂查询分解为子查询,并行运行检索,然后综合结果
- 大型文档分析:将文档分为部分,并行总结每一部分,然后合并摘要
- 多视角生成:向多个大型语言模型提出相同问题,使用不同的角色提示,并汇总它们的回答
- 数据的 Map-Reduce 风格处理
🤖 智能代理模式详述
1. 反思模式 (Reflection Pattern)
🧠 自我优化: 迭代改进输出质量

核心概念: 代理评估自己的输出,并利用该反馈迭代地优化其响应。
这种模式也被称为评估-优化器,并使用自我校正循环。一个初始的 LLM 生成响应或完成任务。第二个 LLM(或甚至是使用不同提示的同一个 LLM)随后充当反思者或评估者,对初始输出与需求或期望质量进行批判。然后,这种批判(反馈)被反馈回来,促使 LLM 产生更精细的输出。这个循环可以重复进行,直到评估者确认需求得到满足或达到令人满意的输出。
用例:
- 代码生成:编写代码,执行它,使用错误信息或测试结果作为反馈来修复错误。
- 写作与润色:生成草稿,反思其清晰度和语气,然后进行修改。
- 复杂问题解决:制定计划、评估可行性并根据评估进行改进。
- 信息检索:搜索信息并使用评估型大型语言模型检查是否找到了所有必要细节,然后再呈现答案。
2. 工具使用模式 (Tool Use Pattern)
🔧 能力扩展: 集成外部API和工具

核心概念: 大型语言模型具备调用外部函数或 API 与外界互动、获取信息或执行操作的能力。
这种模式通常被称为函数调用,是最为广泛认可的。模型被提供了可用工具(函数、API、数据库等)的定义(名称、描述、输入模式)。根据用户查询,模型可以决定调用一个或多个工具,生成符合所需模式的结构化输出(如 JSON)。该输出用于执行实际的外部工具/函数,并将结果返回给模型。随后,模型利用这些结果来形成对用户的最终回应。这极大地扩展了模型的能力,使其超越了训练数据。
用例:
- 使用日历 API 预约安排。
- 通过金融 API 获取实时股价。
- 在向量数据库中搜索相关文档(RAG)。
- 控制智能家居设备。
- 执行代码片段。
3. 规划模式 (Planning Pattern)
📋 任务分解: 协调者-工作者模式

核心概念: 中心规划型大型语言模型将复杂任务分解为动态子任务列表,随后将这些子任务委托给专门的工人代理(通常使用工具使用)执行。
这种模式通过创建初始计划来解决需要多步推理的复杂问题。该计划根据用户输入动态生成。然后将子任务分配给“工人”代理执行,如果依赖关系允许,可以并行执行。一个“协调器”或“合成器”型大型语言模型收集来自工人的结果,反思整体目标是否达成,并综合最终输出,或在必要时启动重新规划步骤。
用例:
- 复杂的软件开发任务:将“构建功能”分解为规划、编码、测试和文档编制子任务。
- 研究和报告生成:规划步骤如文献检索、数据提取、分析和报告撰写。
- 多模态任务:涉及图像生成、文本分析和数据集成的规划步骤。
- 执行复杂的用户请求,如“计划一次 3 天的巴黎之旅,预订符合预算的航班和酒店。”
4. 多智能代理模式 (Multi-Agent Pattern)
🔄 协作系统: 多个专业化代理协作


🐝 蜂群方法 (Swarm Approach)
核心概念: 多个不同的代理各自承担特定角色、形象或专长,共同协作以实现一个共同目标。
这种模式采用自主或半自主的代理。每个代理可能拥有独特的角色(例如:项目经理、程序员、测试员、评论员),专业知识和对特定工具的访问。
他们相互交流和协作,通常由一个中央的“协调器”或“管理者”代理(如图中的项目经理Coordiantor Agent PM)或通过交接逻辑进行协调,其中一个代理将控制权传递给另一个代理。
用例:
- 模拟与不同 AI 角色进行的辩论或头脑风暴会议。
- 涉及到规划、编码、测试和部署的复杂软件创作。
- 运行虚拟实验或模拟,其中包含代表不同角色的智能体。
- 协作写作或内容创作过程。
以下是一个如何使用多智能体模式结合交接逻辑和结构化输出的简化示例。