AI Agents实战——agents及其世界简介

327 阅读14分钟

本章内容包括:

  • 定义代理(Agent)的概念
  • 区分代理的组成部分
  • 分析代理时代的崛起:为什么是代理?
  • 深入剖析AI界面
  • 探索代理的生态系统

代理并不是机器学习和人工智能(AI)中的新概念。例如,在强化学习中,“代理”指的是一个具备主动决策和学习能力的智能体。而在其他领域,“代理”更倾向于指代一种自动化的应用程序或软件,它可以代表用户执行某些任务。

1.1 定义代理

你可以查阅任何在线词典来找到代理的定义。《梅里亚姆-韦伯斯特词典》将其定义为:(<www.merriam-webster.com/dictionary/…

  • 执行或施加力量的主体
  • 产生或能够产生效果的事物
  • 通过某种手段或工具,指导智能体达到预期结果

在本书中,我们在构建强大代理的过程中使用了这种词典定义的“代理”概念。这也意味着“助手”一词与“代理”是同义的。像OpenAI的GPT助手这样的工具也属于AI代理的范畴。OpenAI避免使用“代理”一词,因为在机器学习的历史中,代理通常是自我决策和自主的。

图1.1展示了用户可能直接与大语言模型(LLM)或通过代理/助手代理进行交互的四种情况。这四种用例在下面的列表中做了更详细的说明:

  • 直接用户交互:如果你使用过早期版本的ChatGPT,你体验过与LLM的直接交互。在这种情况下,没有代理或其他助手代表你插话。
  • 代理/助手代理:如果你通过ChatGPT使用过Dall-E 3,你体验了代理代理交互。在这种用例中,LLM会插入你的请求,并将其重新格式化为更适合任务的格式。例如,在图像生成中,ChatGPT会更好地构造提示词。代理代理是帮助用户处理不熟悉任务或模型的常见用例。
  • 代理/助手:如果你曾使用过ChatGPT插件或GPT助手,那么你体验过这种用例。在这种情况下,LLM知道插件或助手的功能,并准备调用该插件/功能。然而,在调用之前,LLM需要用户批准。如果得到批准,插件或功能将被执行,结果将返回给LLM。然后,LLM将此响应包装成自然语言,并返回给用户。
  • 自主代理:在这种用例中,代理会解读用户的请求,制定计划,并识别决策点。从中,它会执行计划中的步骤,并独立做出所需的决策。代理可能会在某些里程碑任务后请求用户反馈,但通常会被允许自由探索和学习。这种代理带来了最多的伦理和安全问题,我们将在后面讨论。

image.png

图1.1展示了使用单一代理在LLM上执行单一操作流的用例。对于更复杂的问题,我们通常将代理分为不同的配置文件或角色(personas)。每个代理配置文件都有一个特定任务,并使用专门的工具和知识来执行该任务。

多代理系统是由多个代理配置文件组成的,它们以不同的方式协作来解决问题。图1.2展示了一个使用三种代理的多代理系统示例:一个控制器或代理,以及两个由代理控制的工作者角色。左侧的编码器角色编写用户请求的代码;右侧是一个测试器角色,旨在编写单元测试。这些代理协同工作并相互沟通,直到对代码满意为止,然后将其传递给用户。

图1.2展示了可能存在的无数代理配置中的一种。(在第4章中,我们将探讨微软的开源平台AutoGen,它支持多种配置来使用多代理系统。)

image.png

多代理系统可以自主工作,也可以完全依赖于人类反馈进行引导。使用多个代理的好处与单一代理类似,但通常会放大这些好处。单一代理通常专注于单一任务,而多代理系统可以并行处理多个任务。多个代理还可以提供反馈和评估,从而减少在完成任务时的错误。

正如我们所看到的,AI代理或代理系统可以通过多种方式组合。然而,代理本身也可以通过多个组件进行组合。在下一节中,我们将讨论从代理的配置文件到它可能执行的操作、记忆和计划等多个主题。

1.2 理解代理的组件系统

代理可以是由多个组件系统组成的复杂单元。这些组件是代理用来帮助其完成目标或指定任务,甚至创建新任务的工具。组件可以是简单的或复杂的系统,通常分为五个类别。

图1.3描述了单一代理系统可能包含的主要组件类别。每个元素将有子类型,可以定义组件的类型、结构和用途。所有代理的核心是配置文件和角色;在此基础上,是增强代理的系统和功能。

image.png

图1.4中展示的代理配置文件和角色代表了代理的基本描述。角色——通常被称为系统提示——引导代理完成任务、学习如何回应以及其他细节。它包括背景元素(例如,编码员、写作者)和人口统计信息,并且可以通过手工制作、LLM辅助或数据驱动技术(包括进化算法)等方法生成。

image.png

我们将探讨如何通过诸如评分标准和基础设定等技术来创建有效且具体的代理配置文件/角色。此外,我们还将解释人工制定与AI制定(LLM)配置文件之间的区别,包括利用数据和进化算法构建配置文件的创新技术。

:代理或助手配置文件由多个元素组成,包括角色。可以将配置文件视为描述代理/助手将执行的工作及其所需工具的方式。

图1.5展示了在代理中涉及的组件动作和工具使用,这些活动旨在完成任务或获取信息。这些动作可以分为任务完成、探索和沟通三类,它们对代理的环境和内部状态的影响程度各不相同。动作可以通过手动生成、记忆回忆或遵循预定义计划来产生,进而影响代理的行为并增强学习效果。

image.png

理解动作目标帮助我们为任务完成、探索或沟通设定明确的目标。认识到动作效果揭示了动作如何影响任务结果、代理的环境以及其内部状态,从而有助于高效的决策制定。最后,掌握动作生成方法使我们能够手动创建动作、从记忆中回忆动作,或遵循预定义的计划,增强我们有效塑造代理行为和学习过程的能力。

图1.6更详细地展示了组件知识和记忆。代理使用知识和记忆来为上下文注释最相关的信息,同时限制使用的令牌数量。知识和记忆结构可以是统一的,其中两个子集遵循相同的结构,或者是混合结构,结合了不同的检索形式。知识和记忆的格式可以有很大差异,从语言(例如PDF文档)到数据库(关系型、对象型或文档型)以及嵌入,通过向量表示简化语义相似性搜索,甚至简单的列表也可以作为代理的记忆。

image.png

图1.7展示了代理系统的推理和评估组件。研究和实际应用表明,LLM/代理可以有效地进行推理。推理和评估系统通过提供思考问题和评估解决方案的能力,为代理的工作流程注释信息。

image.png

图1.8展示了代理组件的计划/反馈及其在组织任务以实现更高层次目标中的作用。它可以分为以下两种方法:

  • 无反馈的计划:自主代理独立做出决策。
  • 有反馈的计划:基于各种输入来源(包括环境变化和直接的人工反馈)来监控和修改计划。

image.png

在计划过程中,代理可能采用单路径推理、通过任务的每一步进行的顺序推理,或多路径推理来探索多种策略,并将高效的策略保存以供未来使用。外部规划者(可以是代码或其他代理系统)也可能在协调计划中发挥作用。

我们之前提到的任何代理类型——代理/助手代理、代理/助手或自主代理——都可能使用这些组件中的某些或全部。即使是计划组件,也在自主代理之外发挥作用,并且可以有效地赋能普通代理。

1.3 探讨代理时代的崛起:为什么选择代理?

AI代理和助手迅速从AI研究中的主要商品转变为主流软件开发中的重要组成部分。不断增长的工具和平台清单正在帮助构建和赋能代理。对于外部观察者来说,这一切可能看起来像是为了抬高某些酷炫但被高估的技术的价值而制造的炒作。

在ChatGPT首次发布后的几个月里,诞生了一个新的学科——提示工程:用户发现,通过在提示中使用各种技术和模式,可以生成更好、更一致的输出。然而,用户也意识到,提示工程只能走到某个程度。

提示工程仍然是与像ChatGPT这样的LLM直接互动的一个优秀方式。随着时间的推移,许多用户发现,进行有效的提示需要反复迭代、反思以及更多的迭代。第一个代理系统,如AutoGPT,正是从这些发现中诞生,并吸引了社区的关注。

图1.9展示了AutoGPT的最初设计,AutoGPT是最早的自主代理系统之一。该代理设计用于迭代执行一系列任务步骤,这些步骤是通过观察用户的目标来定义的。在每次任务迭代的步骤中,代理会评估目标并判断任务是否完成。如果任务没有完成,代理可能会重新规划步骤,并基于新的知识或人工反馈更新计划。

image.png

AutoGPT 成为第一个展示使用任务规划和迭代与 LLM 模型结合的强大力量的例子。由此,其他代理系统和框架也快速涌入社区,采用类似的规划和任务迭代系统。普遍认为,规划、迭代和重复是解决 LLM 复杂多面的目标的最佳过程。

然而,自主代理系统需要信任代理决策过程、评估系统和目标定义。信任也是一个随着时间积累的过程。我们缺乏信任的原因是我们对自主代理的能力缺乏了解。


人工通用智能(AGI)是一种能够学习完成任何人类能做的任务的智能形式。在这个新的 AI 领域,许多从业者认为使用自主代理系统的 AGI 是一个可以实现的目标。

因此,许多主流且适用于生产环境的代理工具并不是自主的。然而,它们仍然在使用 GPT(LLM)来管理和自动化任务方面提供了显著的优势。因此,本书的目标是理解所有代理形式,更多的实际应用将由非自主代理驱动。

代理和代理工具仅是新软件应用开发范式的顶层。我们将在下一节讨论这个新范式。

1.4 揭开 AI 界面的面纱

AI 代理范式不仅是我们与 LLM 合作方式的转变,还被认为是我们开发软件和处理数据方式的转变。软件和数据将不再通过用户界面(UI)、应用程序接口(API)和专业查询语言(如 SQL)进行交互。相反,它们将设计成可以通过自然语言进行交互。

图 1.10 展示了这种新架构的高层次快照,以及 AI 代理在其中的角色。数据、软件和应用程序将适应支持语义自然语言接口。这些 AI 接口允许代理收集数据并与软件应用程序进行交互,甚至与其他代理或代理应用程序进行交互。这代表了我们与软件和应用程序交互方式的新转变。

image.png

AI 接口是一个集合,包括功能、工具和数据层,通过自然语言暴露数据和应用程序。在过去,“语义”这个词常被用来描述这些接口,甚至一些工具也使用这个名称;然而,“语义”也有多种不同的含义和用途。因此,在本书中,我们将使用“AI 接口”这一术语。

AI 接口的构建将赋能需要消费服务、工具和数据的代理。随着这一赋能,完成任务的准确性将提高,应用程序也将变得更加可靠和自主。尽管 AI 接口可能不适用于所有软件和数据,但它将在许多用例中占主导地位。

1.5 导航代理生态

GPT 代理代表了消费者和开发人员在从查找信息到构建软件、访问数据等方面的全面转变。几乎每天,新的代理框架、组件或接口都会出现在 GitHub 或研究论文中。这对于试图理解代理系统是什么以及如何使用它们的新用户来说,可能是令人不知所措且令人畏惧的。

总结

  • 代理人(Agent) 是一个能行动或施加力量、产生效果,或作为实现结果的手段的实体。代理人通过自动化与大型语言模型(LLM)进行交互。

  • 助手(Assistant) 与代理人是同义词。两者都涵盖了像 OpenAI 的 GPT 助手这样的工具。

  • 自主代理人(Autonomous agent) 能够独立做出决策,它们与非自主代理人的区别非常重要。

  • LLM 交互的四种主要类型包括:

    • 直接用户交互
    • 代理人/助手代理
    • 代理人/助手
    • 自主代理人
  • 多代理系统(Multi-agent systems) 涉及多个代理人档案共同工作,通常由代理控制,以完成复杂任务。

  • 代理人的主要组成部分包括:

    • 个人档案/人格(Profile/persona)
    • 行为(Actions)
    • 知识/记忆(Knowledge/memory)
    • 推理/评估(Reasoning/evaluation)
    • 规划/反馈(Planning/feedback)
  • 代理人的个人档案和人格 引导代理人的任务、反应和其他细微差别,通常包括背景和人口统计信息。

  • 代理人的行为和工具 可以手动生成、从记忆中回忆,或遵循预定义的计划。

  • 代理人使用 知识和记忆结构 来优化上下文,并通过各种格式(如文档、嵌入等)最小化令牌的使用。

  • 推理和评估系统 使代理人能够分析问题并评估解决方案,使用零-shot、one-shot 和 few-shot 等提示模式。

  • 规划/反馈组件 组织任务以实现目标,使用单路径或多路径推理,并整合环境和人工反馈。

  • AI 代理人 的崛起引入了一种新的软件开发范式,从传统的开发方式转向基于自然语言的 AI 接口。

  • 了解这些工具的进展和交互有助于开发代理人系统,无论是单一代理人、多代理人还是自主代理人。