AI Agent智能体四类设计模式:通用人工智能必经之路
AI Agent智能体四类设计模式:通用人工智能必经之路
如果把使用AI完成任务比喻成写作文,那么非智能体(Agent)的方式就是让AI从头到尾一次写完,不准修改,而Agent的方式则允许AI多次反复修改,并且在修改的过程中还可以借助工具、与外界合作交流。Agent,在2024年看来,是实现通用人工智能(AGI)的道路之一。
基础模型推动了生成式人工智能的发展,让AI Agent可以自动地帮用户完成任务。近一年来,各类Agent层出不穷。受吴恩达在红衫AI峰会的演讲启发,本文通过结合近一年内发表的论文和Langchain等工程博客,尽力整理了现有的Agent并总结出设计范式,希望能为设计基于基础模型的智能体提供帮助。
可初步整理出以下表格中的16中模式:
模式 | 简介 |
---|---|
Passive goal creator | 通过对话界面分析用户的明确提示,以保持交互性、目标追踪和直观性。 |
Proactive goal creator | 通过理解人类交互和捕捉上下文来预见用户的目标,以增强交互性、目标追踪和可访问性。 |
Prompt/response optimiser | 根据预期的输入或输出内容和格式优化提示/响应,以提供标准化、响应准确性、互操作性和适应性。 |
Retrieval augmented generation | 在保持本地基础模型智能体系统实现数据隐私的同时,增强智能体的知识更新能力。 |
One-shot model querying | 在单个实例中访问基础模型以生成计划所需的所有步骤,以提高成本效率和简化流程。 |
Incremental model querying | 在计划生成过程的每一步访问基础模型,以提供补充上下文、提高响应准确性和解释性。 |
Single-path plan generator | 协调生成实现用户目标的中间步骤,以提高推理确定性、连贯性和效率。 |
Multi-path plan generator | 允许在实现用户目标的每一步创建多种选择,以增强推理确定性、连贯性、对人类偏好的对齐性和包容性。 |
Self-reflection | 使智能体能够生成对计划和推理过程的反馈,并提供自我改进的指导,以提高推理确定性、解释性、持续改进和效率。 |
Cross-reflection | 使用不同的智能体或基础模型提供反馈并改进生成的计划和推理过程,以提高推理确定性、解释性、互操作性、包容性、可扩展性和持续改进。 |
Human reflection | 收集人类反馈以改进计划和推理过程,有效对齐人类偏好,提高可争议性、有效性、公平性和持续改进。 |
Voting-based cooperation | 使智能体可以自由表达意见,并通过提交投票达成共识,以提高多样性、有效的分工和容错性。 |
Role-based cooperation | 分配不同的角色,并根据智能体的角色最终确定决策,以提高决策的确定性、分工、容错性、可扩展性和责任性。 |
Debate-based cooperation | 智能体通过辩论提供和接收反馈,调整其想法和行为,直到达成共识,以提高决策确定性、适应性、解释性、响应准确性和批判性思维。 |
Multimodal guardrails | 控制基础模型的输入和输出,以满足特定要求,如用户要求、伦理标准和法律法规,以增强稳健性、安全性、标准对齐和适应性。 |
Tool/agent registry | 维护一个统一且方便的来源,以选择不同的智能体和工具,以提高可发现性、效率和工具适用性。 |
这16种模式,都可以归结到吴恩达在红衫AI峰会的演讲中提出的4范式,分别是:
- Reflection
- Tool Use
- Planning
- Multiagent Collaboration
1 Reflection
1.1 Basic Reflection
在LLM Agent构建的背景下,反思(Reflection)是指提示LLM观察其过去的步骤(以及来自工具/环境的潜在观察)以评估所选行动的质量的过程。然后将这些反馈用于重新规划、搜索或评估等下游任务。下图是一种基本的反思模式。
Basic Reflection
1.2 Reflexion Actor
由 Shinn 等人提出的 Reflexion 是一种通过语言反馈和自我反思来学习的架构。这种Agent会点评其任务结果,以生成更高质量的最终结果,但代价是执行时间更长。主要包含三个组成部分:
- Actor (agent) with self-reflection 会自我反思的工人
- External evaluator (task-specific, e.g. code compilation steps) 外部评委(特定任务,例如代码编译步骤)
- Episodic memory that stores the reflections from (1). 来自(1)的反思的情景记忆存储
Reflexion Actor
1.3 LATS
语言智能体树搜索(LATS),由 Zhou 等人提出,是一种通用的LLM Agent搜索算法,它结合了反思/评估和搜索(特别是蒙特卡洛树搜索),与类似技术如 ReACT、Reflexion 或 Tree of Thoughts 相比,能够实现更好的整体任务性能。
它有四个主要步骤:
-
Select: pick the best next actions based on the aggregate rewards from step (2). Either respond (if a solution is found or the max search depth is reached) or continue searching.
选择:根据步骤(2)中的总奖励选择最佳的下一步行动。若找到解决方案或达到最大搜索深度,则进行响应,否则继续搜索。
-
Expand and simulate: select the “best” 5 potential actions to take and execute them in parallel.
扩展并模拟:选择“最佳”的 5 个候选行动并同时执行。
-
Reflect + Evaluate: observe the outcomes of these actions and score the decisions based on reflection (and possibly external feedback)
反思 + 评估:观察这些行动的结果,并根据反思(以及可能的外部反馈)对决策进行评分
-
Backpropagate: update the scores of the root trajectories based on the outcomes.
反向传播:根据结果更新根轨迹的分数。
LATS
2 Tool Use
调用工具,通过函数的形式使用。
3 Planning
3.1 ReAct
ReAct通过结合推理和行动来增强智能体的能力。ReAct方法允许智能体在接收信息后立即作出反应,而不是等待所有信息处理完毕。同时这种方法还注重推理和行动的紧密结合,智能体不仅需要分析和理解输入信息,还需要根据分析结果进行相应的行动。这种方式的优点在于其灵活性和环境适应性。
ReAct框架
3.2 Plan and Execute
Plan and Execute 核心思想是首先制定一个多步骤的计划,然后逐项执行该计划。在完成特定任务后,可以重新审视计划并进行适当修改。
这与典型的 ReAct 风格代理相比,后者是一次思考一步。这种“计划和执行”风格的优点是:
- 明确的长期规划(即使是非常强大的LLMs也难做到这点)
- 能够在执行步骤中使用较小/较弱的模型,仅在规划步骤中使用较大/较好的模型
Plan-and-Execute
3.3 ReWOO
在 ReWOO 中,Xu 等人提出了一种结合多步规划器和变量替换的智能体,以实现有效的工具使用。它通过以下方面改进 ReACT 风格的Agent架构:
- 通过一次性生成使用的完整工具链来减少token消耗和执行时间。(ReACT 风格的代理架构需要许多LLM调用,并且有冗余前缀(因为系统提示和前面的步骤在每个推理步骤中都提供给LLM)
- 简化微调过程。由于规划数据不依赖于工具的输出,模型可以在理论上不实际调用工具的情况下进行微调
Reasoning without Observation
3.4 LLMCompiler
LLMCompiler 是一种通过在 DAG 中突击执行任务来加速agent任务的执行的Agent架构。它还通过减少对LLM的调用次数来节省冗余token使用的成本。主要包含三个部分:
-
Planner: stream a DAG of tasks.
规划器:流式处理任务的有向无环图。
-
Task Fetching Unit: schedules and executes the tasks as soon as they are executable
任务获取单元:在任务可执行时立即调度和执行任务
-
Joiner: Responds to the user or triggers a second plan
连接器:响应用户或触发第二个计划
LLMCompiler
4 Multiagent collaboration
4.1 Supervison
通过一个监管者,管理和调度多个Agent进行协作。
监督方式
4.2 Hierarchical Teams
通过分层、分级组织Agent来完成复杂且工作量大的任务。AutoGen就是这种方式的典型代表。
分层团队方式
4.3 Collaboration
单个agent使用多种(领域)工具的能力有限,需要多个agent写作使用更多类型的工具。可以使用“分治法”的思想,让每个agent成为专注于处理一类问题的“专家”,然后再让他们进行合作。
一种基本的多智能体合作
5 评估
一种最直接的想法是使用一个agent作为“虚拟用户”进行评估,很多任务结果无法量化评估的任务可能不得不使用这种方式。但对于有明确指标的任务(分类、回归),也许可以直接利用一个工具进行评估。
Agent-based Evaluation
6 AGI的其它方式
Agent只是一种比较有希望的AGI方式,但并不是唯一方式。Agent方式本身可以和RAG、用户参与等方法有机结合。比如下面Shi等人结合Agent和检索的方式,实现了大模型解决奥赛编程问题。
7 推荐阅读
https://github.com/AGI-Edgerunners/LLM-Agents-Papers
https://github.com/zjunlp/LLMAgentPapers
AI agent智能体任务分解和调度的几篇经典文章 - bonelee - 博客园 (cnblogs.com)
Agent四大范式 | CRITIC:吴恩达力推Agent设计范式 - 知乎 (zhihu.com)
8 参考
- Kim, Sehoon, Suhong Moon, Ryan Tabrizi, Nicholas Lee, Michael W. Mahoney, Kurt Keutzer, and Amir Gholami. “An LLM Compiler for Parallel Function Calling.” arXiv, February 6, 2024. https://doi.org/10.48550/arXiv.2312.04511.
- Liu, Yue, Sin Kit Lo, Qinghua Lu, Liming Zhu, Dehai Zhao, Xiwei Xu, Stefan Harrer, and Jon Whittle. “Agent Design Pattern Catalogue: A Collection of Architectural Patterns for Foundation Model Based Agents.” arXiv, May 16, 2024. https://doi.org/10.48550/arXiv.2405.10467.
- Shi, Quan, Michael Tang, Karthik Narasimhan, and Shunyu Yao. “Can Language Models Solve Olympiad Programming?” arXiv, April 16, 2024. https://doi.org/10.48550/arXiv.2404.10952.
- Shinn, Noah, Federico Cassano, Edward Berman, Ashwin Gopinath, Karthik Narasimhan, and Shunyu Yao. “Reflexion: Language Agents with Verbal Reinforcement Learning.” arXiv, October 10, 2023. https://doi.org/10.48550/arXiv.2303.11366.
- Wang, Lei, Wanyu Xu, Yihuai Lan, Zhiqiang Hu, Yunshi Lan, Roy Ka-Wei Lee, and Ee-Peng Lim. “Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models.” arXiv, May 26, 2023. https://doi.org/10.48550/arXiv.2305.04091.
- Xu, Binfeng, Zhiyuan Peng, Bowen Lei, Subhabrata Mukherjee, Yuchen Liu, and Dongkuan Xu. “ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models.” arXiv, May 22, 2023. https://doi.org/10.48550/arXiv.2305.18323.
- Yao, Shunyu, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. “ReAct: Synergizing Reasoning and Acting in Language Models.” arXiv, March 9, 2023. https://doi.org/10.48550/arXiv.2210.03629.
- “Yoheinakajima/Babyagi.” Accessed May 21, 2024. https://github.com/yoheinakajima/babyagi/tree/main.
- “LangGraph tutorials.” Accessed May 21, 2024. https://langchain-ai.github.io/langgraph/tutorials/
- Zhou, Andy, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang, and Yu-Xiong Wang. “Language Agent Tree Search Unifies Reasoning Acting and Planning in Language Models.” arXiv, December 5, 2023. https://doi.org/10.48550/arXiv.2310.04406.
- Zhou, Pei, Jay Pujara, Xiang Ren, Xinyun Chen, Heng-Tze Cheng, Quoc V. Le, Ed H. Chi, Denny Zhou, Swaroop Mishra, and Huaixiu Steven Zheng. “Self-Discover: Large Language Models Self-Compose Reasoning Structures.” arXiv, February 5, 2024. https://doi.org/10.48550/arXiv.2402.03620.