本章涵盖
定义代理的概念
区分代理的组件
分析代理时代的崛起:为什么是代理?
揭开 AI 界面的面纱
导航代理领域
代理在机器学习和人工智能(AI)中并不是一个新概念。例如,在强化学习中,代理一词表示一个主动决策和学习智能体。在其他领域,代理一词更符合自动化应用程序或软件,代表你执行某些操作。
1.1 定义代理
您可以查阅任何在线词典来查找“agent”的定义。Merriam-Webster 词典是这样定义的(www.merriam-webster.com/dictionary/agent):
一个行动或施加力量的人
能够产生或可能产生效果的东西
一种手段或工具,通过它,指导性的智慧实现结果
在我们构建强大代理的旅程中,本书中使用的“agent”一词采用了这一词典定义。这也意味着“assistant”一词将与“agent”同义。像 OpenAI 的 GPT 助手这样的工具也将归入 AI 代理的范畴。OpenAI 避免使用“agent”一词,因为在机器学习的历史中,代理是自我决策和自主的。
图 1.1 展示了用户可能与大型语言模型(LLM)直接交互或通过代理/助手代理、代理/助手或自主代理进行交互的四种情况。这四种用例在以下列表中进行了更详细的说明:
* 直接用户互动——如果你使用过早期版本的 ChatGPT,你体验过与LLM的直接互动。没有代理或其他助手代表你插话。
* 代理/助手代理——如果你通过 ChatGPT 使用过 Dall-E 3,那么你已经体验过代理交互。在这个用例中,LLM会介入你的请求,并以更适合任务的格式重新表述它们。例如,对于图像生成,ChatGPT 会更好地表述提示。代理代理是一个日常用例,用于帮助用户处理不熟悉的任务或模型。
* 代理/助手——如果你曾经使用过 ChatGPT 插件或 GPT 助手,那么你已经体验过这个用例。在这种情况下,LLM知道插件或助手的功能,并准备调用这个插件/功能。然而,在调用之前,LLM需要用户批准。如果获得批准,插件或功能将被执行,结果返回给LLM。然后,LLM将这个响应包装成自然语言并返回给用户。
* 自主代理——在这个用例中,代理解释用户的请求,构建计划,并识别决策点。由此,它执行计划中的步骤并独立做出所需的决策。代理可能会在某些里程碑任务后请求用户反馈,但通常被赋予自由探索和学习的空间(如果可能的话)。这种代理引发了最多的伦理和安全问题,我们将在后面探讨。
图 1.1 直接行动与使用代理、代理人和自主代理之间的LLM交互差异
多代理系统是各种配置下协同工作以解决问题的代理配置文件。图 1.2 展示了一个使用三个代理的多代理系统示例:一个控制器或代理以及两个由代理控制的配置文件代理作为工作者。左侧的编码器配置文件编写用户请求的代码;右侧是一个测试器配置文件,设计用于编写单元测试。这些代理协同工作并相互通信,直到对代码满意,然后将其传递给用户。
图 1.2 展示了可能无限的代理配置之一。(在第 4 章中,我们将探讨微软的开源平台 AutoGen,它支持多种配置以使用多代理系统。)
图 1.2 在这个多代理系统的示例中,控制器或代理直接与用户通信。两个代理——编码器和测试器——在后台工作,分别创建代码和编写单元测试来测试代码。
多代理系统可以自主工作,但也可以完全由人类反馈指导运行。使用多个代理的好处类似于单个代理,但通常会被放大。单个代理通常专注于单一任务,而多代理系统可以并行处理多个任务。多个代理还可以提供反馈和评估,减少完成任务时的错误。
正如我们所见,AI 代理或代理系统可以通过多种方式组装。然而,代理本身也可以使用多个组件进行组装。在下一节中,我们将涵盖从代理的配置文件到它可能执行的操作,以及记忆和规划等主题。
1.2 理解代理的组件系统
代理可以是由多个组件系统组成的复杂单元。这些组件是代理用来帮助其完成目标或分配任务甚至创建新任务的工具。组件可能是简单或复杂的系统,通常分为五类。
图 1.3 描述了一个单代理系统可能包含的主要组件类别。每个元素都有子类型,可以定义组件的类型、结构和用途。所有代理的核心是配置文件和角色;从这些核心延伸出来的是增强代理的系统和功能。
图 1.3 单代理系统的五个主要组成部分(图像通过 DALL-E 3 生成)
图 1.4 中展示的代理配置文件和角色代表了代理的基本描述。角色——通常称为系统提示——指导代理完成任务、学习如何响应以及其他细微差别。它包括背景(例如,程序员、作家)和人口统计等元素,并且可以通过手工制作、LLM辅助或数据驱动技术(包括进化算法)等方法生成。
图 1.4 深入探讨我们将如何探索创建代理配置文件
我们将探讨如何通过量表和基础技术创建有效且具体的代理配置文件/角色。此外,我们将解释人工制定与 AI 制定(LLM)配置文件的各个方面,包括使用数据和进化算法构建配置文件的创新技术。
注意 代理或助手配置文件由多个元素组成,包括角色。将配置文件视为描述代理/助手将执行的工作及其所需工具可能会有所帮助。
图 1.5 展示了在涉及任务完成或信息获取活动的代理环境中,组件操作和工具的使用。这些操作可以分为任务完成、探索和通信,对代理的环境和内部状态产生不同程度的影响。操作可以通过手动生成、记忆回忆或遵循预定义计划来产生,从而影响代理的行为并增强学习。
图 1.5 我们将在本书中探讨的代理行为的各个方面
理解行动目标有助于我们为任务完成、探索或沟通定义明确的目标。认识到行动效果揭示了行动如何影响任务结果、代理的环境及其内部状态,从而有助于高效决策。最后,掌握行动生成方法使我们具备手动创建行动、从记忆中回忆行动或遵循预定义计划的知识,增强了我们有效塑造代理行为和学习过程的能力。
图 1.6 更详细地展示了组件知识和记忆。代理使用知识和记忆来为上下文注释最相关的信息,同时限制使用的令牌数量。知识和记忆结构可以统一,其中两个子集遵循单一结构或混合结构,涉及不同检索形式的组合。知识和记忆格式可以从语言(例如 PDF 文档)到数据库(关系型、对象型或文档型)和嵌入物广泛变化,通过向量表示简化语义相似性搜索,甚至简单的列表也可以作为代理的记忆。
图 1.6 探索代理记忆和知识的作用与使用
图 1.7 展示了一个代理系统的推理和评估组件。研究和实际应用表明,LLMs/agents 能够有效地进行推理。推理和评估系统通过提供思考和评估解决方案的能力来注释代理的工作流程。
图 1.7 推理和评估组件及细节
图 1.8 展示了组件代理规划/反馈及其在组织任务以实现更高层次目标中的作用。它可以分为这两种方法:
* 没有反馈的规划——自主代理独立做出决策。
* 规划与反馈——监控和修改计划基于多种输入来源,包括环境变化和直接的人类反馈。
图 1.8 探索代理规划与推理的作用
在规划过程中,代理可以采用单一路径推理、通过任务的每个步骤进行顺序推理,或多路径推理来探索多种策略,并将高效的策略保存以备将来使用。外部规划器(可以是代码或其他代理系统)也可能在协调计划中发挥作用。
我们之前的任何代理类型——代理助手、助手或自主代理——都可能使用部分或全部这些组件。即使是规划组件在自主代理之外也有作用,并且可以有效地增强普通代理的能力。
1.3 审视代理时代的崛起:为什么是代理?
AI 代理和助手已迅速从 AI 研究的主要商品转变为主流软件开发。越来越多的工具和平台协助构建和增强代理。对于局外人来说,这一切可能看起来像是为了夸大一些酷炫但被高估的技术的价值而制造的炒作。
在 ChatGPT 最初发布的几个月里,形成了一门名为提示工程的新学科:用户发现,在提示中使用各种技术和模式可以生成更好、更一致的输出。然而,用户也意识到提示工程的作用是有限的。
提示工程仍然是直接与LLMs(如 ChatGPT)交互的绝佳方式。随着时间的推移,许多用户发现有效的提示需要迭代、反思和更多的迭代。第一个代理系统,如 AutoGPT,就是从这些发现中诞生的,并引起了社区的关注。
图 1.9 展示了 AutoGPT 的原始设计,这是最早的自主代理系统之一。该代理旨在迭代一系列计划任务,这些任务通过查看用户目标来定义。在每一步的任务迭代中,代理评估目标并确定任务是否完成。如果任务未完成,代理可能会重新规划步骤,并根据新知识或人类反馈更新计划。