如何构建有效的 Agent
代理系统
代理系统(agentic systems)分为两类:
- 工作流(Workflows)。通过预定义的代码路径编排 LLM 和工具,系统按固定的流程执行任务;
- 代理(Agents)。代理动态指导自己的流程和使用工具,能自主掌握任务的完成;
如何选择代理系统?
首先需要明确,任何方案存在利弊,工具流设计简单且便于维护,但是无法处理多变的场景,代理具有更高的性能,但是会增加不确定性和延迟。所以,在大部分情况下都应该从最简单、可组合的模式开始,只有在必要时才增加复杂度。
- 对于定义明确的任务,工作流能够保证可预测性和一致性;
- 当任务需要大规模的复杂性和模型驱动的决策时,代理是更好的选择;
使用框架可以更高效的进行业务开发,但是由于其增加了抽象层,会使得调试变得困难,所以,跟之前的一样,尽可能从简开始,然后根据业务需求增加复杂度。
三大设计原则:
- 保持简洁。在代理设计中维持简单性,避免引入难以诊断的错误;
- 优先考虑透明。清晰的展示代理的规划步骤,使其易于理解和评估;
- 精心设计人机接口。通过详尽的工具文档和测试,仔细构建代理和计算机的接口;
增强型大语言模型
LLM 本质是可以理解为是一个无状态的纯函数,它的能力依赖于用以训练的数据,根据用户的输入和已知的训练数据对下一个 token 进行概率上的预测,所以,它不具备训练数据以外的知识储备,也无法做到记忆和逻辑处理。
增强型大语言模型是构成代理系统的基础构建模块。它指的是一个核心的 LLM 通过以下方式得到增强:
- 检索(Retrieval):赋予模型从大量数据源中查找和获取相关信息的能力。
- 工具使用(Tools):让模型能够调用外部资源,如API、数据库或搜索引擎,以执行特定任务(例如,获取实时信息、发送邮件、更新数据库记录)。
- 记忆(Memory):使模型能够存储和回忆上下文信息以及之前的交互内容,从而在多步任务中保持连贯性。
增强型大语言模型和 RAG 不是一个概念,它们的区别如下:
特征 | 增强型大型语言模型 (Augmented LLM) | RAG (检索增强生成) |
---|---|---|
定义 | 一个广义概念,指通过集成外部组件来扩展LLM能力的系统。 | 一种具体技术,通过检索外部知识来增强LLM的生成内容。 |
目的 | 全面提升LLM的能力,包括知识、交互和记忆。 | 主要解决LLM的知识局限性,减少“幻觉”。 |
包含组件 | 可以包括RAG、工具使用、记忆、代理逻辑等。 | 核心组件是“检索器(Retriever)”和“生成器(Generator)”。 |
关系 | RAG是实现增强型LLM的一种核心手段。 | RAG是增强型LLM的一个子集或具体实例。 |
常见的工作流模式(Workflow Patterns)
工作流模式可以看作是构建更复杂代理系统的“乐高积木”。
- 提示链(Prompt Chaining):将一个复杂任务分解为一系列连续的、更简单的子任务。 前一个 LLM 调用的输出作为后一个 LLM 调用的输入,通过牺牲一定的延迟来换取更高的准确性。
- 路由(Routing):根据用户请求的内容,将其分发给最合适的专门化模型或工具处理。这允许多个小型、专业的代理协同工作。
- 并行化(Parallelization):当任务可以分解为多个独立的子任务时,同时执行这些子任务,然后将结果汇总。这可以显著减少处理时间。
- 协调器-工作者模式(Orchestrator-Worker Model):由一个上层的“协调器”代理负责分解复杂任务,并将子任务分配给多个专门的“工作者”代理。协调器最终综合所有工作者的成果。
- 评估器-优化器模式(Evaluator-Optimizer Approach):一个代理负责生成解决方案,另一个“评估器”代理则根据特定标准对其进行评估和打分。这个反馈可以用来指导和优化初始代理的后续尝试。