文章目录

    • Agent是什么?
      • 最直观的公式
      • Agent决策流程
    • Agent 大爆发
    • 人是如何做事的?
    • 如何让LLM替代人去做事?
    • 来自斯坦福的虚拟小镇
      • 架构
      • 记忆(Memory)
      • 反思(Reflection)
      • 计划(Plan)
    • 类 LangChain 中的各种概念
    • Agent落地的瓶颈
    • Agent从专用到通用的实现路径
    • 多模态在Agent的发展
    • Agent新的共识正在逐渐形成
    • 出门问问:希望做通用的Agent
    • HF:Transformers Agents 发布
    • 参考引用

Agent是什么?

Agent一词起源于拉丁语中的Agere,意思是“to do”。在LLM语境下,Agent可以理解为在某种能自主理解、规划决策、执行复杂任务的智能体

Agent并非ChatGPT升级版,它不仅告诉你“如何做”,更会帮你去做。如果Copilot是副驾驶,那么Agent就是主驾驶。

自主Agent是由人工智能驱动的程序,当给定目标时,它们能够自己创建任务、完成任务、创建新任务、重新确定任务列表的优先级、完成新的顶级任务,并循环直到达到目标。

最直观的公式

Agent = LLM+Planning+Feedback+Tool use

Agent决策流程

感知(Perception)→ 规划(Planning)→ 行动(Action)

  • 感知(Perception)是指Agent从环境中收集信息并从中提取相关知识的能力。
  • 规划(Planning)是指Agent为了某一目标而作出的决策过程。
  • 行动(Action)是指基于环境和规划做出的动作。
    Agent通过感知从环境中收集信息并提取相关知识。然后通过规划为了达到某个目标做出决策。最后,通过行动基于环境和规划做出具体的动作。Policy是Agent做出行动的核心决策,而行动又为进一步感知提供了观察的前提和基础,形成了一个自主的闭环学习过程。

Agent 大爆发

  • 3月21日,Camel发布。
  • 3月30日,AutoGPT发布。
  • 4月3日,BabyAGI发布。
  • 4月7日,西部世界小镇发布。
  • 5月27日,英伟达AI智能体Voyager接入GPT-4后,直接完胜了AutoGPT。通过自主写代码,它完全独霸了《我的世界》,可以在游戏中进行全场景的终身学习,根本无需人类插手。
  • 就在同一时间,商汤、清华等共同提出了通才AI智能体 Ghost in the Minecraft (GITM),它同样能够通过自主学习解决任务,表现优异。这些表现优异的AI智能体,简直让人看到了AGI+智能体的雏形。

Agent 是让 LLM 具备目标实现的能力,并通过自我激励循环来实现这个目标。
它可以是并行的(同时使用多个提示,试图解决同一个目标)和单向的(无需人类参与对话)。

为Agent创建一个目标或主任务后,主要分为以下三个步骤:

  1. 获取第一个未完成的任务
  2. 收集中间结果并储存到向量数据库中
  3. 创建新的任务,并重新设置任务列表的优先级

让我们一起来看一个具体的例子。我们可以从一个任务开始,例如”编写一篇关于ChatGPT以及它能做什么的1500字博客”。
模型接收这个要求,并按照以下步骤执行操作:

sub_tasks = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "system", "content": "You are an world class assistant designed to help people accomplish tasks"},{"role": "user", "content": "Create a 1500 word blog post on ChatGPT and what it can do"},{"role": "user", "content": "Take the users request above and break it down into simple sub-tasks which can be easily done."}])

在这个例子中,我们使用OpenAI API来驱动 Agent。通过 system 字段,你可以在一定程度上定义你的Agent。然后,我们添加 user content Create a 1500 word blog post on ChatGPT and what it can do,以及下一步骤 Take the users request above and break it down into simple sub-tasks which can be easily done.,也就是在此基础上添加任务,将查询分解成子任务。
然后,你可以获取子任务,并在循环中向模型发送更多的调用,执行所有这些子任务,每个子任务都有不同的系统消息(想象成不同的Agent,可能是一个擅长写作的Agent,一个擅长学术研究的Agent等)。
接下来,你可以向模型循环发送更多的调用,执行每个子任务。每个子任务都可以有不同的系统消息,你可以想象这些系统消息代表了不同领域的专家,例如一个擅长写作的专家、一个擅长学术研究的专家等等。这样,你可以让模型在不同的角色下进行思考和响应,从而更好地满足用户的需求。

人是如何做事的?

在工作中,我们通常会用到PDCA思维模型。基于PDCA模型,我们可以将完成一项任务进行拆解,按照作出计划、计划实施、检查实施效果,然后将成功的纳入标准,不成功的留待下一循环去解决。目前,这是人们高效完成一项任务非常成功的经验总结。

如何让LLM替代人去做事” />

来自斯坦福的虚拟小镇

  • Generative Agents: Interactive Simulacra of Human Behavior, 2023.04, Stanford
  • 代码已开源:https://github.com/joonspk-research/generative_agents
    虚拟小镇,一个agent就是一个虚拟人物,25个agents之间的故事。

架构

记忆(Memory)

  • 短期记忆:在上下文中(prompt)学习。它是短暂且有限的,因为它受到Transformer的上下文窗口长度的限制。
  • 长期记忆:代理在查询时可以注意到的外部向量存储,可以通过快速检索访问。

反思(Reflection)

反思是由代理生成的更高级别、更抽象的思考。因为反思也是一种记忆,所以在检索时,它们会与其他观察结果一起被包含在内。反思是周期性生成的;当代理感知到的最新事件的重要性评分之和超过一定阈值时,就会生成反思。

  • 让代理确定要反思什么
  • 生成的问题作为检索的查询

计划(Plan)

计划是为了做更长时间的规划。像反思一样,计划也被储存在记忆流中(第三种记忆),并被包含在检索过程中。这使得代理能够在决定如何行动时,同时考虑观察、反思和计划。如果需要,代理可能在中途改变他们的计划(即响应,reacting)。

类 LangChain 中的各种概念

  • Models:也就是我们熟悉的调用大模型API。
  • Prompt Templates:在提示词中引入变量以适应用户输入的提示模版。
  • Chains:对模型的链式调用,以上一个输出为下一个输入的一部分。
  • Agent:能自主执行链式调用,以及访问外部工具。
  • Multi-Agent:多个Agent共享一部分记忆,自主分工相互协作。

Agent落地的瓶颈

Agent本身用到两部分能力,一部分是由LLM作为其“智商”或“大脑”的部分,另一部分是基于LLM,其外部需要有一个控制器,由它去完成各种Prompt,如通过检索增强Memory,从环境获得Feedback,怎样做Reflection等。

Agent既需要大脑,也要外部支撑。

  • LLM本身的问题:自身的“智商”不够,可进行LLM升级为GPT-5;Prompt的方式不对,问题要无歧义。
  • 外部工具:系统化程度不够,需要调用外部的工具系统,这是一个长期待解决的问题。

现阶段Agent的落地,除了LLM本身足够通用之外,也需要实现一个通用的外部逻辑框架。不只是“智商”问题,还需要如何借助外部工具,从专用抵达通用——而这是更重要的问题。

解决特定场景的特定问题——将LLM作为一个通用大脑,通过Prompt设计为不同的角色,以完成专用的任务,而非普适性的应用。关键问题,即Feedback将成为Agent落地实现的一大制约因素,对于复杂的Tools应用,成功概率会很低。

Agent从专用到通用的实现路径

假设Agent最终将落地于100种不同的环境,在目前连最简单的外部应用都难以实现的前提下,最终能否抽象出一个框架模型来解决所有外部通用性问题?

先将某一场景下的Agent做到极致——足够稳定且鲁棒,再逐步将它变成通用框架,也许这是实现通用Agent的路径之一。

多模态在Agent的发展

  • 多模态只能解决Agent感知上的问题,而无法解决认知的问题。
  • 多模态是必然趋势,未来的大模型必然是多模态的大模型,未来的Agent也一定是多模态世界中的Agent。

Agent新的共识正在逐渐形成

  • Agent需要调用外部工具
  • 调用工具的方式就是输出代码

由LLM大脑输出一种可执行的代码,像是一个语义分析器,由它理解每句话的含义,然后将其转换成一种机器指令,再去调用外部的工具来执行或生成答案。尽管现在的 Function Call 形式还有待改进,但是这种调用工具的方式是非常必要的,是解决幻觉问题的最彻底的手段。

出门问问:希望做通用的Agent

在中国的市场环境下,如果做一个与企业深度结合的Agent,最终将成为“外包”,因为它需要私有化部署,集成到企业工作流里。很多公司都会去争抢保险公司、银行、汽车领域的大客户。这将与上一代AI公司的结局非常相似,边际成本很难降低,且没有通用性。出门问问目前的魔音工坊、奇妙文等AIGC产品都属于面向内容创作者的、介于深度和浅度之间的应用,既不完全属于consumer,也不完全属于enterprise,同时还有面向企业用户的CoPilot,其定位也是在企业里找到具体的「场景」,做相对通用的场景应用。

HF:Transformers Agents 发布

通过自然语言控制超过十多万个 HF 模型!

Transformers Agents,并加入到了 Transformers 4.29 之后的版本中。它在 Transformers 的基础上提供了一个自然语言 API,来 “让 Transformers 可以做任何事情”。

这其中有两个概念:一个是 Agent (代理),另一个是 Tools (工具),我们定义了一系列默认的工具,让代理去理解自然语言并使用这些工具。

  • 代理:这里指的是大语言模型 (LLM),你可以选择使用 OpenAI 的模型 (需要提供密钥),或者开源的 StarCoder 和 OpenAssistant 的模型,我们会提示让代理去访问一组特定的工具。
  • 工具:指的是一个个单一的功能,我们定义了一系列工具,然后使用这些工具的描述来提示代理,并展示它将如何利用工具来执行查询中请求的内容。

我们在 transformers 中集成的工具 包括:文档问答、文本问答、图片配文、图片问答、图像分割、语音转文本、文本转语音、零样本文本分类、文本摘要、翻译等。不过你也可以扩展这些一些与 transformers 无关的工具,比如从网络读取文本等,查看如何开发自定义工具

未来是Agent的世界,在今天的Agent进程下,依然重复昨天AI的故事,私有化部署将面临挑战。

参考引用

  • 大模型下半场,关于Agent的几个疑问
  • babyagi
  • Agent:OpenAI的下一步,亚马逊云科技站在第5层