AI 基础:究竟什么是“智能体”?
“智能体(Agent)”到底是什么意思?各种定义五花八门,能不能简单点?

这篇文章是我计划撰写的系列文章的第一篇,主题是深入浅出地探讨AI系统背后的基础概念。人工智能飞速发展,很多基础概念越来越容易被忽视,有些词语每周都可能被赋予新的含义。
今天我们从一个热门词汇说起:智能体(Agent)。
2025年显然成了所谓的“智能体之年”。随着大模型(LLM)的迅猛进步,文本、图像甚至视频生成的能力突飞猛进。但现在,大家兴奋的焦点已经逐渐转向更进一步的系统:不再满足于单纯地生成内容,而是要直接在数字世界甚至真实世界中“行动起来”。
这种兴奋感并不是没有道理的。当AI真正开始“行动”,它的价值和实用性会提升数十倍。虽然过去我们已经有了很多软件自动化的工具,但它们通常是死板、脆弱的。如果给这些系统加上更灵活、更智能的决策能力,肯定能带来巨大的突破。当然,这件事做起来也非常难(我们后续再讨论为什么难)。
那么问题来了:“智能体(Agent)到底是什么?” 是OpenAI的定义?还是IBM的定义?抑或是来自AI工程师峰会上,Simon Willison(通过Swyx)整理出的六大定义之一呢?

或者说,其实还有更准确、更本质的定义?
相信大家不会意外地发现,我觉得上面这些定义虽然各有道理,但都有些不足之处。同时也不难想象,历史上其实早已存在过无数版本的“智能体”定义,并且甚至有一个完整的研究领域专门研究“多智能体系统(Multi-agent systems)”。(我自己首次发表的主要会议论文之一,就是2000年在波士顿举行的“国际多智能体系统会议”上,当时是第四届,这个会议后来和另外两个会议合并,演变成了如今仍然活跃的AAMAS大会。)
作为额外的小收获,我们在文章结尾还会聊聊“多智能体系统”的概念。
时光倒流:智能体的历史演变
如果我们详细回顾一下历史上智能体的各种定义,那篇文章会变得非常漫长。简单概括一下,历史上的“智能体”曾经被描述成各种形式:
比如,能够在现实世界自由探索的完整机器人;
也包括在市场模拟中,单纯用来预测价格波动的简单个体;
还有一些复杂的软件实体,这些软件拥有内部知识和对世界的认知,能用标准化的“智能体语言”相互交流(最常见的有KQML和FIPA-ACL);
甚至包括一大群极其简单的实体,它们可以通过自组织方式展现出非常复杂的群体行为。
在许多人工智能会议的晚宴上,“如何精确定义智能体”也一直都是热门的饭后话题。
当今对“智能体”的定义
快进到今天,各种各样对“智能体(Agent)”的定义层出不穷,这其实并不令人意外。毕竟,我们拥有了一套强大的新工具来构建智能体,人们对此充满热情。但我认为,当下很多定义存在着明显的问题,要么过于复杂,要么严重偏离了智能体的本质。
定义太多且彼此冲突,会导致我们难以看清构建智能体真正的挑战所在(更别提更为复杂的多智能体系统了)。
借鉴上文已经提到的一些现代定义(它们可以算是目前为止我见过最优秀的一些定义),以下是这些定义提到的一些关键要素:
“智能体是一种配备了指导行为的指令、工具能力,并运行在动态生命周期内的模型。”
(真的必须有指令吗?一定要是模型吗?模型到底意味着什么?)
“一种可以自主学习、适应并为实现指定目标而行动的应用程序。”
(一定要有学习能力吗?目标必须要被指定吗?由谁来指定?)
“能够在真实世界中执行并完成长周期、开放式任务的人工智能系统。”
(任务必须是长周期的吗?必须要完成吗?)
“智能体 = 大语言模型(LLM)+ 记忆 + 规划 + 工具 + 一个while循环。”
(我们一定需要记忆吗?真的必须要大语言模型吗?一定要规划吗?为什么不是用for循环完成任务然后优雅退场呢?)
“能够被信任去代表我做出重要决定的系统。”
(一定要代表用户吗?为什么不能代表它自己?人类是不是一种智能体呢?)
“一个应用程序越有‘智能体’的特性,就越是由大语言模型来决定应用的控制流。”
(必须用大语言模型吗?智能体特性是连续变化的程度,还是非此即彼的状态呢?)
“能执行以往需要人类完成的复杂多步骤操作的AI系统组件。”
(任务必须是非常复杂的吗?那些连人类本来也做不了的任务呢?病毒检测软件算智能体吗?)
提出这些质疑,并不是为了否定这些定义。事实上,“智能体”这个概念本来就很难定义,而上述作者们都在尝试做出很有价值的贡献。
我甚至要说,我很喜欢这些定义,它们揭示了“智能体”的本质,展现出当前技术时代令人兴奋的特性。
历史上,人们往往认为智能体“很简单”,那是因为过去难以想象软件系统能强大到今天有大语言模型(LLM)参与的程度。然而如今的问题却相反:人们误以为智能体一定要有像LLM这样复杂的技术。
智能体的真正含义到底是什么?
或许没有任何单一的定义能够满足所有人的需求,但我认为,建立在一个相对稳健的核心定义之上再进行扩展,会是一个不错的选择。
现代的定义包含很多共同的主题,但大多遗漏了历史定义中经常出现的关键概念——智能体总是被“嵌入”或“处于”某个环境之中。此外,现代定义(很自然但不必要地)过度强调了大语言模型(LLM)。实际上,构建智能体根本不需要LLM这么强大的技术。
我并不想为以下这个定义邀功,因为它实际上只是历史定义与现代定义的一种融合总结。但它或许能抓住智能体的本质:
一个智能体:
是一个在特定环境中,拥有自主性并有能力采取行动以实现一个或多个目标的系统。
这里所说的智能体,可以是软件系统(软件智能体),可以是人工智能系统(AI智能体),甚至可能是生物智能体(比如刚刚咬断你家电线的老鼠)。
我们来详细解释一下这个定义中包含的关键点:
首先,它是一个独立的单一实体(系统)。
它拥有自主性,也就是说,它能基于某些标准,自己决定是否要采取行动。(这是所有智能体定义里最难解释、但却非常关键的一个属性,后文还会进一步探讨。)
它拥有在环境中行动的能力。也就是说,它具备一些“行动可能性”(affordances),可能是内在的能力,也可能借助外部工具。这些行动既可能改变物理世界(比如咬坏电缆),也可能只是收集信息(比如作为间谍的智能体)。
智能体位于某个特定的环境之中。环境可以是物理的,也可以是数字的;可以是静态的,也可以是快速变化的。环境为智能体的行动提供了具体的上下文。
智能体拥有可以选择实现或放弃的目标。目标可能是内置的(事先编好的),也可能是由另一个智能体(人或软件)赋予的,甚至可能是动态产生的(比如随机的,或根据环境的某种特征而生成的)。
在以上核心定义之外,我们可能还希望额外强调几点:
大多数有实际价值的智能体都是长期存在或持久存在的。这种持续存在可以让智能体能够完成更复杂的任务。不过,只要智能体具备自主性以及某种明确的“身份”,理论上也可以存在“一次性”的智能体,即完成单个任务后就消失,甚至只是被启动一次。
大多数实用的智能体可能还会具备某种感知循环,即不断地观察环境是否发生了变化或出现了触发条件。但这也并非绝对必要的,因为也有可能在环境中投入大量智能体来直接尝试实现目标,而不等待或不调整行动方案(比如暴力的拒绝服务攻击,本身不需要太多的环境感知)。
即便加上刚才那些补充内容,目前对“智能体”(Agent)的定义仍然缺少不少近期常见的概念,比如:大语言模型(LLMs)、While循环、模型(models)、规划(planning)、外部指令(external instructions)、学习(learning)、记忆(memory)等等。
这些概念对某些类型的智能体确实很有用,但很难说它们对智能体的核心概念而言是必须的。
要理解这一点,我们可以思考一下“多智能体系统”(multi-agent system)到底是什么样子的,稍后我们会详细探讨这个话题。
在结束这次对定义的讨论之前,我们回头看看定义中的“自主性”(Autonomy),这是定义里最微妙难解的一个部分。
到底怎样才算是一个能够自主行动的系统呢?是意味着完全不受人类指令影响吗?还是意味着不需要人类触发?亦或者是没有其他智能体的触发?
这个话题其实通向了一个深刻的哲学问题,很类似于“什么是意识?”的问题:
如果一个X(推特)机器人只是监测关键词,然后不断向用户发送垃圾信息,它算不算智能体?
病毒算智能体吗?一个单独的病毒细胞呢?
如果一个智能体是通过按下按钮触发的,那它到底算是智能体,还是仅仅算作应用程序里的一个函数?
这些问题很难有清晰的答案,不过从工程角度有个实用的定义:
允许智能体接受外部触发(比如人类、其他智能体、环境),只要这个系统内部拥有一定的逻辑,能够自主判断是否应该执行被请求的动作。
这个内部逻辑可以非常复杂,比如仔细评估行动的成功概率,也可以非常简单,比如执行前进行一个安全或身份检查。
此外,也有很多时候触发并不会立刻导致行动。比如一个安全扫描系统可能长时间默默收集信息,直到突然发现安全威胁时才被激活。
事实上,在“智能体”这个术语出现之前,Unix系统里的守护进程(daemon)早就是智能体了。
那么,现在我们有第15个关于智能体的定义了吗?

引用漫画:XKCD Standards
很好,现在我们又得到了一个新的“智能体”定义。那我们究竟获得了什么呢?
未来肯定还会有更多新的定义出现,至于哪一个最终被接受其实无关紧要,但理解定义背后的含义对系统开发很有帮助。
我个人更倾向于上一节提到的简单定义,因为它可以更好地关注智能体系统中几个关键的方面:
自主性(Autonomy)真的很重要。
无论是一个长期运行的for循环,还是能够被某些环境条件触发的安全扫描系统,智能体都是异步的,可以随时被激活。如果你要构建的是一个很长很复杂的工作流,就需要认真思考你是不是真的需要智能体。如果你的系统需要对环境变化做出反应,并且各个过程并不紧密耦合,智能体可能正是你想要的。环境(Environment)也非常关键。
我们必须把智能体看作是嵌入到某个环境中的。例如,一个能够执行强大且多样化行动的系统,如果还能访问用户完整的个人数据,那就会带来巨大的安全挑战。苹果公司近半年来可能已经领会到了这一点,导致其广受关注的Siri AI升级延迟了(相关报道)。环境×能力=力量。
我非常喜欢智能体“工具”的理念,比如exa.ai和browserbase.com。这些基础设施使得整个开放互联网都成为智能体可以发挥作用的环境。工具的力量与环境的力量共同决定了智能体的潜在影响范围,以及可能的风险。目标(Goals)可以来自任何地方。
有些目标可能是预先固定的,有些可能完全随机。当你设计智能体时,必须清晰地知道目标可能来自哪些地方,并管理好这些目标。比如,你的智能体是不是在网上搜索信息并制定新的计划?搜索来的新信息会不会产生更多新目标?会不会无限循环下去,不停地消耗计算资源?很多所谓的“多智能体系统”其实只是单智能体系统。
最近几个月我们看到许多被称作多智能体的系统,实际上只是单一系统的流程链条,前一个步骤完全决定了下一个步骤;或者是多个系统各自生成结果,再从中挑出最佳结果。这两种架构本质上并不是真正的多智能体系统。真正的多智能体系统意味着每个智能体都必须拥有自主性,拥有自己的目标并决定是否执行目标。从最广义的角度来说,一个系统只有当每个智能体拥有不同的“主人”(包括可能是自身)时,才能被称为真正的多智能体系统。多智能体之间一定会通过环境相互影响(无论你愿意与否)。
这种冲突通常会比你预想的来得更快。即便智能体之间没有直接的通信渠道,它们也可能在环境中发生交互。只要多个智能体能操作同一个资源,就意味着它们之间存在互动,比如两个代码修改智能体操作同一个代码库,两个任务调度智能体安排同一组服务器上的任务,或几十个搜索智能体写入同一个数据库。这种情况都需要明确或隐含地协调。
到底该不该用智能体,这是个问题……
你可能会觉得,一个看起来很简单的话题竟然写出了一篇2000多字的博客文章,也许我们最好别碰“智能体”了。或者你觉得智能体的炒作过于夸张,很难应对。
这种想法很正常,但你恐怕无法避免。一旦你开始构建能在某个环境中“行动”的AI系统,你其实就已经踏上了“智能体”的道路。尤其是当你的系统具有一些自主性(比如长时间运行的程序或特定触发规则)时,就值得把你的系统视为智能体。
通过审视你的系统设计,你可以明确它所处的环境、可用的行动或工具,以及如何做出决策等等。这些都能帮助你设计出更优秀、更清晰的系统。