Agent到底是什么

上一篇聊了Agent为什么火,这一篇说清楚Agent到底是什么。

很多人第一次接触Agent,会觉得它就是更聪明一点的聊天机器人。多了工具调用,多了几轮思考,本质上还是在对话框里那点事。这样理解不能算错,但会低估这件事的分量。

Agent的变化不只是多了几个功能,是整个使用逻辑变了。聊天机器人是被动响应,你问它才答。Agent是主动执行,你给目标它自己想办法完成。这个区别说起来简单,落到技术实现上差了很远。

这一篇我们把Agent拆开来看。它由哪些部分组成,每个部分做什么事,它们怎么配合起来为什么能让大模型从聊天变成干活。


从一个例子说起

假设你想知道昨天公司销售数据。

如果用普通的大模型,你直接问它。它会告诉你,我不知道昨天的数据,我的训练数据有截止日期,你得把数据发给我我才能分析。于是你去导出Excel,把表格内容贴进去。它看完了,给你算总和,算增长率,算排名。

整个过程你是操作员。数据你找,文件你导,结果你验证。模型负责算。

用Agent的话,你说一句话,帮我看看昨天的销售情况,重点看一下哪个品类卖得最好,跟上周比有什么变化。

然后Agent自己去连数据库,查昨天的数据,拉品类维度,算同比环比,生成表格,最后把结论发给你。中间不用你插手。

你只说了一句话,它完成了一整套流程。

这就是Agent。它把"你一步步指挥模型做事,变成了你告诉模型要什么结果,模型自己想办法做到。


Agent的四个核心组件

一个完整的Agent,通常由四个部分组成。大模型是大脑,工具是手脚,记忆是经验,规划是调度。

大脑就是大模型。它负责理解用户的意思,判断当前该做什么,生成下一步的动作。没有大模型,Agent就没有决策能力。

手脚是各种工具。搜索引擎、数据库、文件系统、API接口,这些都是工具。大模型再聪明,不连工具也只能输出文字。工具让Agent能跟真实世界交互。

经验是记忆系统。对话历史、用户偏好、之前查过的资料、学到的知识,这些都存在记忆里。有了记忆,Agent才不会每次对话都从零开始。

调度是规划能力。拿到一个复杂目标,Agent要能把它拆成几个小步骤,按顺序执行,中间出了问题还要能调整。规划能力决定了Agent能处理多复杂的任务。

这四个部分配合起来,就形成了一个完整的感知决策行动循环。

感知就是接收用户的目标,理解当前的处境。决策就是判断下一步该做什么。行动就是调用工具去执行。执行完以后,感知到新的结果,再进入下一轮决策。

这个循环一直转,直到目标达成,或者Agent判断自己做不下去了。


大脑,大模型在Agent里做什么

大模型在Agent里主要干三件事。

第一件是理解。用户说的话是什么意思,当前的情况是怎样的,工具返回的结果说明什么。这些都靠大模型来理解。

第二件是决策。现在该做什么。是直接回答用户,还是调用工具查资料,还是需要再想想。选哪个工具,传什么参数。这些决策都由大模型来做。

第三件是生成。调用工具拿到结果以后,大模型把结果整理成自然语言,回复给用户。或者生成下一步的行动计划。

这三件事听起来简单,做起来难。难在大模型不是每次都选对。有时候它该调用工具的时候不调用,自己瞎编答案。有时候它调用错了工具,传错了参数。有时候它在一个步骤里打转,出不来。

Agent开发里很大一部分工作量,就是在跟这些问题较劲。怎么让大模型更稳定地做正确的决策,怎么减少幻觉,怎么处理异常情况。


手脚,工具是怎么工作的

工具调用是Agent区别于普通聊天机器人最明显的标志。

工具调用的原理说起来不复杂。你给大模型一份工具清单,每个工具有名字、有描述、有参数说明。大模型根据当前的问题,判断要不要调用工具,调用哪个,参数填什么。

然后系统拿到大模型的决定,去执行对应的函数,把结果返回给大模型。大模型再根据结果,决定下一步怎么走。

这个过程叫Function Calling。现在主流的大模型基本都支持这个能力。

说起来简单,细节里全是坑。

比如工具描述怎么写。写得太简单,大模型不知道什么时候该用。写得太复杂,大模型又理解不准。参数说明也是一样,多了少了都不行。

比如工具返回的结果太长怎么办。搜索引擎可能返回一大堆内容,大模型处理不过来。需要做摘要,需要截断,需要想办法把最相关的信息挑出来。

比如工具调用出错了怎么办。网络断了,API限流,参数不对,返回格式错。Agent要能识别这些错误,重试或者换个方式继续。

这些都是做项目的时候会一个个碰到。入门的时候不用全记住,知道有这些坑就行。


记忆,Agent怎么记住事情

普通的对话也有记忆,就是把之前说过的话都带上。Agent的记忆系统比这个复杂一些。

最简单的记忆就是对话历史。你说的每一句话,大模型的每一次回复,都存起来。下一轮对话的时候,把历史一起发给大模型,它就知道之前聊了什么。

这种方式简单直接,也有问题。对话越长,历史就越长。太长了以后,大模型处理不过来,成本也会变高。

所以有了各种优化过的记忆方式。

一种是摘要记忆。对话多了以后,让大模型把之前的对话总结成一段摘要,带着摘要继续聊,不用带全部历史。这样省Token,也能保留主要信息。代价是细节会丢。

一种是实体记忆。把对话里提到的人名、地名、重要事实,单独提取出来存好。用户说过自己叫什么,做什么工作,有什么偏好,都记下来。下次聊的时候,Agent能想起这些信息。

还有知识库记忆。这个更高级。Agent在对话中学到的新知识,可以存到长期知识库里面。下次遇到类似的问题,先去知识库查。这种方式已经接近RAG了,后面RAG篇会专门讲。

记忆系统看起来不复杂,做好了很影响体验。一个记不住用户说过什么的Agent,用两次用户就不想用了。


规划,Agent怎么处理复杂任务

简单的任务,一步就能完成。复杂的任务,需要很多步。规划能力就是Agent处理多步骤任务的能力。

比如让Agent写一份行业研究报告。它得先确定报告结构,然后查资料,然后整理数据,然后写各个章节,最后汇总成稿。中间任何一步卡住了,它得知道怎么调整。

规划能力目前是Agent技术里最难的部分之一。

最早的做法很直接。让大模型自己想,想出来步骤就按步骤走。这种方式简单,大模型经常想不清楚。步骤想少了,中间跳步了,顺序错了,都很常见。

后来有了改进。让大模型一步一步想,想完一步再想下一步。还可以让它自己检查,刚才想的对不对,不对就改。这种叫思维链,也叫反思。

再后来有了更结构化的做法。用流程图一样的东西,把任务的步骤和分支都定义好。Agent按照图来走,走到哪一步该做什么,做错了往哪里回退,都有规定。LangGraph就是干这个的。

规划能力决定了Agent能处理多复杂的任务。规划越成熟,Agent能做的事就越多。现在的水平,处理十来步以内、边界清晰的任务,已经能做得不错。再复杂的,还需要人来搭框架。


Agent和普通聊天机器人到底差在哪

说到这里,应该能看出来差别了。

普通聊天机器人只有大脑。它能理解,能生成,能对话。它没有手,没有脚,也不会自己规划。你问它一个问题,它根据训练数据里的知识回答。答不出来的,它要么说不知道,要么瞎编。

Agent有大脑,有手脚,有记忆,有规划。它能调用工具获取外部信息,能记住用户和历史,能把复杂任务拆成步骤一步步做。它的能力边界比聊天机器人大很多。

这个差别不是数量级的差别,是性质的差别。聊天机器人是信息查询工具,Agent是能干活的助手。

信息查询工具,你用它来找答案。干活的助手,你用它来做事情。


现在的Agent水平怎么样

实话实说,现在的Agent还处在比较早期的阶段。

简单任务做得不错。查资料、写文档、做数据分析、回答知识库问题,这些场景已经能用了。很多公司已经在用Agent替代一部分人工工作了。

复杂任务还不行。任务一复杂,步骤一多,Agent就容易出错。可能会跑偏,可能会卡住,可能会在一个地方死循环。越自由的任务,越容易出问题。

所以现在落地的Agent应用,大多是给Agent划定了明确的边界。能做什么,不能做什么,都规定得很清楚。在边界里面,它能做得很好。出了边界,就不行。

这也是我反复说的。现在做Agent项目,不要追求大而全。找一个具体的场景,把边界划清楚,在边界内做到可靠。这样的Agent才有用。


下一篇我们具体聊聊,Agent现在到底能做什么,不能做什么,哪些场景已经落地了,哪些还只是概念。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐