一文看懂什么是智能体(AI Agent)
智能体是现代科技产物,具备学习、推理、决策和执行等能力,源于多个学科理论。其发展受亚里士多德等哲学家思想影响,冯诺依曼、维纳和香农等理论为其提供基础。智能体展现独特行动能力,具备多方面特质,如学习、行动、自主性和响应性等。其组成包括感知观测、记忆检索、推理规划和行动执行单元,协同工作以实现目标。随着大型语言模型技术发展,智能体应用广泛,未来有望实现高度自主化,为人类生活带来更多便利。
本文介绍智能体的起源、定义、特征、组成单元,适用的工作,最后面像开发者介绍一些Agent实践开源框架。
为什么会出现智能体?
随着大模型时代的到来,人工智能技术成了热门话题,各种基于大模型的平台层出不穷,提供给广大用户基本的对话、图片生成、视频或者语音生成,大大提高了人们工作中的效率。
然而,这些平台现今大家大多数都是临时遇到什么问题或者什么碎片的小事情,会用到大模型的推理能力,大众接触到的所谓的人工智能技术可能基本局限于此,比如查询下某个知识点,编写某个代码函数,但是很难解决某此只能人类才好完成的系统性的工作,比如开发一个软件或者发行一本书。因为要达到这个目标,里面的事项会比较多,无法用几次大模型对话完成。即使是由人来做,也往往不是一个人能完成的。
比如我们要做一个调研报告,一般是流程是这样的:
于是研究人工智能的这群高等人类,研究设定出一种人工智能的概念——智能体,用于解决特定领域工作任务的Agent(代理,就是替代人类工作的东西),解放人类为完成某项任务繁锁的工作内内容:
智能体的定义
学术界和工业界对术语“智能体”提出了各种定义。大致来说,一个智能体应具备类似人类的思考和规划能力,拥有记忆甚至情感,并具备一定的技能以便与环境、智能体和人类进行交互,能完成特定的任务内容。
在本AI全书看来,可以将智能体想象成环境中的数字人,其中
智能体 = 大语言模型(LLM) + 观察 + 思考 + 行动 + 记忆
这个公式概括了智能体的功能本质。为了理解每个组成部分,让我们将其与人类进行类比:
大语言模型(LLM):LLM作为智能体的“大脑”部分,使其能够处理信息,从交互中学习,做出决策并执行行动。
观察和感知:这是智能体的感知机制,使其能够感知其环境。智能体可能会接收来自另一个智能体的文本消息、来自监视摄像头的视觉数据或来自客户服务录音的音频等一系列信号。这些观察构成了所有后续行动的基础。
推理思考:思考过程涉及分析观察结果和记忆内容并考虑可能的行动。这是智能体内部的决策过程,其可能由LLM进行驱动。
行动执行:这些是智能体对其思考和观察的显式响应。行动可以是利用 LLM 生成代码,或是手动预定义的操作,如阅读本地文件。此外,智能体还可以执行使用工具的操作,包括在互联网上搜索天气,使用计算器进行数学计算等。
记忆和检索:智能体的记忆存储过去的经验。这对学习至关重要,因为它允许智能体参考先前的结果并据此调整未来的行动。
智能体的特征
智能体 (Agents) 特别强调其学习能力和行动能力。学习能力是智能的一个关键指标,也是智能体的基本要求之一;构建学习的智能体 (Learning Agents),使其能够在最初未知的环境中运行,通过与环境交互持续学习迭代使其使其知识技能得以提升,决策能力不断增强。另外智能体的行动能力使得它们能够通过感知、决策、行动来与环境进行交互不断迭代学习实现给定的目标。在人工智能领域,智能体可以指代具有自主性和智能的程序或系统,也能够通过感知、规划、决策并执行相关任务。这些智能体可以用于解决各种问题,如自动驾驶、自然语言处理和游戏。这些智能体可以是虚拟的,例如软件程序,也可以是物理的,如机器人。
除了前面强调的自主和行动能力外,智能体还具备其它的特征。比如Wooldridge (1994) 提到智能体的一些特征包括:
自主性:智能体能够在无需外部干预的情况下独立运作,并对自身的行为和状态拥有一定程度的控制力。
响应性:智能体能够感知其所处的环境变化,并迅速做出反应,无论是物理世界、用户界面、其他智能实体还是互联网。
主动性:智能体不仅限于对环境变化的被动反应,它们还能通过主动采取行动来展现目标导向的行为。
社会性:智能体能够通过特定的通信方式与其他智能实体或人类进行交流和互动。
随着大型语言模型(LLM)等AI技术的进步,人们对智能实体的期望日益提高。现代智能实体不仅要具备上述特性,还应拥有更高层次的自主性,能够独立地学习和执行任务。此外,智能实体也被视作一种由人类设计和实现的系统,它们被赋予了知识、信念、理性、意图和责任感等人类特质。
为了更系统地探讨智能实体,我们首先从较为狭窄的角度进行定义:智能实体是一种计算机系统,它能够根据预设的目标在一定范围内自主地实现目标。我们可以参考自动驾驶汽车的分级制度,从基础到高级逐步构建智能实体,以实现更高级别的自主性。同时,对智能实体进行分级管理,不仅可以有效应对潜在风险,还能最大限度地发挥其应用价值。
智能体的工作环境
1、环境
智能体离不开其工作环境。智能体的环境是其需要影响和适应的外在因素,它是智能体的控制对象。智能体通过与环境交互来观察感知、规划决策和行动执行等与环境形成反馈闭环以实现其目标。智能体通过观测感知单元 (Sensor) 感知环境然后通过执行行动单元(Actuator)作用于环境来与环境交互来实现其预设的目标。在这个智能体系统中,环境是智能体知识的来源也是其作用的对象;智能体通过观察感知环境的状态,结合智能体内置的知识形成某种策略并作用于环境,从而优化其效用或收益,通过不断迭代实现其目标。智能体的工作环境可以是物理环境也可以是虚拟环境。
比如对于自动驾驶智能体,它面对的工作环境元素包括道路、其它交通工具、警察、行人、乘客和天气等。这些因素在交通管理和安全中起着重要的作用。
2、环境的特性
在实际应用中,智能体的工作环境往往不是一成不变的,也有一定的不确定性。
不确定性(Nondeterminism)
如果环境的下一个状态完全由当前状态和智能体执行的动作决定,那么我们称这个环境是确定性的(Deterministic);否则,它是非确定性的。大多数现实情况都如此复杂,以至于智能体不可能跟踪所有未能观察到的环境状态;在这种情况下,它们被视为非确定性的。这是因为在真实的情境中,有太多未知的变量和因素,使得无法精确地预测下一个状态。因此,在处理这些情况时,通常会将环境视为非确定性的,以考虑一些不确定性因素。
如果环境的模型的不确定性明确涉及概率(例如,“明天下雨的概率为25%”),则该模型是随机的 (Stochastic),而如果只列出可能性而没有量化(例如,“明天有可能下雨”),则是非确定性的。
动态性(Dynamics)
智能体在进行规划时环境的状态往往会随时间的推移而发生变化,那么该智能体的环境是动态的(Dynamic);否则,环境是静态的。虽然静态环境更易于处理,因为智能体在决定行动时无需不断地观察世界,也无需担心时间的流逝,但大多实际应用中环境是动态的。自动驾驶智能体的环境显然是动态的。
智能体应对动态的或不确定的环境,可能需要不断地获得状态的反馈,通过推断了解环境状态及其变化,可以及时地做出合适的行动决策并反馈作用于环境。
智能体关键组成单元
智能体本身包括感知观测单元 (Sensor)、记忆检索单元(Memory)、推理规划单元(Planner) 和行动执行单元(Actuator)。
1、观测和感知
智能体通过感知单元来观测其环境,确定环境的相关状态和变化,作为规划学习决策的信息来源。智能体通过各种感知设备获得不同的环境状态信息,而其感知空间包括多种感官模式的多模态信息,如文本、声音、视觉、触觉、嗅觉等。智能体利用其感知历史序列,即其曾经感知到环境状态的完整历史记录,结合其内置的知识,通过缜密的规划形成其行动决策。
理想的情况是环境的可观测的(Observable),即智能体的感知器在每个时间点都能够观察到环境的完整状态;实际上如果感知器检测到与行动选择相关的所有方面,那么任务环境就可以被有效地认为是可观察的。可观察的环境非常便利,这样智能体可以通过观察环境的完整状态来决定如何行动,而不需要额外的信息或内部状态来帮助它做出决策。这使得任务的执行和决策更加简单和直接。
如果一个环境是不可观察或部分可观察的,因为感知的环境状态可能会存在噪声和不准确性,或者环境状态的某些部分根本没有包含在感知器数据中,智能体可能需要借助额外的其它信息或维护内部状态来了解环境。
2、记忆和检索
智能体基于相关的信息,包括相关的内置知识和历史记忆,产生行动策略。智能体需要借助有效的存储机制来记忆和检索其内置知识和经验记忆:
2.1 内置知识:
智能体根据其应用场景,往往内置一定的知识;主要包括以下几类知识:
语言:如果智能体的交流介质是自然语言,则语言知识定义语法,它涵盖了语言学、句法学、语义学和语用学等多方面语言规范。只有具备语言知识,智能体才能理解并进行对话交流。此外,当代语言模型可以让智能体获得多种语言的知识,这样可消除额外的翻译需求。
常识:常识知识通常是指大多数人类具备的一般世界事实。例如,人们通常知道药物用于治疗疾病,伞用于防雨。这些信息可能在智能体交流的上下文中没有明确被提及。如果不具备相应的常识知识,智能体可能会做出错误的决策,比如在大雨天不带伞。
领域:专业领域知识是指与特定应用领域和场景相关的知识,如数学、化学、医学、编程、法律、金融、行业、人事、销售等。智能体在特定领域内有效解决问题需要具备一定的专业领域知识。例如,旨在执行编程任务的智能体需要具备编程知识,如编程语言的代码格式。同样,用于诊断目的的智能体应该具备相应医学知识,比如特定疾病的名称和处方药物。
这些知识可能以参数的形式存储在某个模型中,或经过处理后存储在知识库中,便于需要时检索。另外,知识可以以多种形式存储在记忆中,比如自然语言文本、嵌入 (Embeddings) 以及数据库 (Databases) 等,每种形式都具有独特的优势。例如,自然语言可以保留全面的语义信息,便于应用于推理;而嵌入可以提高记忆读取的效率。
2.2 历史记忆:
在智能体系统中,历史记忆记录存储了智能体过去的观测、思考和行动的经验序列。特别是智能体通过行动来激发环境或其它方式来探索观测感知环境获得环境状态的相关信息,此外还要从它的内置知识和历史记忆中思考学习。智能体依赖记忆机制来获取先前的经验以有效地制定行动策略和决策。当面临类似问题时,记忆机制有助于智能体有效地应用之前的策略。此外,这些记忆机制使智能体能够借鉴过去的经验来适应陌生的环境。记忆机制还需要解决下面的问题:
记录的长度:基于语言模型的智能体以自然语言格式与语言模型互动,将历史记录附加到每个输入中。随着这些记录的增加,它们可能会超出模型架构的限制。
记忆的检索:随着智能体积累大量的观测和行动历史序列数据,面临着数据量不断增加的记忆负担。这使得为试图建立主题之间的关联来检索相关的记忆内容变得越来越具有挑战性,可能导致智能体的回应与当前上下文不一致。
3、推理和规划
基于目标的推理和规划能力是智能体智能的基本体现,它们有助于智能体分析解决复杂问题。推理以证据和逻辑为基础,它是分析解决问题以及做出合理决策的基石。人类主要推理形式包括演绎 (Deduction)、归纳(Induction) 和担纲 (Abduction) 推理。推理对于智能体处理复杂任务至关重要。而规划有助于智能体在面对复杂挑战时形成应对策略;它给智能体赋予一种结构化的思考过程,即组织思维、设定目标,并确定实现这些目标的步骤。对于智能体来说,规划能力的核心是推理能力;通过推理,智能体将复杂的任务拆分为更易管理的子任务,并为每个子任务的完成制定适当的计划。
另外,推理和规划赋予智能体学习的能力,有助于智能体学习积累知识和经验。智能体的初始配置和计划可能反映了对环境的一些先前知识,但随着任务的进行,智能体通过推理和规划获得更多的知识和经验,使得先前拥有的知识和经验可能会被修改和增强;通过推理和规划,智能体还可以利用内省来优化和修改其行动策略和计划,确保其与环境现实情况更好地保持一致,从而适应环境、更有效地执行任务并成功达成目标。
4、行动和执行
行动执行单元负责将智能体的决策转化为具体的行动,并直接执行将行动作用于环境,并影响环境的未来状态达到其目标。通常情况下,智能体在任何特定时刻的行动选择可以依赖于其内置知识和到目前为止观察到的整个感知序列,但不能依赖于它尚未感知到的任何事物。这意味着智能体的行动是基于已有的信息和经验来做出的,而不是基于未知的因素。智能体可通过其本身的输出,比如语言模型的文本输出,来完成行动执行,但往往需要借外力扩展行动空间,比如智能体具身行动能力和使用外部工具的能力,以便更好地应对环境变化、提供反馈和改变塑造环境。智能体通过为每个可能的感知序列做出决策并指定其行动选择。从数学角度来看,智能体的行为由行动函数描述,该函数将任何给定的感知序列映射到一个行动。
多智能本
如果要完成以上的事项,作为人类来说,大概率会按以下方式来做:
成立一个事项目项目;
设定项目目标,拆解项目;
按拆解项目后的任务,找到适合做这任务的人;
收到任务的人,再看任务大小,拆解事项进行相应的工作;
必要时相关任务工作的人,需要相互交流和沟通,协同同步工作进展
既然解决一个问题可以引入智能体,那么针对一个项目拆解后多个问题,可以引起多个智能体,只要让他们能协同起来工作。
多智能体系统可以视为一个智能体社会,其中
多智能体 = 智能体 + 环境 + 标准流程(SOP) + 通信 + 经济
这些组件各自发挥着重要的作用:
智能体:在上面单独定义的基础上,在多智能体系统中的智能体协同工作,每个智能体都具备独特有的LLM、观察、思考、行动和记忆。
环境:环境是智能体生存和互动的公共场所。智能体从环境中观察到重要信息,并发布行动的输出结果以供其他智能体使用。
标准流程(SOP):这些是管理智能体行动和交互的既定程序,确保系统内部的有序和高效运作。例如,在汽车制造的SOP中,一个智能体焊接汽车零件,而另一个安装电缆,保持装配线的有序运作。
通信:通信是智能体之间信息交流的过程。它对于系统内的协作、谈判和竞争至关重要。
经济:这指的是多智能体环境中的价值交换系统,决定资源分配和任务优先级。
一个例子
这是一个简单的例子,展示了智能体如何工作:
在环境中,存在三个智能体Alice、Bob和Charlie,它们相互作用。
他们可以将消息或行动的输出结果发布到环境中,同时也会被其他智能体观察到。
下面将揭示智能体Charlie的内部过程,该过程同样适用于Alice和Bob。
在内部,智能体Charlie具备我们上述所介绍的部分组件,如LLM、观察、思考、行动。Charlie思考和行动的过程可以由LLM驱动,并且还能在行动的过程中使用工具。
Charlie观察来自Alice的相关文件和来自Bob的需求,获取有帮助的记忆,思考如何编写代码,执行写代码的行动,最终发布结果。
Charlie通过将结果发布到环境中以通知Bob。Bob在接收后回复了一句赞美的话。
智能体应用
1. 调研员:从网络进行搜索并总结报告
前文讲到的实现调研的功能,由调研员角色完成。可以根据用户的调研问题,从互联网上进行搜索总结,并最终生成报告。本文将从设计思路、代码实现、使用示例等几个方面介绍调研员角色
设计思路
在使用MetaGPT开发Researcher角色之前,我们需要先思考一下假如自己作为一个Researcher,在网络上搜索并输出调研报告是怎么做的。一般是包含以下几个步骤:
分析待研究的问题,并将问题拆分成几个可以适合用搜索引擎进行搜索的子问题
通过搜索引擎搜索子问题,浏览搜索引擎会给出多个带有标题、原文Url、摘要等信息的搜索结果,判断每一条搜索结果是否与要搜索的问题相关以及信息来源是否可靠,从而选择是否要进一步通过Url浏览网页
点击需要进一步浏览的网页,判断网页内容对待研究的问题是否有帮助,提取有关的信息并记录
聚合所有的记录下来的相关资料,针对待研究的问题撰写报告
因此,我们尝试让GPT模拟以上的调研流程,整体步骤如下:
用户输入待调研问题
调研员通过GPT生成一组研究问题,这些问题共同形成对任何给定任务的客观意见
调研员在收到GPT分解的问题后,对于每个研究问题,先通过搜索引擎搜索,获取初次搜索结果
网址通过浏览器获取网页内容,并使用对网页内容进行总结
汇总所有总结后的内容并跟踪其来源
最后,让GPT根据汇总后的内容生成最终研究报告
2. 教程助手:生成技术类教程
输入一句话,生成一篇偏技术类教程文
设计思路
先通过 LLM 大模型生成教程的目录,再对目录按照二级标题进行分块,对于每块目录按照标题生成详细内容,最后再将标题和内容进行拼接。分块的设计解决了 LLM 大模型长文本的限制问题。
3. 收据助手:从收据中提取结构信息
支持 pdf, png, jpg, zip 格式发票文件的 ocr 识别,生成收款人、城市、总金额、开票日期信息的 csv 文件。如果是 pdf, png, jpg 类型的发票文件,即单文件发票,可以提问发票内容相关的问题。同时,支持多语言发票结果生成。
设计思路
对于 pdf, png, jpg 格式发票文件,通过开源的 PaddleOCR API 对发票文件进行 ocr 识别,再将 ocr 识别后的数据提供给 llm 大模型提取主要信息写入表格,最后提问 llm 大模型关于发票的内容。
对于 zip 格式发票文件,先解压压缩包到指定目录,再递归遍历 pdf, png, jpg 格式发票文件进行 ocr 识别,再将 ocr 识别后的数据提供给 llm 大模型提取主要信息写入到同一个表格。多个文件不支持提问内容。
面向开发者的热门开源框架
目前不少企业已经开源出了智能体实践的源代码,主要面向开发者,笔者也都翻译过几个热门的源代码,这里可以见到大部分开源框架代码《19类Agent(智能体)框架对比》。
老实说,智能体的概念很好,理想中能代替实际的很多工作,实际上真正要达到智能体能自我思考、做规划决策和执行,按目前的人工智能技术还有一定的距离。翻阅了这些源代码,基本上算是按照智能体的定义,抽象实现了各类方法(观查、思考、记忆、行动等),但是具体的实现,还不能达到智能体自我主张,所谓的记忆,也仅是软件开辟了一块内存空间存放过往的事件记录,并不会像人一样会利用记忆产出融汇贯通处理问题,现在开源实现的基本上还是穷举的各种参数、环境情况,只要一定因素变化(比如运行机器、调用大模型、网络等等),原先跑通的例子也会出问题。
比如硅谷第一数字程序序Devin已遭智名博主打假,实际上它并不是假的,而是具体的自我感知、决策受环境参数影响比较大,还做不到真正的智能,虽然笔者没有机会翻过源码,但是大概率也是穷举各种情况下的决策和执行。
不过目前来说,有些简单规则性的工作(可以穷举大部分的环境和过程可能)确实可以使用智能体方案来做了,甚至在容错性比较好的情况下,可以加入人的干预,来达到比较好的效果,大家不妨一试,反正笔者已经开始动手,并且有一定的效果出来了即将代替手头很多繁碎的工作。