今天来跟大家分享一下我对于 AI 智能体工程定义的深度理解。
现在大家都在说智能体,感觉什么东西包一个大模型就是智能体了。这个说法不能说不对,但一定不是一个非常精准的定义。
我认为智能体的定义核心在于是否利用了大模型“智能”的处理了问题。
这个是最为重要的特征。什么叫智能?拆开来看,一个是智,智就是聪明,就是大模型。能是指干活,真正能解决问题。
因此,智能体就是聪明且能干活的系统。
看看,中国文化,博大精深。
这里面有一点要再解释一下,什么算智能?比如我像有一个下属,我告诉他第一步干嘛、第二步干嘛、第三步干嘛,最后他把事情完成了,这个算智能吗?我认为不算。
但如果我跟一个下属说,今天你把这个事情干完,处理完以后给我一个报告,其他什么信息都不说。
他把问题带回去,自己去跟同学聊,自己查数,自己总结,最后给了我报告,这就算智能。
大家当然知道,现在的模型对话肯定不能算是一个智能体,因为它没办法真正解决你的问题。但如果我的这个应用程序里面有一个功能调用了大模型的 API,那这算不算智能体呢?
显然是不算的。
这里它使用了单点的大模型的能力,但是它不能算是一个系统,因此它不能定义成“体”。
比如我做了一个产品,叫做词拍。用了大模型的 API 能力来识别图片里的单词,但是这里面依然不能把它定义成一个智能体。这里面是重度依赖了大模型的 API 能力,但是这里面依然不能把它定义成一个智能体。
因为没有用到大模型的“智能”部分,这里是把大模型当成了一个高端的 OCR 工具而已。
那很多人说,我搞了一个复杂的流程,可能要分成四五步,其中有一步是调用大模型来总结内容,这种算智能体吗?
这种也不是,这种本质是工作流。
那到底是什么智能体呢?
很多定义其实说的不太好,比如它有些定义是会说是否有多轮调用,有的说是不是用到了意图识别,说的都非常散。
一句话说,大模型的本质就是“能在不确定性的情况下,返回高概率的结果”。
最为关键的是,你是不是利用了大模型的智能?如果是,那么你就是一个智能体,反之,就是一个依赖了大模型的系统。
综合利用了大模型的“意图识别、规划、执行、验证、迭代”才是一个真正的智能体。
还是有点不太好理解,我们先用具体的几个例子来明确的说明一下。
比如我现在想做一个监控通知系统,我规定了非常清晰的步骤,比如第一步拉取数据,第二步生成计算公式,第三步生成异常阈值,最后步发生通知。这就是很典型的一个规则驱动的系统。
虽然里面生成公式可能调用的是大模型。
但如果我只是提供数据、提供参考案例、提供通知的 tool,而不具体告诉具体规则,而让 API 来帮决策具体怎么做,这就是一个真正的智能体。
如果一个大模型里面,它结合了意图分析、规划、判断和执行,那么它就是一个真正的智能体。在这个过程里面,很大的一个区别是,原来的逻辑是我们固定的,到了大模型之后的逻辑我们是不固定的,是让大模型在有限的约束下正常发挥。
比如,监控系统里,我不会告诉它告警究几点发,我只会约束一句“下班后不要发送告警,减少打扰”。至于到底几点发,大模型自己判断。
我们在获取这个最佳实践的时候,踩了很多的弯路。我们有一个工单系统,我们开始在想要用大模型来解决问题,我们就要做大量的输入,比如准备知识库文档,然后编写工作流,告诉第一步干什么、第二步干什么、第三步干什么,最后再干什么。
但这样就变成了一个非常复杂的系统,我需要一步一步的指导大模型怎么做,而且还有很多情况我没办法穷举,这其实就是一个工作流,而不是智能体。
开始设计得非常重。
随后我们换了一个思路来做,主要是把知识库和案例都丢给大模型,让大模型来训练出一个知识库。随后就用一个 skill告诉它,你要解决我这个问题,让大模型自行去规划、分析和执行。而最后我要做的是一个度量。
最后部署很简单,一个飞书/微信机器人+一个连接器+一个本地模型+一个 skill 仓库就搞定了。
既然让大模型自己发挥,那如何保证满足我们的需求?因此,如何涉及验证集是智能体开发最为重要的一个环节。
验证条件的好坏,直接关系到系统的稳定性。可以简单理解,打分越准,大模型能力会发挥得越好。
也就是说,这里面的关键并不在于我如何指导大模型一步一步去做,而是让大模型在有限的约束集下自行发挥,同时我会清晰的通过验证集告诉大模型,它做的好还是不好。
比如,在我们用大模型来解决工单的时候,最终就会由人类来打一个标,告诉他是解决正确还是解决错误,如果不正确,它就会自行修复和调整。它不断地迭代,直至到一个黄金水平。
其他智能体系统也是一样。炒股智能体,最重要的是告诉它赚了多少还是亏了多少。编程 Agent,最重要的是告诉它什么才算完成任务。写作 Agent,最重要的是告诉它什么才是好文章。
用了大模型意图识别、分析规划、迭代学习的能力,再加上一个黄金验证集,这就是变成了一个真正的智能体。
智能体,就是这么简单。
夜雨聆风