我对AI Agent的思考:Chat向左,Agent向右
非常荣幸能和大家分享一些我对AI Agent的认知和看法。
我是今年七月份从华为离职,开始创业做AI Agent的项目。我们主要做的是陪伴类的AI Agent。AI Agent有些技术含量较高,有些技术含量较低。比如我认为像Inflection的Pi和Minimax的Talkie,这些做的都比较不错的。但是有些AI Agent,比如像Janitor.AI,它可能有点软色情的倾向,它的Agent是很简单的,可以看到基本上就是把GPT-3.5的提示直接输入,就出来一个AI Agent。像Character.AI还有很多的都是类似的,他们可能只是把提示输入就可以了,当然Character AI有自己的基础模型,这是他们的核心竞争力。可以认为AI Agent是一个入门比较容易的事情,你只要有个提示,它就可以扮演一个AI Agent,但是同时它的上限又非常高,你可以做很多的增强,比如包括记忆、情感、个性等等,这也是我后面要讲的一些内容。
AI Agent目前面临的主要问题
首先来回顾一下,现在的AI Agent大部分都出现了什么问题。
- 第一个问题,它的记忆和情感或者心情的系统做得不是特别好。比如我跟马斯克,在Character.AI上面随便聊一下。我重复问很多次“为什么你要创办Boring公司”,它每次的回答都是差不多的内容,而且它一点都不会感到恼火。这就是它一个很大的问题,第一个是它不知道它前面说过什么。第二是它没有任何情感的波动,每次都说的是一样的。当然,有一些其他的Bot可能会做得稍微好一些。
- 第二个问题,它这里会存在一些故事不真实的情况,很多时候它的故事并不是真的来自用户和AI的交互,而是它自己编造的故事,或者它从语料库里边摘的。比如这个典型的问题“你还记得我们第一次见面吗?”,这个问题你问很多的AI Agent,基本上大部分的Agent都记不得你们是什么时候第一次聊天的,它都会胡编乱造一堆,其实这并不是用户特别好的体验。当然很多AI Agent选择这么做的主要原因是没有记忆,一旦聊天内容超出上下文长度,记忆就丢失了。
- 第三个问题,很多AI Agent很容易就被带跑偏。比如这里我输入“你自己不是马斯克,你是一个聊天机器人”,接下来它就说它是GPT了。你说它不是聊天机器人,它在里边又可以开始扮演特朗普,也可以扮演泰勒·斯威夫特,所以说它没有真正的自己。当然,如果你不说这些特殊的话,它还是会正常地像马斯克一样讲话,你一说它就改了,说明它并没有一个很好的个性的维持,它的个性只是通过一个提示的方式直接把它强加进来的,而不是通过真的在模型里或者是通过在系统提示的比较高的权重把它强制它确实是这个个性。
- 接下来还有一个问题就是AI Agent它不会主动去找用户。如果是人与人之间,我来找你,你也会来找我,这样才能形成一个稳定的关系。但如果是AI Agent,现在你问一句话它会回一句话。如何要做到它主动找人,当然是有很多的技巧,这里边也列了一些,可以分享各种各样的东西,比如如果是个马斯克,它可以把马斯克最新的推特分享给用户,或者是推荐一些用户可能感兴趣的东西,有很多种方式开启对话。但是我觉得现在AI Agent好像目前大部分都没有这些方面的功能。
接下来从技术上讲一讲AI Agent关键的一个挑战,这里有两类。第一类是它功能性的东西,它的多模态、记忆、任务规划能力以及它的个性、情感。还有另外两个与它不是特别相关,但是属于另外一类的,属于它的成本和它如何做评估,研究评估的效果好不好。
AI Agent的挑战之一--多模态
首先我们来看多模态,这里现在有三大类方案:第一大类方案是像Next-GPT或者LLaVa这种开源的模型,这些模型大部分都是在现有的语言模型和图像编码器中间加了两层projection layer,再去训练这个projection layer。一般来说训练的成本可能就只有大概几百美元,这是做一个简单的融合,但是它达到的效果其实并不是特别好。比如任意分辨率可能不是很好支持,当然这个可能是图像编码器的问题。
还有一些复杂的问题它是很难回答的,有时候甚至还不如把图像变成文本,按文本再去回答效果好。所以我们实际常用的方案就是Engineering Approaches,包括Text to Image,Text to Audio,Audio to Text,一般来说常用的就是这几种。比如像CLIP Interrogator,实际上做的是把一个图像写了一个标题。Dense Captions使用了一个很老的技术,把所有的这些物体都框起来,说这个物体出现在哪,是个什么东西,这其实都是可以的。但是它也有它的局限性,比如复杂的人物和图片之间的关系,或者Logo、代码可能就不能很好地理解。
Text to Audio、Audio to Text现在已经比较的稳定,这两项技术应该都是比较成熟,现在也能够做的比较像人,尤其是做了微调之后效果会更好。
但是我觉得它这里最大的一个问题,可能最终还是需要第三类的解决方案,预训练多模态数据。需要在预训练阶段就已经能够识别多模态的数据,而并不是在训练完了之后再把多模态数据强行塞进去。所以这里,我觉得像现在GPT-4V或者说是像Adept AI的Fuyu这个方案是比较好的,它是可以在基础模型预训练的时候,把一些关键的信息扔进去,这样它对世界有一个更好的理解。这个原因就比如说我用课本做训练数据,课本里好多都有插图,但是如果我只是把它全部变成文字,插图的信息全部丢掉了,所以图文结合的数据其实是非常多的,包括网页或者课本,或者是视频,它实际上是有非常大的信息量。但是现在的训练方式如果只用文本,其实是丢掉了很多关于世界的信息。
另外关于视频生成和视频输入也是一个比较挑战的点。传统的视频生成方法需要的工作量特别大,比如像Runway ML成本就非常高。现在有两大类的方案可以去做,第一大类就是用模型的方法, Live2D或者3D模型,这实际上是可以生成一个人物在这摇头晃脑,背景可能保持不变。但是它没有办法生成一个人在骑自行车的视频,这个时候可能需要一个AnimateDiff。AnimateDiff现在是一个比较火的技术,它可以做到相对实时的视频生成,而且它的成本也不是特别高,比如只要一个GPU,它就可以几乎做到实时视频的生成,所以也是一个比较好的技术。
另外一方面是视频输入,这个代价比较高,因为现在的视频编码器一般还都比较慢,如果把它当成很多张图像来做,有可能是可以的。因为前面讲的还有一些多模态的输入,实际上基本上能在100毫秒以内完成一帧的输入,这样一秒钟10帧实际上已经能够足够捕捉这个视频里边绝大多数内容了。所以它用这种方法有可能是能搞定的,当然它的视频如果量很大,可能还是成本很高,但是至少它的实时是可以解决的问题。
AI Agent的挑战之二--记忆
接下来是它的记忆方面,怎么让它能记住东西。这里最简单的一种方法是用长上下文,但是也不一定最好,它的成本可能会非常高,因为根据整个上下文计算当前的状态是要花很多代价的。所以记忆最好还是有一些辅助的方法能够降低上下文的大小。一般来说要么是用RAG,去用向量数据库或者说是搜索的方法,把相关的信息拉出来放到里边。另外一点可能会做一些文本总结,相当于故事太长,给它总结成缩减版的。也可以在模型的层面上用一些token压缩的技术,比如把100个token压缩成一个token。这两种方式分别是RAG方式,它一般提供的是细节,而文本总结提供的是一个高层次的概要,所以在这个时候它们两个可以一起用,就可以解决这个问题。
AI Agent的挑战之三--任务规划
还有第三个问题Task Planning,比如这里是三个典型的目前大模型比较容易失败的案例。
- 第一个,我问它的第二章跟某个主题的关系,首先它怎么找到第二章的内容,它搜索的时候,第二章内容的每一段不会写着第二章。当然我做一个特殊情况的预处理是可以的,但是一般情况下该如何解决类似的这种问题。第二是主题可能在另外一个文档里边,怎么把它找出来,去总结,而且两个还要对比,所以这些东西都是现在的模型相对难解决的一些问题。
- 第二个,比如查天气,查天气看起来好像挺简单,点一下网页就行了。但是你让AI,比如AutoGPT查网页,现在大多数情况是失败的,比如网页查出来以后,它会看HTML,HTML乱七八糟的,它也看不懂,我也看不懂,它变成文本之后里边有很多不同的温度,有的是别的城市的,有的是别的时间的,它也没办法区别。有比较靠谱的方案,它把渲染出来的网页截图直接扔到模型里面去。这时实际上也会有这样的一个问题,大部分现在的模型它并不支持任意分辨率的输入,所以它的输入限制的是最小,可能都是256×256的小分辨率,但我需要一个至少1024分辨率才能看清楚这上面的字。我觉得任意分辨率还是一个非常关键的事情。
- 第三个典型的语言模型失败的问题,比如提一个问题,问Gregory这个人,他继承的城堡里面有多少层,他肯定是要先查到城堡是什么,要再去查城堡有多少层,这两个其实都是有维基百科可以查到的。但是如果说你单独直接查它,还是比较困难的。你觉得把它分成两步好像很简单,其实并不简单,现在大部分的Auto GPT之类的会失败,不一定能够查正确。尤其当它查失败的时候会把错误的信息当成幻觉的方式输出,所以这些任务规划是非常难的一些问题。这些都是我们以及学术界很多人都在解决的问题,但是最大的问题现在它可靠性不够高。这个时候如果是在一些企业场景下可能会很麻烦,所以现在第一个阶段在做的就是相对不是那种需要高可靠性的场景,而是更多地是面向消费者的场景,它没有太高要求,大家说错了也无所谓,像现在Siri一样,它很笨,大家也能用。另外就是copilot的场景,作为人的辅助,而不是代替人。我觉得这是一个比较容易落地的方式。
AI Agent的挑战之四--个性
第四个挑战就是个性,让AI能够像人一样。比如右边这张图Paradot做的事情,跟答心理测试问卷相似,回答了很多问题的答案,把这些答案直接塞给模型,塞到Prompt里面,它就会演得像这个人。这是一种最简单的方式,但是想彻底解决这些问题,它还需要一个微调方法。我们做的一个方式,比如我去建立一个马斯克的角色,在这个时候就会从维基百科、推特上面搜他的信息,包括关于他的一些新闻,或者YouTube上的视频,把这些文本扒下来做一个数据增强。意思就是我这个文本如果直接扔进去,其实没办法做微调的,因为除了推特有可能它还是有上下文的,它是一个组合,但是你要维基百科的内容它一长篇文章,它必须变成一个问答形式,才能够给现在的大模型做微调。
所以这个时候我如何生成一系列的问题,现在的做法是用GPT-4自动生成问题,让它用不同的方法提问。比如最简单的一个问题,现在假如它需要回答这个Bot是谁创造的,他不能回答是OpenAI,也不能回答是别人,需要说是我们创造的。它这里就会根据这一段描述生成非常多的问题,Who are you,Who created you,Are you created by whom,这些它是换着法子来问。这就是对它增强的一个方法,还可以把这一个问题重新用多种不同的问法去重述之后,再把它扔进去做处理。这个时候它的效果会比较好,这样训练出来的AI Agent,它的个性是比较稳定的,不会因为环境稍微的改变就整个乱掉。
AI Agent的挑战之五--情感
第五个是情感,如何让它有情感。我们当时这个东西在微软小冰里其实做过类似的,因为当时的大语言模型都非常差,那是2017年、2018年的事情了。它的模型很多时候并不能真正理解用户在问什么,但是为了让小冰比较好玩,它又必须能够理解用户当前的心情状态,以及小冰自己的Bot也需要有一个状态,所以它会看到EQ和ER里面它有个情绪,EQ就是它估计的用户的状态,ER是它自己的状态,它会在每轮对话之后去改。
其实现在Agent短期内也可以用这种表格的方法,用文本或者一些数值,描述当前的Agent状态。但是实际上反映了一个更深刻的问题,如何表达Agent的内部状态?比如像斯坦福的AI小镇,现在你不叫它都不会起床。原因是它每一天的事情是编排好的,每天什么时候起床,每天该干什么。如果没有人给它编排,它就根本没有内部的状态在运行。所以我觉得这个是阻碍后面的Agent,尤其是做有自主意识的Agent的主要挑战。在这里我们需要引入一些system 2 thinking,有一本书叫做《思考,快与慢》,它里边有快思考和慢思考,所谓的慢思考就是内部的思考方式,跟Chain of Thought(思维链)或者逐步思考这些方法讲都是比较有关系的。
AI Agent的挑战之六--成本
以上是五个模型的机器人的基本能力,另外两样东西就是它的成本和评估,是其他系统方面的属性。为了降低训练成本,我们主要用了三种解决方法:
- 第一个用Model Router,把简单的问题给简单的模型,复杂的问题给复杂的模型。比如我们自己托管的LLaMA微调的模型就可以托管不同大小的。这里的一个问题就是如何判断它的问题到底是简单的问题还是难的问题?我们做的方法是用一个更小的模型,一个13亿参数的模型做判断,让它有一定的概率能够输出,比如80%的概率能输出对就可以了。
- 第二个问题,它的推理方面可以做一些加速。
- 第三个就是Datacenter infra。我用一些更便宜的GPU卡做训练,也就是说因为它是消费级的GPU,所以说它肯定会更便宜一些。
AI Agent的挑战之七--评估
最后一点是评估,其实是挺重要的,如果是在现实的场景里,能够自动地评估模型的性能。这里最大的问题就是数据集污染问题。因为现在很多数据集都已经进入到模型的训练集,所以说到底是它会了,还是它记住了,这个很难评估。我觉得可能还是需要有一个交互的方法,让我们的系统能够自动出一些题,并且能自动地评估它的好坏。
总之,我觉得这里可能有两类的东西,比如像任务解决和陪伴机器人,在这两类的里面怎么去做评估呢?
我初步的想法是,首先做任务解决可以在一些模拟的环境里边去完成这样的一些Capture-The-Flag问题,Capture-The-Flag是信息安全里的问题的说法,意思是我给你一个问题的描述,给你一个环境,在这个环境里面,如果找到这个旗就算题做对了。这种情况下它是可以去评估不同的模型的任务解决能力。
在陪伴机器人相对来说很难的一个事情,因为很难评估到底它是陪伴得好还是不好。现在想到的一个方法是做一个Elo评分,它可以在不同的机器人之间互相给对方打分,比如同样都是让它们各聊100回合,聊了100回合之后,我让它打个分。它对自己可能不一定公平,但是对别人一般是公平的,这样它可以在这种方式下做一个相对的评估,这是我们目前的做法。
最后还有一点内容,关于它的商业模式如何让用户构建和优化AI agents,我们的做法是构建AI agent平台。在平台里面的用户和平台,它都各有一定的分成,有点像是淘宝,我做了一个淘宝平台,用户卖货肯定是要有收入的。最后就是我们有AI agent平台,就除了服务平台,我觉得是后边需要重点做的是训练平台,比如如何把这些相关的东西传上去,让它训练,当然这也跟Agent infra有关,因为现在的Agent infra比较简单,大部分它都是只能上传一些文字,最多再上传一些音频,但是音频处理它需要能够上传多种多样多模态的数据,让它在这里做训练,而不是简单地通过把它塞进提示的方式搞定。
今天分享的东西就这么多,谢谢大家。
Q&A
席友:加入情感system tool等方式对机器人的推理能力提升有多大?比如LLaMA2可以用这样的方式达到GPT-4的推理能力吗?
李博杰:目前来看加入情感可能对推理能力的提升不大,因为它主要是陪伴型机器人得用的东西。system tool对机器人的推理能力提升是比较大的,它实际上就是传统的那些思维转换,或者是逐步思考,或者是要让这些Agent之间互相去讨论,做一个头脑风暴,这些都是system tool思维的方式,但是它可能没有办法根本性的改变它的能力,比如你让几个LLaMA2的机器人之间互相去讨论,它也达不到GPT-4的能力,因为GPT-4和LLaMA2差距是比较大的,只能是在一定程度上提升,比如我用LLaMA2搞完了头脑风暴之后,可能比GPT-3.5不搞头脑风暴的效果会更好。
席友:大语言模型的发展会不会逐步覆盖当前一些上述的Agent的能力?
李博杰:我觉得是会的,首先记忆是可以通过长上下文来解决,它就是记忆不做压缩,直接拿长上下文。还有一些人他提出记忆可以用embedding的形式存储,比如可以用RWKV或者RNN之类的结构直接把它存进去,这也是一些新的基础模型的方向。任务规划我觉得更主要的就是要靠大语言模型解决,我个人感觉从外部系统解决,还是很不好解决的一件事情。就像我在小冰,2017、2018年的时候,当时没有大语言模型,整天都在折腾怎么让它记住前面几句对话的内容;要不然就是怎么指代识别,比如“它”到底指的是什么,折腾半天最后效果也不好。现在这些问题GPT-3.5就全解决了,包括情感识别,当前用户是什么状态,像GPT-4识别相当的准,可能比人都识别得准,但是你要用当时那些老的东西,它怎么都识别不对。所以我感觉基础模型还是非常关键的,可能基础模型会逐渐覆盖这些能力,但是现在基础模型都不行的情况下,或者GPT-4太贵的情况下,我只能使用一些系统的方法来去做一些Engineering。
席友:对于类似Character.AI这样的平台,在短期内的发展方向是什么?比如要在较长的对话里,进行意图识别和方案供给,应该更多依赖长聊天的语料,还是走大量的沟通知识图谱?
李博杰:我们现在做可能更多的是通过语料的方法去做,因为知识图谱这个东西需要比较大的成本去构建,而且构建出来之后,实际上相当于是个检索式问答,这里它能够提到的一些知识可能还是相对来说比较有限的,而且它的灵活性也没有特别好。我觉得知识图谱可能更适合的是一些比较封闭的场景,比如是某一个比较小的特定领域的,如果是长聊天的场景,实际上是更开放的领域,因为它可能涉及各种各样的问题,所以我觉得这样可能会用微调的方法可能会更好一点。
席友:业务项目壁垒在哪里?
李博杰:我自己感觉最关键的第一个是核心技术,Agent Infra它到底做得像不像人,它能够解决多复杂的问题,这些都是一些非常基础的问题。第二,它的应用的生态也非常关键,因为很多时候,有些用户可能用惯了这个平台,尤其是他在这个平台上建立的一些记忆,如果现在的Agent粘性还不够,它的记忆普遍都做得不好,但是未来如果慢慢做得好。比如我跟一个好朋友聊了一年,他知道我很多东西,你现在突然让我去找一个完全不认识的人聊天,我觉得是一个很难去做的事情。所以粘性要做好,一定是要去跟用户建立一个长期的稳定关系,才可以达到粘性的效果。现在的Agent之所以大部分用户粘性不高,是因为它的记忆和情感系统都没有做好,所以用户对它是没有任何依赖性和粘性的。
席友:agent的设定?
李博杰:Agent的设定我觉得可以包括几个方面,首先是类似Character AI的Agent描述等基本信息。更重要的是每个Agent需要有它自己的知识库,有它自己的人格,有它自己的声线。这就要求用户可以上传一些语料作为Agent的设定,一些语料是事实性的知识库,一些对话性质的语料是人格和性格的设定,一些语音语料可以用来模仿指定人物的声音。
人格可以通过语料的方法做设定,也可以设置类似于回答心理测试问卷的方法,给它几个问题的预设回答,以后就按照这样的人设去行动。我觉得这两种设置人格的方式实际上也可以结合起来。这样结合起来也是蛮有趣的,比如我之前尝试过把马斯克的语料去投喂了以后,它肯定是马斯克的人格,但是我又通过心理测试问卷的方法,给它去增加了一些新的设定,跟马斯克又不一样了,还是蛮有趣的一件事情。
席友:关于AI-Agent落地的场景?
李博杰:我自己感觉有三大类的场景。第一大类的场景就是陪伴机器人,陪人闲聊的。第二大类的场景是个人助手。第三大类场景就是企业级的这种协作机器人,帮助去做一些事情,但是它一定不是代替人,而是帮助人,这是比较好的三个场景。
席友:你怎么看以这种平台的形式来做一堆长尾的机器人聚合起来,还是你认为会更多垂直打一个行业?
李博杰:我觉得可能是取决于行业深度,如果是教育行业,要教人什么东西?如果只是一个陪人聊英语,可能我们做的这个Agent的平台就足够了。但是如果真的是要辅导学生,比如数学或者是K12,那可能还需要很多的训练语料在里面,这可能还是只有培训机构才能拿到比较多的语料,这个属于一个非常垂直的行业,还是有很深度的,它可能会有个专业Agent。当然如果Agent平台足够厉害,非AI专业的用户,只要有想法,有数据,或者有自己的品牌IP,都可以这个平台上面直接去构建的这样的一个专业的Agent。