本章内容概览
- 定义代理的概念
- 区分代理的各组成部分
- 分析代理时代的崛起:为何选择代理?
- 揭开AI接口的面纱
- 探索代理的生态环境
代理并非机器学习和人工智能(AI)中的新概念。例如,在强化学习中,“代理”一词指的是具有主动决策和学习能力的智能体。在其他领域,“代理”更倾向于指代代表你执行某些操作的自动化应用或软件。
1.1 代理定义
你可以查阅任何在线词典获得“代理”一词的定义。梅里亚姆-韦伯斯特词典(Merriam-Webster)对代理的定义如下(来源:www.merriam-webster.com/dictionary/…
- 执行动作或行使权力者
- 产生或能够产生某种效果的事物
- 引导智能通过某种手段或工具实现结果的方式
本书中构建强大代理的旅程即基于这一词典定义。这也意味着“助理”(assistant)一词可视为代理的同义词。像OpenAI的GPT助理类工具,也归属于AI代理的范畴。OpenAI避免使用“代理”一词,是因为机器学习领域的历史中,“代理”往往意味着自我决策和自主行为的智能体。
图1.1展示了用户可能直接与大型语言模型(LLM)交互,或通过代理/助理代理、代理/助理,乃至自主代理进行交互的四种情形。以下对这四种用例进行详细说明:
- 直接用户交互 — 如果你使用过早期版本的ChatGPT,就体验过这种模式。此时没有代理或助理代理代为介入,用户直接与LLM交互。
- 代理/助理代理(Proxy agent/assistant) — 如果你通过ChatGPT使用过Dall-E 3,则经历过代理代理交互。在此用例中,LLM会介入你的请求,将其重新格式化为更适合任务的形式。例如,生成图像时,ChatGPT会优化提示词。代理代理是帮助用户应对不熟悉任务或模型的常见用例。
- 代理/助理 — 如果你曾使用过ChatGPT插件或GPT助理,即为此用例。此时LLM了解插件或助理功能,并准备调用它们。在调用之前,LLM需获得用户批准;获批后执行插件或功能,并将结果返回给LLM,LLM再以自然语言形式反馈给用户。
- 自主代理 — 在此用例中,代理会解析用户请求、构建执行计划并识别决策点。随后独立执行计划中的步骤并做出相应决策。代理可能在关键任务后请求用户反馈,但通常被赋予自由探索和学习的权限。该类代理带来最多的伦理和安全问题,后续章节将深入探讨。
图 1.1 展示了使用单一代理在大语言模型(LLM)上进行单条动作流程的应用场景。对于更复杂的问题,我们通常会将代理拆分成多个角色或人物设定(persona)。每个代理角色被赋予特定任务,并利用专业的工具和知识来执行该任务。
多代理系统是指多个代理角色以不同的组合方式协同工作,共同解决问题。图 1.2 展示了一个多代理系统的示例,包含三个代理:一个控制器或代理(proxy),以及由该代理控制的两个角色代理作为执行者。左侧的编码者角色负责编写用户请求的代码;右侧的测试者角色负责编写单元测试。这些代理共同工作和沟通,直到对代码满意,然后将成果交给用户。
图 1.2 仅展示了多代理系统中可能存在的无限多种配置之一。(第 4 章中,我们将深入探讨微软的开源平台 AutoGen,该平台支持多种多代理系统的配置方式。)
图 1.2 展示了一个多代理系统的示例,其中控制器或代理代理(agent proxy)直接与用户沟通。两个代理——编码者和测试者——在后台协同工作,负责编写代码和编写单元测试来测试代码。
多代理系统可以自主运行,也可以完全依赖人类反馈进行引导。使用多代理的好处类似于单一代理,但往往更为显著。单一代理通常专注于单一任务,而多代理系统能够并行处理多个任务。多个代理还能相互提供反馈和评估,降低完成任务时的错误率。
正如我们所见,AI代理或代理系统可以通过多种方式组装。然而,一个代理本身也可以由多个组件构成。接下来一节,我们将介绍从代理的角色设定、可执行动作,到记忆与规划等相关主题。
1.2 理解代理的组成系统
代理可以是由多个组成系统构成的复杂单元。这些组成部分是代理用来帮助完成其目标或分配任务,甚至创造新任务的工具。组件可以是简单的也可以是复杂的系统,通常分为五大类。
图 1.3 描述了单代理系统可能包含的主要组件类别。每个元素下还会有细分类型,用于定义组件的类别、结构及用途。在所有代理的核心,是其角色设定(profile)和人物设定(persona);从这两者延伸出来的是增强代理功能的各类系统和功能。
图 1.4 所示的代理角色设定(agent profile)和人物设定(persona)代表了代理的基础描述。人物设定——通常称为系统提示(system prompt)——引导代理完成任务、学习如何回应及处理其他细节。它包括背景信息(例如,编码者、作家)和人口属性等元素,且可以通过多种方式生成,如手工设计、利用大语言模型辅助,或基于数据驱动的方法,包括进化算法。
我们将探讨如何通过评分标准(rubrics)和基础设定(grounding)等技术,创建有效且具体的代理角色设定/人物设定。此外,我们还将解释人类制定的角色设定与由人工智能(大语言模型,LLM)生成的角色设定之间的区别,包括利用数据和进化算法构建角色设定的创新技术。
注释
代理或助手的角色设定由多个元素组成,其中包括人物设定。将角色设定理解为描述代理/助手将执行的工作内容及其所需工具,可能会更有帮助。
图 1.5 展示了代理在完成任务或获取信息过程中所涉及的动作组件和工具使用。这些动作可分为任务完成、探索和沟通三类,且对代理的环境和内部状态产生不同程度的影响。动作可以通过手动生成、记忆回忆或遵循预定义计划来产生,从而影响代理的行为并促进学习的提升。
理解动作目标有助于我们为任务完成、探索或沟通定义清晰的目标。认识动作效果则揭示了动作如何影响任务结果、代理的环境以及其内部状态,从而促进高效的决策制定。最后,掌握动作生成方法让我们具备了手动创建动作、从记忆中调用动作或遵循预定义计划的能力,增强了有效塑造代理行为和学习过程的能力。
图 1.6 更详细地展示了组成知识和记忆的部分。代理利用知识和记忆在上下文中注释最相关的信息,同时限制使用的 token 数量。知识和记忆结构可以是统一的,即两者遵循单一结构,也可以是混合结构,结合不同的检索形式。知识和记忆的格式多种多样,从语言类(如 PDF 文档)到数据库(关系型、对象型或文档型)及向量嵌入,借助向量表示简化语义相似度搜索,甚至通过简单的列表充当代理的记忆。
图 1.7 展示了代理系统中的推理与评估组件。研究和实际应用表明,大语言模型(LLM)及代理能够高效地进行推理。推理与评估系统通过赋予代理思考问题和评估解决方案的能力,为代理的工作流程提供注释和支持。
图 1.8 展示了代理规划/反馈组件及其在组织任务以实现更高层次目标中的作用。该组件可分为以下两种方式:
无反馈规划——自主代理独立做出决策。
有反馈规划——基于多种输入来源(包括环境变化和直接的人类反馈)对规划进行监控和调整。
在规划过程中,代理可能采用单路径推理,即顺序地通过任务的每一步进行推理;也可能采用多路径推理,探索多种策略并将高效的策略保存以备将来使用。外部规划者(可以是代码或其他代理系统)也可能在协调计划中发挥作用。
我们之前提到的任何代理类型——代理代理/助手、代理/助手或自主代理——都可能使用部分或全部这些组件。即使是规划组件,也不仅仅局限于自主代理,它同样能有效赋能普通代理。
1.3 探究代理时代的崛起:为什么选择代理?
AI代理和助手已经迅速从人工智能研究中的主要热点,转变为主流的软件开发领域。越来越多的工具和平台支持代理的构建和能力提升。对于外部观察者来说,这一切或许看起来像是一场炒作,旨在夸大某些炫酷但可能被高估的技术的价值。
在ChatGPT首次发布后的最初几个月,一门名为“提示工程”(prompt engineering)的新兴学科诞生了:用户发现通过在提示中使用各种技巧和模式,可以生成更好且更稳定的输出。然而,用户也意识到提示工程的效果是有限的。
提示工程仍然是直接与诸如ChatGPT这类大语言模型交互的优秀方法。随着时间推移,许多用户发现有效的提示需要反复迭代和反思。基于这些发现,第一批代理系统如AutoGPT应运而生,迅速吸引了社区的关注。
图 1.9 展示了AutoGPT的原始设计——这是最早的自主代理系统之一。该代理设计用于迭代执行一系列规划好的任务,这些任务是通过分析用户目标自主定义的。通过每一次任务的步骤迭代,代理会评估目标并判断任务是否完成。如果任务未完成,代理可能重新规划步骤,并基于新知识或人类反馈更新计划。
AutoGPT 成为首个展示结合任务规划与迭代能力应用于大语言模型(LLM)的示例。随后,其他采用类似规划与任务迭代系统的代理系统和框架也迅速涌入社区。普遍认可的是,规划、迭代和重复是解决复杂多面目标的最佳方法。
然而,自主代理系统需要对代理的决策过程、护栏/评估系统以及目标定义建立信任。信任是随着时间积累而获得的。我们缺乏信任的原因在于对自主代理能力的不了解。
注释
通用人工智能(AGI)是一种能够学习完成任何人类能完成任务的智能形态。许多AI领域的实践者认为,基于自主代理系统的AGI是一个可实现的目标。
因此,许多主流且已具备生产条件的代理工具并非自主型,但它们依然在使用GPT(LLM)管理和自动化任务方面带来了显著优势。鉴于本书旨在理解所有代理形态,更多实用的应用将由非自主代理驱动。
代理和代理工具仅是新型软件应用开发范式的最顶层。我们将在下一节探讨这一新范式。
1.4 揭开 AI 界面的面纱
AI 代理范式不仅是我们与大语言模型交互方式的转变,也被视为软件开发和数据处理方式的变革。软件和数据将不再通过用户界面(UI)、应用程序编程接口(API)或专门的查询语言如 SQL 进行交互,而是设计为通过自然语言进行接口对接。
图 1.10 展示了这一新架构的高层次概览,以及 AI 代理在其中扮演的角色。数据、软件和应用将适应支持语义化的自然语言接口。这些 AI 界面使代理能够收集数据、与软件应用乃至其他代理或代理应用交互,代表了我们与软件和应用交互方式的全新转变。
AI界面是一组通过自然语言开放数据和应用的函数、工具与数据层的集合。过去,“语义”(semantic)一词被广泛用于描述这些界面,甚至一些工具也沿用此名称;但“语义”本身含义多样且应用广泛。因此,本书中我们统一使用“AI界面”这一术语。
AI界面的构建将赋能那些需要调用服务、工具和数据的代理。这种赋能将提升完成任务的准确性,并促进更可信、更自主的应用出现。尽管AI界面并不适用于所有软件和数据,但它将在许多使用场景中占据主导地位。
1.5 了解代理生态
GPT代理代表了消费者和开发者处理信息检索、软件构建及数据访问方式的全面变革。几乎每天都会有新的代理框架、组件或接口出现在GitHub或研究论文中。这对于刚接触代理系统、试图理解其概念与使用方法的新手来说,既令人应接不暇又感到压力巨大。
总结
- 代理是能够执行动作、施加影响或作为达成目标手段的实体。在AI中,代理自动化地与大语言模型(LLM)交互。
- 助手(assistant)与代理同义,二者涵盖了如OpenAI的GPT助手等工具。
- 自主代理能独立决策,其与非自主代理的区别尤为重要。
- LLM交互主要包括四种类型:直接用户交互、代理/助手代理(proxy)、代理/助手、以及自主代理。
- 多代理系统由多个代理角色协同工作,通常由代理代理(proxy)控制,以完成复杂任务。
- 代理的主要组成包括角色设定/人物设定、动作、知识/记忆、推理/评估,以及规划/反馈。
- 代理的角色设定和人物设定指导任务执行、回应方式及细节,通常涵盖背景和人口属性。
- 代理的动作和工具可通过手动生成、记忆调用或遵循预定义计划实现。
- 代理利用多样的知识和记忆结构,优化上下文信息并最小化token使用,涵盖文档到向量嵌入等格式。
- 推理与评估系统使代理能够通过提示模式(如零样本、单样本和少样本)进行问题分析和解决方案评估。
- 规划/反馈组件通过单路径或多路径推理,并结合环境和人类反馈,组织任务以达成目标。
- AI代理的兴起引入了新的软件开发范式,传统交互正向基于自然语言的AI界面转变。
- 理解这些工具的发展和交互,有助于构建单代理、多代理及自主代理系统。