ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Agent 架构 - 单 Agent

Agent 架构 - 单 Agent 单 Agent 架构工具调用、记忆、规划三大组件的实现要点。现状单 Agent 架构是 Agent 系统中最基础的实现形态其核心由工具调用、记忆、规划三大组件构成。工业界目前的主流实现基本都建立在这三个组件的组合之上。工具调用从函数签名到执行闭环工具调用的本质是让 LLM 能够与外部系统交互。实现上通常分为三步工具注册、参数解析、结果回传。工具注册阶段需要定义工具的函数签名、参数类型、返回值结构。LangChain 的 Tool 抽象、OpenAI 的 Function Calling 规范都是这一层的典型实现。关键在于参数校验不能只依赖 LLM 的输出必须在代码层做二次校验否则类型错误会直接导致工具执行失败。参数解析阶段LLM 输出的 JSON 结构往往不够规范。业内常见做法是在 LLM 输出后加一层解析器对缺失字段赋予默认值、对类型不匹配字段做转换。某电商团队 2026 年在订单查询 Agent 上的复盘提到他们发现 LLM 输出的参数中订单 ID 字段有 12% 的情况是字符串而非整数必须在代码层做类型转换。结果回传阶段工具的执行结果需要以 LLM 可理解的方式返回。这里有一个容易被忽视的点工具返回的内容可能很长直接塞进上下文会快速消耗 token 预算。常见的处理方式是截断过长输出、或对结果做摘要后再返回。工具调用执行闭环记忆管理短期上下文与长期存储的分层记忆是单 Agent 架构中最容易被低估的组件。没有记忆Agent 每次交互都是全新的无法积累上下文也无法形成连贯的行为。短期记忆通常直接依赖 LLM 的上下文窗口。GPT-4 的 128K token 上下文、Claude 的 200K token 上下文是目前主流的选择。但上下文窗口不是无限的随着对话轮次增加早期信息会被挤出窗口导致 Agent 遗忘关键信息。长期记忆需要外部存储。常见的实现方式有三种向量数据库存储对话历史、关系型数据库存储结构化状态、键值存储存储会话级缓存。某金融团队在 2026 年的内部技术分享中提到他们选择向量数据库存储用户偏好关系型数据库存储交易记录键值存储存储会话级临时状态三者配合使用。记忆的管理有一个关键原则不是所有信息都需要长期存储。高频访问、结构化、需要精确检索的信息适合存在关系型数据库低频访问、非结构化、需要语义检索的信息适合存在向量数据库临时性、会话级、不需要持久化的信息适合存在键值存储。单 Agent 的适用边界单 Agent 架构的适用边界取决于任务的复杂度。当任务满足以下条件时单 Agent 架构是合理的选择第一任务路径相对固定不需要复杂的决策分支。单 Agent 的规划能力受限于 LLM 的推理能力对于需要多步推理、多分支决策的复杂任务单 Agent 容易出现规划错误。第二工具数量适中通常在 10 个以内。工具数量过多会导致 LLM 在选择工具时出现混淆降低调用准确率。第三上下文长度可控对话轮次不超过 20 轮。超过 20 轮后上下文管理成本会显著上升单 Agent 架构的维护难度会增加。当任务超出上述边界时需要考虑多 Agent 架构或分层架构。多 Agent 架构通过任务分解将复杂任务拆分为多个子任务由不同的 Agent 分别处理分层架构通过引入规划层、执行层、评估层将不同职责分离降低单 Agent 的复杂度。单 Agent 适用边界判断单 Agent 架构不是银弹但在合适的场景下它是成本最低、实现最简单的选择。工程团队在选型时应该先评估任务的复杂度再决定架构的形态。后端系统设计工具调用从函数签名到执行闭环近期一个明显的趋势是工具调用从「声明式签名」向「执行闭环」演进。早期的 Agent 框架如 LangChain 早期版本主要解决工具注册和参数绑定问题但执行失败后的重试、降级、错误恢复往往需要业务方自行实现。2025 年下半年开始主流框架普遍引入了工具调用的完整生命周期管理。以 LangGraph 为例工具节点现在支持自动重试、超时控制和结果缓存。这种变化的底层逻辑是工具调用不再是简单的函数调用而是需要处理网络抖动、参数校验、权限检查、结果格式化等多重环节的工程问题。工具调用执行闭环关键信号是工具调用的错误处理正在成为框架层面的基础设施而非业务代码的附加逻辑。这意味着在选型时应该优先考察框架的工具执行闭环能力而不是工具注册 API 的丰富程度。记忆管理短期上下文与长期存储的分层记忆管理是单 Agent 架构中最容易被低估的组件。近期实践中一个清晰的共识正在形成短期上下文和长期存储需要分层设计。短期上下文即对话历史的管理策略趋于统一——大多数场景下采用滑动窗口 关键信息摘要的方式。但长期存储的实现路径出现了分化轻量级方案基于向量数据库的语义检索适合知识型 Agent结构化方案基于关系型数据库的键值存储适合任务型 Agent混合方案两者结合检索用于语义匹配存储用于精确查询代码评审折磨某团队在 2026 年初的复盘报告中提到他们最初采用纯向量检索方案但在处理需要精确数值查询的场景时召回率不足 60%。切换到混合方案后关键查询的准确率提升到 92%。这个案例说明记忆分层不是理论问题而是直接影响 Agent 可用性的工程问题。规划机制从线性到条件分支规划模块的演进方向是条件分支和动态调整。早期的单 Agent 规划器大多采用线性链式结构适合任务路径固定的场景。但当任务复杂度上升时线性规划的脆弱性会暴露无遗。近期的实现趋势是引入状态机式的规划模型。Agent 在规划阶段不仅生成执行序列还会为每个步骤定义前置条件和后置验证。当某一步骤执行失败时规划器可以根据预设的恢复策略进行分支选择而不是简单重试或终止。Agent 工程门禁状态这种设计的代价是规划复杂度的提升。实践中建议在任务路径可枚举且分支不超过 3 层时使用条件规划超过这个阈值应考虑多 Agent 协作架构。选型边界单 Agent 的适用场景单 Agent 架构的适用边界正在被重新定义。根据 2025-2026 年的项目实践以下场景适合单 Agent任务路径相对固定步骤数不超过 10 步工具调用类型不超过 5 种对延迟敏感需要端到端响应时间控制在 3 秒内记忆管理需求以短期上下文为主当任务复杂度超出上述范围时单 Agent 的维护成本会显著上升。此时应该考虑将规划、执行、验证等环节拆分为多个 Agent 协作。大佬点头单 Agent 架构的核心价值在于简洁性和可控性。在合适的场景下它是一个高效且可维护的选择。但在选型时需要诚实评估任务复杂度避免用单 Agent 解决本应多 Agent 协作的问题。在决定采用单 Agent 方案之前需要先明确它的适用边界。单 Agent 适合任务链路清晰、工具调用次数有限通常不超过 10 次、上下文窗口可控的场景。一旦任务复杂度上升比如需要多轮条件分支、长周期记忆管理或并行工具调用单 Agent 的瓶颈就会显现。工具调用的最佳实践契约校验优先工具调用的核心问题不是「能不能调」而是「怎么调得稳」。实话说很多团队在工具调用环节踩的坑往往来自对函数签名的过度信任。一个典型的反模式是把工具返回的原始 JSON 直接塞进下一轮 LLM 的上下文而不做任何结构化校验。这会导致 LLM 在后续推理中基于错误数据做出决策且错误会随轮次累积。建议的做法是在工具层加一道「契约校验」用 Pydantic 或 Zod 对返回结果做类型校验失败时返回明确的错误码而非原始异常。这样 LLM 拿到的是结构化、可预期的输入而不是「可能有用也可能误导」的原始数据。记忆管理的取舍冷热分层策略单 Agent 的记忆管理本质是在「上下文窗口成本」和「信息保留粒度」之间做权衡。短期记忆对话历史的处理相对直接控制 token 用量优先保留最近 N 轮对话必要时做摘要压缩。但长期记忆的存储策略需要更谨慎的设计。业内常见做法是将长期记忆分层高频访问的「热数据」放在向量数据库中做语义检索低频访问的「冷数据」归档到关系型数据库。这种分层不是技术炫技而是成本控制的必要手段——向量检索的 API 调用成本远高于关系型查询把不常用的数据放进向量库是典型的资源错配。架构选型不是拍脑袋单 Agent 选型决策树规划机制的边界ReAct 与 Plan-and-Execute 的选择单 Agent 的规划机制通常采用 ReAct 或 Plan-and-Execute 模式。这两种模式的核心差异在于「计划」的粒度ReAct 是边执行边规划Plan-and-Execute 是先规划再执行。从经验看ReAct 更适合工具调用路径不确定的场景比如搜索类任务而 Plan-and-Execute 更适合路径相对固定的场景比如数据处理流水线。选择哪种模式取决于你对任务不确定性的判断。选型决策的三条建议基于上述分析给出三条可执行的建议第一先画任务流程图再决定架构。在写第一行代码之前用 Mermaid 或手绘把任务的关键节点、工具调用点、分支条件画出来。这张图会直接告诉你任务链路是否线性、工具调用是否密集、上下文是否可控。如果流程图超过 5 个分支节点单 Agent 的维护成本会显著上升。第二给工具调用加「熔断机制」。单 Agent 最怕的是工具调用陷入死循环。建议在工具层加一个最大调用次数限制比如 20 次超出后返回「需要人工介入」的信号而不是让 LLM 无限重试。这个限制不是技术限制是用户体验限制——用户等 20 次工具调用的耐心通常撑不到第 10 次。第三监控「工具调用成功率」而非「任务完成率」。很多团队只看任务是否完成但任务完成不代表过程健康。如果一个 Agent 的任务完成率是 80%但工具调用成功率只有 40%说明它在靠「运气」完成任务这种系统上线后就是定时炸弹。架构评审通过单 Agent 架构的选型本质上是在「开发效率」和「系统复杂度」之间做取舍。如果你的任务链路清晰、工具调用可控、上下文窗口够用单 Agent 是最快落地的方案。但如果任务复杂度已经超出单 Agent 的承载能力强行用单 Agent 解决只会让后续的维护成本呈指数级上升。架构选型没有银弹只有「在当前约束下的最优解」。回到主线单 Agent 不是「一个模型加一堆工具」那么简单。工程落地的核心在于三个组件的协同工具调用决定 Agent 能做什么记忆管理决定 Agent 记得什么规划机制决定 Agent 怎么思考。三者任一短板都会在实际项目中暴露。工具调用的关键不是「能不能调」而是「契约是否清晰」。一个常见的错误是工具参数定义过于宽松导致模型在调用时产生幻觉参数。业界常见做法是在工具注册阶段做 JSON Schema 校验强制要求参数类型、必填项、枚举值明确。实话说这一步省下的调试时间远超预期。工具契约是地基记忆管理方面冷热分层是单 Agent 的必选项。短期上下文对话历史、当前任务状态放在模型上下文窗口内长期记忆用户偏好、历史决策、知识库放在外部存储。问题在于很多团队只做了短期记忆导致多轮对话后上下文溢出或者每次对话都从零开始。冷热分层的取舍点在于哪些信息需要跨会话保留哪些信息只在当前任务有效。没有统一标准需要根据业务场景判断。规划机制的选择直接影响 Agent 的可靠性。ReActReasoning Acting适合任务路径不确定的场景模型在每一步根据当前状态决定下一步动作Plan-and-Execute 适合任务路径相对固定的场景模型先规划完整路径再逐步执行。从经验看ReAct 的容错性更好但执行成本更高Plan-and-Execute 效率更高但一旦规划错误后续步骤全部偏离。没有通用最优解只有场景适配。单 Agent 规划路径选择选型决策的三条建议第一工具调用契约优先于模型选型清晰的参数定义比更强的模型更能减少错误第二记忆分层优先于上下文延长冷热分离比单纯扩大窗口更可持续第三规划机制匹配任务复杂度简单任务用 Plan-and-Execute复杂任务用 ReAct。下一步动作可以今天就做检查现有 Agent 的工具定义确认每个工具的参数是否有 JSON Schema 校验梳理记忆存储区分短期上下文和长期存储的边界评估当前规划机制判断 ReAct 还是 Plan-and-Execute 更适合你的业务场景。三步落地不踩坑单 Agent 架构的结论在任务复杂度中等、工具调用频率可控、记忆需求明确的场景下成立。当任务复杂度超过单 Agent 的规划能力或者工具调用涉及多 Agent 协作时需要重新评估架构选型。这不是单 Agent 的失败而是架构边界的自然延伸。
返回列表