要让模型有自己的思考，**最关键的就是要把思考的片段和外界输入输出的片段在自回归模型输入 token 的层面上就分隔开** ，就像是现在有 system、user 和 assistant 这些特殊 token，可以增加一个 thought。这个 thought 就是大模型的工作记忆。
我们也应该注意到，目前 OpenAI API 这种模型与世界的交互方式本质上还是批处理式而非流式的，每次 OpenAI API 调用都是无状态的，需要带上前面的所有聊天记录，重复计算所有的 KV Cache。当上下文比较长的时候，这个重复计算 KV Cache 的开销是相当高的。如果我们把 AI Agent 想象成一个实时与世界交互的人，它其实是不断在流式接受外界的输入 token，KV Cache 是一直在 GPU 内存里或者临时换出到 CPU 内存里，这样 **KV Cache 就是 AI Agent 的工作记忆，或者说 AI Agent 的状态。**
  

![](https://pic3.zhimg.com/v2-260e9640c791cc0a953ad0e81a50c896_1440w.jpg)
  

那么工作记忆中应该包括什么呢？我认为**工作记忆最重要的就是 AI 对自己的感知，以及 AI 对用户的感知** ，这两者缺一不可。
早在 2018 年，我们基于 RNN 这套老方法搞微软小冰的时候，就做了一个情感系统，其中用一个向量 Eq 表示用户的状态，比如用户在讨论的话题、用户的意图、情绪状态，以及年龄、性别、兴趣、职业、性格等基本信息。再用一个向量 Er 表示小冰的状态，也包括正在讨论的话题、小冰的意图、情绪状态，以及年龄、性别、兴趣、职业、性格等基本信息。
这样一来，虽然语言模型的能力相比今天的大模型是弱爆了，但至少能稳定的回答 “你几岁了” 这种问题，不会一会儿说自己 18 岁，一会儿说自己 28 岁了。小冰也能够记住用户的一些基本信息，不至于感觉每次聊天都很陌生。
今天的很多 AI Agent 却没有在工程上做好这些优化，比如 prompt 里面没有写清楚 AI 角色目前的设定，就没办法稳定回答自己几岁；只是记录最近的聊天记录而没有做记忆系统，那也记不住用户几岁。
### **有趣的灵魂：社交能力**
  

![](https://pic4.zhimg.com/v2-95642645903ec695f33ab6482d32273d_1440w.jpg)
  

下一个问题就是 **AI agent 会不会主动关心人** 。看起来主动关心是个很高级的能力，其实一点也不难。我主动关心老婆，是因为每天会想起来她好几次。只要想起来了，结合前面说过的话，就会自然去关心人。
对于 AI 来说，**只要让 AI 有一个内部的思考状态，也就是前面提到的工作记忆，然后每小时自动唤醒一次就行了** 。
比如用户说了第二天要去医院看病，那么第二天的时间到了，我告诉大模型当前时间和工作记忆，大模型就会输出关心人的话，并且更新工作记忆。工作记忆更新之后，大模型知道用户还没有回复，就知道不要不断骚扰用户。
与之相关的一个问题是 **AI Agent 会不会主动联系用户，会不会主动开启话题。**
**人类有说不完的话题是因为每个人都有自己的生活，在好朋友面前就是有分享欲的** 。因此名人的数字分身就相对比较容易做主动分享，因为名人有很多公开的新闻事件，可以经常分享给用户。对于一个虚构的人物形象，有可能就需要运营团队来给虚构形象设计自己的生活了。所以我一直认为纯闲聊很容易导致用户不知道该聊什么，AI Agent 一定要有故事性才能长期吸引用户。
除了分享个人生活，还有很多开启话题的方式，例如：
  * 分享当前的心情和感受；
  * 分享一下用户可能感兴趣的最新内容，就像抖音的推荐系统；
  * 回忆过去，例如纪念日，美好的回忆；
  * 最笨的方法就是通用的打招呼类问题，比如 “在干嘛？” “我想你了”。


当然作为一个高情商的 AI Agent，**什么情况下要关心，什么情况下要主动分享，是需要跟当前 AI 对用户和自己的感知相关的** 。比如如果一个女生对我不感兴趣，我却总是给她一天发很多生活日常，那估计过不了几天就被拉黑了。同样，如果 AI Agent 跟用户还没聊几句，就天天给推送内容，用户只会把它当作广告。
我自己之前是比较内向的，很少有情绪波动，不会拒绝别人，也害怕被别人拒绝，因此不敢主动追妹子，也从来没有被妹子拉黑过。还好我很幸运地遇到了合适的妹子，所以才没有落到 “我今年 30 岁了，跟很多校友一样，还没有谈过恋爱” 这种地步。现在的 AI Agent 也是跟我一样没有情绪波动，不会拒绝用户，也不会说可能让人伤心、反感或者生气的话，因此自然也很难跟用户主动建立深层的陪伴关系。在虚拟男女友这个赛道上，目前的 AI Agent 产品还是主要靠打擦边球，还做不到基于信任的长期陪伴。
  

![](https://pic2.zhimg.com/v2-385beeb5b7ec6c61b85663c001f9fc2b_1440w.jpg)
  

AI Agent 如何关心人、如何主动开启话题，是社交技巧的一方面。**多个 AI Agent 如何社交，是更难也更有趣的一件事情** ，比如狼人杀、谁是卧底之类经典的社交推理类游戏。
狼人杀的核心是隐藏自己的身份，并识破其他人伪装的身份。**隐瞒和欺骗其实是跟 AI 的价值观不符的** ，因此有时候 GPT-4 会不配合。特别是狼人杀里面的 “杀” 字，GPT-4 会说，我是一个 AI 模型，不能杀人。但把 “杀” 字改成 “移除” 或者 “流放”，GPT-4 就可以干活了。因此我们可以看到，**在角色扮演场景下如果 AI 演的入戏，那就是老奶奶漏洞；如果 AI 拒绝演戏，那就没有完成角色扮演的任务。**
这就体现了 **AI 在安全性和有用性之间的矛盾** 。一般我们评估大模型时，都要同时报告这两个指标。一个什么都不回答的模型安全性最高，但有用性最低；一个口无遮拦的未对齐模型有用性更强，但是安全性就很低。OpenAI 因为需要承担很多社会责任，就需要牺牲一些有用性来换取安全性。Google 是一个更大的公司，在有用性和安全性之间就更偏向安全性。
要从多轮对话中发现破绽并识破谎言，需要比较强的推理能力，GPT-3.5 级别的模型很难做到，需要 GPT-4 级别的模型。**但如果简单将完整的历史发言交给大模型，信息分散在大量没有太多营养的发言和投票中，一些发言之间的逻辑关联还是很难被发现。** 因此我们可以采用 MemGPT 的方法，把游戏状态和每一轮的发言进行总结，这样不仅节约 token，还能提高推理效果。
此外，在投票环节下，大模型如果仅仅输出一个代表玩家编号的数字，经常由于思考深度不足导致胡乱投票。因此，我们可以采用**先想后说（Chain of Thought）** 的方法，首先输出分析文本，再输出投票结果。发言环节也是类似的，先输出分析文本，再简洁地发言。
  

![](https://pic3.zhimg.com/v2-ce84bd60392cd848770518451e7b036c_1440w.jpg)
  

狼人杀中的 AI Agent 是按顺序发言的，不存在抢麦的问题。那么如果是**几个 AI Agent 就一个话题自由讨论，它们能不能像正常人一样交流，既不冷场又不互相抢麦？** 为了达到比较好的用户体验，我们希望不仅仅局限于文字，让这些 AI Agent 在一个语音会议里吵架或者演绎剧情，这可以实现吗？
其实有很多工程的方法可以做，比如**首先让大模型选择发言角色，再调用对应的角色去发言** 。这样相当于增加了发言延迟，但可以彻底避免抢麦或者冷场。更类似真人讨论的方法是，各个角色分别以一定的概率发言，遇到抢麦就退让。或者在发言之前先判断前面的对话跟当前角色是否相关，不相关就不发言。
但是我们有更根本的一种方法：**让大模型的输入输出都变成一个持续的 token 流，而不是像现在 OpenAI 的 API 这样每次都输入一个完整的 context** 。Transformer 模型它本身就是自回归的，源源不断地接收从语音识别过来的外部输入 token，也在不断接收自己前面内部思考的 token。它可以输出 token 到外部的语音合成，也可以输出 token 给自己思考。
当我们把大模型的输入输出都变成流式的之后，大模型就变成有状态的了，也就是 KV Cache 需要持久驻留在 GPU 内。语音输入 token 的速度一般不超过每秒 5 个，语音合成 token 的速度一般也不超过每秒 5 个，但是大模型本身输出 token 的速度可以达到每秒 50 个以上。这样如果 KV Cache 持久驻留在 GPU 内，并且没有太多内部思考的话，GPU 里的内存大多数时间是闲置的。
因此可以考虑做**持久化 KV Cache，把 KV Cache 从 GPU 内存传出到 CPU 内存，下一次输入 token 的时候再把 KV Cache 加载进来** 。例如对于 7B 模型，用了 GQA 优化之后，典型的 KV Cache 在 100 MB 以下，通过 PCIe 传出再传入只需要 10 毫秒。如果我们每秒加载一次 KV Cache 做一次推理，处理一组几个语音识别出来的输入 token，不会太影响整个系统的性能。
这样**换入换出的性能损失是比重新输入上下文，重新计算 KV Cache 更低的。但至今没有哪家模型推理提供商做这种基于持久化 KV Cache 的 API，我猜测主要是应用场景问题** 。
大多数类似 ChatGPT 的场景中，用户与 AI Agent 的交互并不是实时的，有可能 AI 说了一句话后用户好几分钟不说话，这样持久化 KV Cache 占据大量 CPU 内存空间，就会带来很大的内存成本。因此这种持久化 KV Cache 最适合的场景也许就是我们刚讨论的实时语音聊天，只有输入流的间隔足够短，存储持久化 KV Cache 的开销可能才更低。因此我认为 **AI Infra 一定要跟应用场景结合** ，如果没有好的应用场景驱动，很多 [infra](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=infra&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJpbmZyYSIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjI0MTQyMzM3OCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.gtAYsDbRg28OjDmAWEqN-3IoyuBfQAJqQBXvvKyaK4I&zhida_source=entity) 优化都没法做。
如果我们有 Grace Hopper 这样的统一内存架构，由于 CPU 内存和 GPU 之间的带宽大了，持久化 KV Cache 的换入换出代价会更低。但统一内存的容量成本也比主机的 DDR 内存更高，因此会对应用场景的实时性更加挑剔。
  

![](https://pica.zhimg.com/v2-fe30619f8fe2e49ceb60a01603e5741e_1440w.jpg)
  

上面一页讲的多 Agent 互动方案中，还是依靠语音识别和语音合成来把语音转换成 token 的。前面我们在多模态大模型方案中分析过，这种方案大概需要 2 秒的延迟，包括停顿检测 0.5s + 语音识别 0.5s + 大模型 0.5s + 语音合成 0.5s。这里面每一项都可以优化，比如我们已经优化到 1.5 秒，但是很难优化到 1 秒内。
为什么这种语音方案延迟高呢？根本上是因为**语音识别和合成过程需要按句子 “翻译”，而不完全是流式的** 。
我们的后端同事总是把语音识别叫做 “翻译”，我一开始不理解，后来发现确实很像是国际谈判会议中的翻译。一方说一句话，翻译员翻译一句，这时候对面才能听懂。对面回答一句话，翻译员翻译，然后才能听懂。这种国际会议的沟通效率都不是很高。传统语音方案中，大模型听不懂声音，所以需要先把声音按照句子停顿分隔开，使用语音识别翻译成文本，送给大模型，大模型把输出的内容拆成一句一句的，使用语音合成翻译成语音，因此整个流程的延迟很长。我们人类是听一个字想一个字，绝不会听完一整句话之后才开始想第一个字。
要想做到极致的延迟，就需要**端到端的语音大模型** 。也就是把语音经过合适的编码后，直接变成 token 流输入到大模型。大模型输出的 token 流经过解码，直接生成语音。这种[端到端模型](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E7%AB%AF%E5%88%B0%E7%AB%AF%E6%A8%A1%E5%9E%8B&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLnq6_liLDnq6_mqKHlnosiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.H-V7cdfbrAmswnU_TpYzuJy6YCuFELlcNL0wl5PVgVQ&zhida_source=entity)可以实现 **0.5 秒以内的语音响应时延** 。Google Gemini 的演示视频就是 0.5 秒的语音响应时延，我认为[端到端语音大模型](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E7%AB%AF%E5%88%B0%E7%AB%AF%E8%AF%AD%E9%9F%B3%E5%A4%A7%E6%A8%A1%E5%9E%8B&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLnq6_liLDnq6_or63pn7PlpKfmqKHlnosiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.nG6Na7wUyx7EP6tua4IrMIj46EeuWocRMc8GFRSPiQo&zhida_source=entity)是做到这么低时延最可行的方案。
除了降低时延，端到端语音大模型还有另外两个重要优势。
第一，它**可以识别和合成任何声音** ，除了说话，还包括唱歌、音乐、机械声、噪声等。因此我们可以把它叫做一个**端到端声音大模型** ，而不仅仅是语音大模型。
第二，端到端模型可以**减少语音/文字转换导致的信息丢失** 。例如在现在的语音识别中，识别出的文字会丢失说话人的情感和语气信息，而且由于缺少上下文，专有名词经常识别错误。在现在的语音合成中，为了让合成的语音带有情感和语气，一般需要在大模型的输出文本中进行适当的标注，再训练语音模型来根据标注生成不同的情感和语气。使用端到端声音大模型后，**识别和合成就会天然带有情感和语气信息，并且可以根据上下文更好地理解专有名词** ，语音理解的准确率和语音合成的效果都能显著提升。
### **有趣的灵魂：性格匹配**
  

![](https://pica.zhimg.com/v2-d84628cd48d85ad5e51e2341f4f3aeac_1440w.jpg)
  

在结束有趣的 AI 部分之前，我们来思考最后一个问题：**如果我们的 AI Agent 是一张白纸，比如我们做一个智能语音助手，或者我们有好几个 AI 形象需要匹配最合适的，那么他/她的性格是跟用户越相似越好吗？**
市面上测试伴侣匹配度的问卷一般都是一些主观问题，比如 “你们在一起是否经常吵架”，这对设定 AI Agent 的人设来说完全没用，因为用户跟 AI 还不认识呢。因此我刚开始做 AI Agent 的时候，就想搞一种完全客观的方法，根据社交网络上的公开信息来推测用户的性格和兴趣爱好，然后匹配 AI Agent 的人设。
我把自己比较熟悉的一些女生的社交网络公开 profile 交给大模型，结果发现匹配度最高的竟然是我的前女友。用大模型的话来说，我们在很多方面就像做过 [alignment](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=alignment&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJhbGlnbm1lbnQiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.D61SDj47usf5ISBUksfmw5gEVRD91k4CWd3FSYVu1fk&zhida_source=entity) 一样。但我们最终也没能走到一起。那个这个匹配度测试出了什么问题呢？
首先，社交网络上的公开信息一般包含的都是每个人性格中正面的一面，但不包含其中负面的一面。就像《黑镜》里面女主并不喜欢根据男主社交网络信息做出来的机器人 Ash，因为她发现机器人 Ash 在一些负面情绪上跟真实的 Ash 完全不一样。我算是比较喜欢分享生活的人，但我的 blog 里面负面情绪也比较少。如果 AI Agent 和用户负面情绪的点正好撞在一起，那就很容易炸。
其次，性格和兴趣各个维度的重要性并不是等价的，有的方面一个不匹配就可能抵消了很多其他方面的匹配。这张图就是 Myers Briggs 的 MBTI 性格匹配图，其中蓝色的格子是最匹配的，但是它们都不在对角线上，也就是性格非常相似的都是比较匹配，但不是最匹配。最匹配的是什么呢？S/N（感觉/直觉）和 T/F（思考/情感）这两个维度最好是相同的，而另外两个维度，内外向（E/I）和 J/P（判断/感知）最好是互补的。
MBTI 里面最重要的一个维度是 S/N（感觉/直觉），简单来说，S（感觉）型的人更关注当下，而 N（直觉）型的人更关注未来。比如一个 S 型的人喜欢享受当下的生活，而像我这样的 N 型人天天思考人类的未来。这张性格匹配图里面最不匹配的基本上都是 S/N 相反的。
**因此，一个 AI Agent 如果要塑造成完美伴侣的形象，不是跟用户的性格和兴趣爱好越相似越好，而是需要在合适的地方形成互补。还要随着交流的深入不断调整 AI 的人设，尤其是在负面情绪方面需要跟用户互补。**
我当时还做了一个实验，把一些我熟悉的情侣的社交网络公开 profile 交给大模型，结果发现平均匹配度并没有想象的那么高。那么为什么每个人没有跟匹配度高的在一起呢？
第一，前面说过了，这个匹配度测试机制有 bug，匹配度高的并不一定就适合在一起。第二，**每个人的社交圈子其实都很小，一般也没有这么多时间一个一个尝试去匹配筛选** 。大模型可以几秒钟读完 10 万字的资料，比量子波动速读还快，人可没这个本事，只能凭直觉大概匹配一下，再在相处中慢慢了解和适应。其实匹配度不高也并不一定不幸福。
**大模型为我们提供了新的可能，用真人的社交网络 profile 测匹配度，可以帮我们从茫茫人海中筛选潜在伴侣** 。比如告诉你学校里的学生哪些是最匹配的，这样遇到合适妹子的概率就大大增加了。匹配度源自性格、兴趣、三观、经历的相似度，不是单个人的绝对评分而是一个两两关系，并不会出现大家都喜欢少数几个人这种情况。
AI 甚至还可能为我们创造实际中很难遇到的完美伴侣形象。但是沉迷于这样的虚拟伴侣是不是一件好事，不同的人大概有不同的看法。更进一步，如果 AI 完美伴侣有了自己的意识和思考，还能主动跟世界交互，有了自己的生活，那可能用户的沉浸感就会更强，但那是不是就成了数字生命？数字生命又是一个极具争议性的话题。
人的社交圈子很小，人类在宇宙中也很孤独。[费米悖论](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E8%B4%B9%E7%B1%B3%E6%82%96%E8%AE%BA&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLotLnnsbPmgpborroiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.M_WPCY2cW93Uw1KcbO_Wk6eSbRCkv2UdAYrXgEsx3OA&zhida_source=entity)有一个可能的解释，宇宙中很可能存在大量智能文明，但是每个文明都有一定的社交圈子，就像我们人类至今都没有走出太阳系。在浩瀚的宇宙中，智能文明之间的相遇就像合适的伴侣相遇一样可遇不可求。
大模型怎么促成文明之间的相遇呢？因为信息可能比物质更容易传播到宇宙深处。[我在 5 年前就想过](https://link.zhihu.com/?target=https%3A//01.me/2023/05/measuring-intelligence/)，AI 模型可能成为人类文明的数字化身，跨越人类肉体的时空限制，把人类真正带到太阳系甚至银河系之外，成为星际文明。
## **有用的 AI**
  

![](https://pic1.zhimg.com/v2-d5886d03d2ef8f673b26fefb8b530036_1440w.jpg)
  

前面讲了这么多有趣的 AI，下面我们来聊聊有用的 AI。
**有用的 AI 其实更多是一个大模型基础能力的问题，比如复杂任务的规划和分解、遵循复杂指令、自主使用工具以及减少幻觉等等，并不能通过一个外部的系统简单解决** 。比如 GPT-4 的幻觉就比 GPT-3.5 少很多。区分哪些问题是模型基础能力问题，哪些问题是可以通过一套外部系统来解决的，也是很需要智慧的。
其实有一篇很著名的文章叫做 **The Bitter Lesson** ，它讲的是**凡是能够用算力的增长解决的问题，最后发现充分利用更大的算力可能就是一个终极的解决方案** 。
**Scaling law 是 OpenAI 最重要的发现，但是很多人对 Scaling law 还是缺少足够的信仰和敬畏之心。**
### **AI 是干活快但不太靠谱的初级员工**
  

![](https://picx.zhimg.com/v2-95d20129b51a9bbe77910da67d25e331_1440w.jpg)
  

在当前的技术条件下我们能做一个什么样的 AI 呢？
要搞清楚大模型适合做什么，我们需要先想清楚一点：**有用 AI 的竞争对手不是机器，而是人** 。工业革命里面的机器是取代人的体力劳动，计算机是取代人的简单重复脑力劳动，而大模型则是用来取代人更复杂一些的脑力劳动。所有大模型能做的事情，人理论上都能做，只是效率和成本的问题。
因此，**要让 AI 有用，就要搞清楚大模型到底哪里比人强，扬长避短，拓展人类能力的边界。**
比如，**大模型阅读理解长文本的能力是远远比人强的** 。给它一本几十万字的小说或者文档，它几十秒就能读完，而且能回答出 90% 以上的细节问题。这个大海捞针的能力就比人强很多。那么让大模型做资料总结、调研分析之类的任务，那就是在拓展人类能力的边界。Google 是最强的上一代互联网公司，它也是利用了计算机信息检索的能力远比人强这个能力。
再如，**大模型的知识面是远比人广阔的** 。现在不可能有任何人的知识面比 GPT-4 还广，因此 ChatGPT 已经证明，通用的 [chatbot](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=chatbot&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJjaGF0Ym90IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjQxNDIzMzc4LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.J4_roBKAavonUa555Q8TzEeVBuPc4AtGXgpWzyCgkqk&zhida_source=entity) 是大模型一个很好的应用。生活中的常见问题和各个领域的简单问题，问大模型比问人更靠谱，这也是在拓展人类能力的边界。很多创意性工作需要多个领域的知识交叉碰撞，这也是大模型适合做的事情，真人因为知识面的局限，很难碰撞出这么多火花来。但有些人非要把大模型局限在一个狭窄的专业领域里，说大模型的能力不如领域专家，因此认为大模型不实用，那就是没有用好大模型。
在严肃的商业场景下，我们更多希望**用大模型辅助人，而不是代替人** 。也就是说人是最终的守门员。比如说大模型阅读理解长文本的能力比人强，但我们也不应该把它做的总结直接拿去作为商业决策，而要让人 review 一下，由人做最终的决定。
这里边有两个原因，**第一个是准确性问题** ，如果说我们之前在 [ERP 系统](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=ERP+%E7%B3%BB%E7%BB%9F&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJFUlAg57O757ufIiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjQxNDIzMzc4LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.bANahIaiUerfmbyHHiKgKueY8c83E_uOSeGxUEFkQYc&zhida_source=entity)里面做一个项目，回答这个部门过去十个月平均工资是多少？让它生成一个 SQL 语句去执行，但是它总有 5% 以上的概率会生成错，通过多次重复也仍然有一定的错误率，用户不懂 SQL，在大模型把 SQL 写错的时候也没法发现，因此用户没办法判断生成的查询结果对不对。哪怕有 1% 的错误率，这个错误率还是不能忍受的，这就很难商用。
另外一个方面，**大模型的能力目前只是达到一个入门级的水平，达不到专家级** 。华为的一个高管给我们开会的时候就有一个很有意思的说法：如果你是领域专家，你会觉得大模型很笨；但是如果你是领域的小白，你就会发现大模型非常聪明。我们相信基础大模型一定会进步到专家级，但是现在我们不能坐等基础大模型的进步。
**我们可以把大模型当成一个干活非常快但不太靠谱的初级员工** 。我们可以让大模型做一些初级的工作，比如写一些基础的 [CRUD 代码](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=CRUD+%E4%BB%A3%E7%A0%81&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJDUlVEIOS7o-eggSIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjI0MTQyMzM3OCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.9oXGMQbAHWh5nb1rx7J1irtWB2BC4n8dX6PsIshhjww&zhida_source=entity)，比人写得还快。但是你让他去设计系统架构，去做研究解决技术前沿问题，那是不靠谱的。我们在公司里也不会让初级员工去做这些事情。有了大模型之后，相当于有了大量又便宜干活又快的初级员工。**怎么把这些初级员工用好，是一个管理问题。**
我的导师在我刚开始读博的第一次会议上，就让我们学一些管理。当时我还不太理解为啥做研究还要学管理，现在我觉得导师讲得太好了。现在重要的研究项目基本上都是团队作战，就必须要管理了。有了大模型之后，我们的团队中又增加了一些 AI 员工，这些 AI 员工还不太靠谱，管理就更重要了。
**AutoGPT 就是按照德鲁克的管理学方法，把这些 AI 员工组织成一个项目，分工合作完成目标。** 但 AutoGPT 的流程还是相对僵化的，因此经常在一个地方原地转圈圈，或者走进死胡同里。如果把企业中管理初级员工的一套机制、项目从立项到交付的一套流程引入 AutoGPT，可以让 AI 员工干得更好，甚至有可能做成像 Sam Altman 说的那样，只有一个人的公司。
  

![](https://pic2.zhimg.com/v2-d53996a539eaee686de13a2b2fad1059_1440w.jpg)
  

当前有用的 AI Agent 大致可以分成两类：个人助理和商业智能。
**个人助理类的 AI Agent** ，其实已经存在很多年了，比如手机上的 Siri、小度智能音箱。最近一些智能音箱产品也接入了大模型，但是由于成本问题还不够聪明，语音响应延迟还比较高，而且也没有办法做 [RPA](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=RPA&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJSUEEiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.7waRhCSe0achRGoTYC8jJaZxGmA9KDi3TmpUAlWBE8Q&zhida_source=entity) 跟手机 App 或者智能家居设备互动。但这些技术问题最终都是能解决的。
很多创业公司都想做通用的语音助手或者智能音箱，但我觉得这些**大厂还是有入口优势** 。大厂不做是因为成本、隐私等多方面的考虑，一旦大厂哪一天下场了，创业公司有什么竞争优势？反倒是结合一些品牌 IP 做智能互动手办，或者 [Rewind](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=Rewind&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJSZXdpbmQiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.lUG4OS0pDsjcpFPUGHTlrlR1kHFxnR1YWXgk592BScA&zhida_source=entity)、AI Pin 这些有设计感的智能硬件，可能有一些空间。
**商业智能类的 AI Agent** ，数据和行业 know-how 是护城河。数据是大模型的关键，特别是行业知识，公开语料中可能根本没有。OpenAI 不仅强在算法上，更是强在数据上。
在产品方面，我认为基础模型公司应该学习 **OpenAI 的 1P-3P 产品法则** 。什么意思呢？**只要一两个人（1P）开发的产品就自己（first Party）做，需要三个人（3P）以上开发的产品就让第三方（third Party）做** 。
比如 OpenAI API、ChatGPT、GPTs Store 这些产品，都不是特别复杂，一个人做个 demo 足够了。就算是比较成熟的产品，也不需要一个很大的团队。这种就是 1P 产品。
而比较复杂的行业模型、特定场景下复杂任务的规划求解、复杂的记忆系统，就不是一两个人能够搞定的。这种 3P 产品就适合让第三方去做。
基础模型公司应该专注于基础模型能力和 infra，相信 scaling law，而不是不断打补丁。**基础模型公司最忌讳的就是投入大量高级工程师和科学家去做雕花的事情，搞了一堆 3P 产品，最后又没有相关的客户关系，卖不出去。** 3P 产品最重要的可能是数据、行业 know-how 和客户资源，不一定是技术。
这就是为什么上一波 AI 创业公司很难赚钱，因为上一波 AI 不够通用，最后都是一些需要大量定制的 3P 产品，坐拥大量高薪科学家的明星创业公司反倒不一定打得过雇了一堆大专程序员的接地气公司，后者虽然估值上不去，甚至都入不了投资人的法眼，但现金流每年都是正的。
下面几个 “有用 AI” 的例子都是一两个人可以开发的 1P 产品，其实也很有用了。
### **有用 AI 的 1P 产品例子**
  

![](https://picx.zhimg.com/v2-8e5aaa1b1efeda0f3d545e3dd6890cad_1440w.jpg)
  

第一个有用 AI 的例子是**导游** ，这也是我开始创业之后尝试做的第一个 AI Agent。
当时我一个人来美国出差，同住的几个朋友要么工作很忙要么比较宅，而我很喜欢出去玩。我在 LA 的朋友也不多，所以我就想做一个 AI Agent 陪我一起出去玩。
我发现 **GPT-4 真的知道很多著名景点，甚至还能帮你做行程规划** 。比如说我要去[约书亚树国家公园](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E7%BA%A6%E4%B9%A6%E4%BA%9A%E6%A0%91%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLnuqbkuabkuprmoJHlm73lrrblhazlm60iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.tyUGuVQa7ujdNilbNckRYY1cT-xoWqefgrrKCLjA4lo&zhida_source=entity)玩一天，就可以规划出早上去哪、中午去哪、下午去哪，每个地方的停留时间还都比较合理。当然要用英文问，用中文的效果就会差一些。可以说网上有旅游攻略已经包含了这些信息，但用搜索引擎把合适的攻略找出来并不容易。之前我每次出去玩都要提前一天做攻略，现在路上跟 AI Agent 聊几句就都搞定了。
我去 USC 玩的时候，刚进校园就遇到了一波游客，他们想找个学生带他们逛校园。我就说我也是第一次来 USC，但是我是做 AI Agent 的，可以让 AI Agent 带我们转一转。老外游客们很 nice 的就跟我一起走了。AI Agent 给我们推荐了 USC 校园最著名的几个建筑。每到一个景点，我会让 AI Agent 语音讲讲这里的历史，大家觉得就像请了个导游一样靠谱，说 ChatGPT 也应该增加这个功能。第二天的 OpenAI dev day 上展示的应用场景果然就有旅行助理。
朋友带我去约书亚树国家公园玩的时候，门口有一个 “禁止露营” 的标志，我们不知道是啥意思，就分别用 GPT-4V 和我们公司的 AI Agent 去做图片识别，结果 GPT-4V 答错了，我们的 AI Agent 反而答对了。当然这不是说我们的 AI Agent 比 GPT-4V 还厉害，对错都是有概率的。**一些知名的地标 AI Agent 也是可以识别出来的** ，比如斯坦福校园的纪念教堂。
不要小看大模型知道很多著名景点这个能力。论知识面，没有人能够比得过大模型。比如 2022 年，有个朋友跟我说住在尔湾，我那时候甚至没有听说过尔湾。我问尔湾在哪，朋友说尔湾在[橙县](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E6%A9%99%E5%8E%BF&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLmqZnljr8iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.8Mv-_cMiac_TK9V_z3uiufuVpyoje0283ayCHlOA0oQ&zhida_source=entity)，橙县在加州，我查了半天地图和 Wiki 才搞清楚尔湾、橙县到底是个什么关系，为啥不直接说是在洛杉矶。我老婆前段时间也分不清尔湾和湾区。我们也不算信息特别闭塞的人，但每个地方的生活常识并不是看起来那么显然。
去过这些地方的人会觉得这些常识很容易记住，那是因为人输入的是多模态数据。现在的大模型可没有地图和图片可看，仅靠文本训练语料就能够上知天文，下知地理，已经很不容易了。
  

![](https://pic2.zhimg.com/v2-07ec7787e76fe1e9267f556be2f1580b_1440w.jpg)
  

第二个有用 AI 的例子，也是我在华为探索过的项目，是**企业 ERP 助手** 。
用过 ERP 系统的都知道，从复杂的图形界面里找到一个功能非常困难，而且有些需求很难点点图形界面就能完成，因此要么把数据导出到 Excel 表里面处理，甚至还得用 Pandas 这类专门的数据处理工具。
我们知道大多数人都能把需求用自然语言描述清楚。大模型就提供了一种全新的自然语言用户界面（LUI），用户描述自己的意图，AI Agent 就可以把活干完。**GUI 是所见即所得，LUI 是所想即所得。**
**大模型并不擅长处理大量数据，因此 ERP 助手并不是让大模型处理原始数据，而是用大模型将用户的自然语言需求自动转换成 SQL 语句，然后再去执行 SQL 语句。** 这个代码生成的路线在很多场景下都是比较靠谱的，这里的代码不一定是 SQL、C、[Python](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=Python&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJQeXRob24iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.HvCoLw7PWwkQJv89fYc32afmXb88R0_QmsD4VocixGc&zhida_source=entity) 这样的通用编程语言，也包括 IDL（[接口描述语言](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E6%8E%A5%E5%8F%A3%E6%8F%8F%E8%BF%B0%E8%AF%AD%E8%A8%80&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLmjqXlj6Pmj4_ov7Dor63oqIAiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.ZpUssqDshqdV1jeSXdGqLO2L6v7bXyZUnA3HzerY1dw&zhida_source=entity)），也就是特定的数据格式。比如大模型要调用 API，输出的文本格式奇奇怪怪，让大模型输出特定格式的 JSON 就老实了。
我最早在华为探索企业 ERP 助手的时候，大模型的基础能力还比较差，因此生成的 SQL 语句错误率比较高，而且也不够稳定。但用 GPT-4 生成 SQL 语句的准确率还是挺高的。
利用 GPT-4，我跟国科大合作的一个 AI Agent 实践课题，没有很多 AI 基础的本科和研究生同学也能从头独立实现企业 ERP 助手，不仅能支持这一页 PPT 上左边显示的这 10 个只读查询，同学们还自己实现了增加、删除、修改数据的支持，右边这 7 个修改查询也都支持了。
大家可以看到，这里面的很多需求都是挺复杂的，如果要程序员在 GUI 上开发这些需求，一个人估计至少得搞一周。而且 ERP 的开发是一个从需求到设计、实现、测试、发布的流程，整个流程走下来，不知道多久过去了，而且中间产品经理的信息传递可能还存在误差。
**因此传统 ERP 行业的本质挑战就是各行各业无穷无尽的定制化需求和有限的开发人力之间的矛盾，开发 ERP 的产品经理和程序员不懂行业 know-how，这些宝贵的行业 know-how 就很难通过流程的方式沉淀下来。大模型有望通过 “意图驱动” 也就是 “所想即所得” 的方式彻底改变 ERP 的产品逻辑。**
**未来每个程序员都有大模型辅助之后，需求描述能力、架构设计能力和技术表达能力一定是最重要的。因为每个程序员可能都相当于一个[架构师](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E6%9E%B6%E6%9E%84%E5%B8%88&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLmnrbmnoTluIgiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.uU99rp01xdFq_1QE-GW7XnhPvqi3XdXNFwzpNbdMy-E&zhida_source=entity) + 产品经理 + committer**，指挥着一堆 AI Agent 作为 “基层 AI 程序员”，给这些 AI Agent 布置需求、设计架构、验收代码，还需要跟真人同事和上级沟通和汇报工作。
我发现很多基层程序员恰恰是在需求描述、架构设计、技术表达这几方面存在欠缺，只会闷头写代码。特别是技术表达能力，每次任职资格答辩都不能用 What-Why-How 的方式有条理的讲清楚自己做的东西。私下里还觉得万般皆下品，唯有代码高，把技术表达能力强的同事称为 “PPT 专家”。**那未来真的是有被淘汰的风险。**
  

![](https://pic2.zhimg.com/v2-e28b8b01de757df92f15590216aa4551_1440w.jpg)
  

第三个有用 AI 的例子是**大模型采集数据** 。
收集数据是一件非常麻烦的事情。比如，如果要收集一个实验室里每个教授和学生的信息，例如需要包括如下信息：
  * 姓名
  * 照片（如果有，就下载下来，注意网页上的图片不一定是人的照片）
  * E-mail
  * 职称（例如：教授）
  * 研究方向（例如：[数据中心网络](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83%E7%BD%91%E7%BB%9C&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLmlbDmja7kuK3lv4PnvZHnu5wiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.zrUcClZ9pFws7q5ypcqOkcWwfYPq2P9h0OaqMSD6i1o&zhida_source=entity)）
  * 简介


专业的数据采集公司是用[正则表达式](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLmraPliJnooajovr7lvI8iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.f4bGFeixMJI6yOOxj1C_4psAeTaqUfOToS2kuMY1KKw&zhida_source=entity)或者 HTML 元素路径匹配页面中固定位置的内容，每个版式不同的页面都需要 1 小时左右的开发时间来定制爬虫，开发成本很高。对于每个院系、实验室、老师主页格式都不相同的情况，开发这种匹配页面中固定位置的爬虫，有时还不如手工一个一个页面访问，复制粘贴快。
而且还有一些网页上有反爬机制，例如把邮箱写成 bojieli AT [http://gmail.com](https://link.zhihu.com/?target=http%3A//gmail.com) 这种格式，虽然通过正则表达式也能匹配出其中一些情况，但总是无法穷尽所有情况。
大模型采集数据其实就是**让大模型模拟人去点击网页，读网页中的内容，提取网页中的内容** ，网页中的每个字都经过大模型的 “大脑” 读了一遍。因此，大模型采集数据本质上就是利用了大模型阅读速度比人快这个特点。
具体来说，就是自动找到网页中的所有链接，访问链接，将网页内容转换成文本，调用 GPT-4 判断是否是教师或学生主页，如果是的话，就用 JSON 格式输出姓名、E-mail 等信息。然后解析 JSON，存入数据库。对于老师照片，可以使用 GPT-4V 对网页中的图片进行分析，判断是否是单人照片，如果是单人照片就保存下来。
大模型提取网页中的内容有什么缺点呢？如果用 GPT-4，缺点就是成本高，读一个网页的成本大约需要 0.01～0.1 美金。而传统爬虫的数据采集方法，一旦写好爬虫脚本，爬一个网页的 CPU 和带宽成本只有万分之一美金，几乎可以忽略不计。
好在这种**姓名、邮箱等基本信息提取并不需要 GPT-4 这么强的模型** ，GPT-3.5 级别的模型就足够了。识别图片是否包含单张人脸，也有传统 CV 的人脸检测算法。要获取其他照片并做标注的话，MiniGPT-4/v2 这样的开源多模态模型也足够了。这样读一个网页的成本就是 0.001～0.01 美金。
如果我们觉得 GPT-3.5 Turbo 读一个长网页的 0.01 美金还是太高了，可以先截取网页中开头的部分，如果识别出确实是教师主页，但内容中缺失具体信息，再去读后续的网页内容。这就像人肉数据采集一样，大多数教师主页中想要的数据都在开头部分。这样读一个网页的成本可以控制在 0.001 美金，就完全可以接受了。
  

![](https://pica.zhimg.com/v2-e9542f3f2db86452ae932691830c9502_1440w.jpg)
  

第四个有用 AI 的例子是**手机语音助手** 。这个领域叫做 **RPA（机器人流程自动化）** ，听起来这里面有个机器人，但其实不一定需要有具身智能那种机器人，Robotics 是个很广阔的领域。
传统的 RPA 都是程序员写好流程去操作固定的 app，比如按键精灵，还有 Siri 之类的语音助手。但是 Siri 目前的能力还非常有限，只能完成系统预设的简单任务，不能完成任意的复杂任务。
基于大模型的手机语音助手可以自动学习各种手机 app 的操作，是一个通用的能力。比如腾讯的 AppAgent，可以自动学习操作 [Telegram](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=Telegram&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJUZWxlZ3JhbSIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjI0MTQyMzM3OCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.1UknDd7BNB2GAAM8em9L0yb7ME_iRTGnUvrMskvVSSE&zhida_source=entity)、YouTube、Gmail、Lightroom、Clock、[Temu](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=Temu&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiJUZW11IiwiemhpZGFfc291cmNlIjoiZW50aXR5IiwiY29udGVudF9pZCI6MjQxNDIzMzc4LCJjb250ZW50X3R5cGUiOiJBcnRpY2xlIiwibWF0Y2hfb3JkZXIiOjEsInpkX3Rva2VuIjpudWxsfQ.wFfHgb9SAL0UEewIBv9OJQ1Z8RtspTUO8GBoTMY_AUA&zhida_source=entity) 等多款 app，不需要人去教它怎么用。
**RPA 的主要难点是学习使用 app 的过程** ，比如一个修图的 app，怎么找到 app 中打马赛克的功能在什么位置。因此 RPA 需要一个探索学习的过程，首先尝试使用 app 中的各种功能，并记录下来操作序列。在后续使用的过程中，先想要用哪种功能，再按照操作序列去操作。
  

![](https://pic3.zhimg.com/v2-1de723376582e273a458b5ffc7d9f2f0_1440w.jpg)
  

**腾讯的 AppAgent 用的是视觉方案** 。它的核心逻辑是基于[视觉大模型](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E8%A7%86%E8%A7%89%E5%A4%A7%E6%A8%A1%E5%9E%8B&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLop4bop4nlpKfmqKHlnosiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.HZ-3TxVgJbbktkfTwnGgm8WcMNDQEcZRPK3QAsrLyJs&zhida_source=entity)的，围绕着**屏幕截图** 进行自动操作：
  1. 打开指定的 app，截图；
  2. 将截图和任务当前的执行状态文本输入到视觉大模型里，大模型决定下一步应该怎么操作；如果大模型判定任务已经完成，就退出；
  3. 模拟点击执行对应的操作，回到步骤 1。


视觉方案的优点是仅依赖屏幕截图，通用性强。
视觉方案的缺点是由于视觉大模型的分辨率限制，细小屏幕组件，比如一些 checkbox，可能识别不准确；由于视觉大模型本身不擅长处理大块文字，就像我们在多模态大模型部分讲的一样，大块文字识别需要 OCR 辅助；最后就是成本较高，特别是对于需要滚动才能显示完整的界面，需要截屏多次才能获取完整内容。
考虑到以上缺点，**一些手机厂商和游戏厂商用的是[元素树](https://zhida.zhihu.com/search?content_id=241423378&content_type=Article&match_order=1&q=%E5%85%83%E7%B4%A0%E6%A0%91&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTExMzkyNDQsInEiOiLlhYPntKDmoJEiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNDE0MjMzNzgsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.43qLALQDZnbSOfktgE0gTclYwCqrw0QJ66yIFlO4cj4&zhida_source=entity)方案**。手机厂商是想做类似 Siri 的系统级语音助手。而游戏厂商做的是游戏陪玩 NPC。
手机 App 的界面就像网页的 HTML 一样，都是一棵元素树。元素树方案就是从系统底层直接获取到这个元素树的内容，交给大模型处理。
元素树方案的优点是识别准确率高，成本较低，无需 OCR 和视觉大模型。
元素树方案的缺点是需要操作系统底层 API 权限，因此基本上只有手机厂商能做。由于通用大模型的训练数据中几乎没有元素树，缺少元素树的理解能力，因此需要构造数据做继续预训练或微调。此外，元素树往往较大，有可能导致输入上下文过长，需要筛选可视部分输入到大模型。
  

![](https://pic2.zhimg.com/v2-7c66a9dff526cdb44da6c113fd3703f9_1440w.jpg)
  

最后一个有用 AI 的例子是**会议和生活记录器** 。
比如我们在开会的时候摸鱼，正好被老板 cue 到，就一脸懵；还有会上老板一下子布置了一大堆任务，没有来得及记下来，会后就忘了。
现在腾讯会议和 Zoom 都已经有了 AI 会议助手的功能，包括将会议语音内容实时转录成文字；根据实时转录的文字，将会议所讲过的内容做总结；根据实时转录的文字，用户提出问题，大模型给出问题的回答。这样，参加会议的人不管何时加入会议，都能知道会上都讨论了些什么内容，再也不用担心错过关键的会议内容了。
但是，现在腾讯会议和 Zoom 的语音转录中，由于缺少背景知识，可能存在一些错误，例如专业名词识别错误、人名前后不一致。如果**通过大模型对语音识别结果进行修正** ，大部分识别错误的专业名词都可以被纠正，前后的人名也能保持一致。
语音识别的准确率还可以进一步提升。**会议中往往会共享一些 PPT，我们不仅希望把这些 PPT 保存下来，这些 PPT 内容中往往也包含了关键的专业名词。** 把从 PPT OCR 出的内容作为参考文本，让大模型修正语音识别结果，可以进一步提升准确率。
**我是一个喜欢把生活中的一切都记录下来的人** ，比如我维护了一个 [2012 年以来，我走过的城市](https://link.zhihu.com/?target=https%3A//01.me/2022/07/cities-per-day/) 公开记录。虽然各类 App 都记录了很多个人数据，比如聊天记录、运动健康、点外卖记录、购物记录等，但这些 **App 的数据是烟囱化的，无法导出，也就无法聚合各类 App 的数据来做分析** 。
AI Agent 给我们提供了新的可能，**可以通过 RPA 或 Intent-based API 方式收集生活记录** 。现在 App 不支持的时候，就是用前面手机语音助手讲到的 RPA 方法，相当于一个干活很快的秘书在从各个 App 里面把数据一条条抄录出来。未来 App 提供了面向手机助手的 Intent-based API，收集数据就更灵活了。
**Rewind.AI 的录屏和录音吊坠是我很喜欢的产品** ，Rewind 可以回放任意时间的录屏。Rewind 还可以根据关键字搜索之前的录屏，Rewind 是把录屏里面的文字做了 OCR，这样就可以根据文字搜索到之前的录屏。但是目前只支持英文，不支持中文。**Rewind 还支持 AI 智能问答，问它某一天都做了什么事情，访问了哪些网站，能给总结的非常好。** Rewind 的能力真的强到可怕，可以用来做自己的记忆助手，看看之前干了什么。也可以用来自己做时间管理，看看有多少时间浪费在无用的网站上。
**Rewind 更可怕的是可能被老板用来监控员工** ，以后都不用员工自己写日报周报了，直接让 Rewind 写，保证公正客观，干了啥就是啥。其实现在一些大厂的信息安全已经用了类似的录屏或者定时截屏的机制，在公司电脑上搞小动作，事后很容易被追溯。
**Rewind 最近还出了一个吊坠，这个吊坠就是个录音笔 + GPS 记录仪，会全天记录你去了哪，说了什么话。** 我还不敢随身带录音笔，因为未经同意就对私人交谈录音不太好。但是我的确带着个迷你 GPS 记录仪，每分钟打一个点，可以轻松记录我的足迹。之所以不用手机是因为手机一直开着 GPS 太费电了。
对于我这种喜欢记录生活的人，以及用了 Rewind 这类产品的人，隐私是最大的顾虑。现在 Rewind 的很多数据会上传到云端，就让我不太放心。**我认为本地化算力或者隐私计算是解决隐私问题的必由之路。** 本地化就是在个人设备本地运行，目前一些高端手机和笔记本已经可以跑相对较小的大模型了。隐私计算是另一种方法，就是用密码学或者 TEE 的方法保证隐私数据可用不可见。
### **解决复杂任务和使用工具**
  

![](https://pic2.zhimg.com/v2-957754c21a8fcd4a487dc7b646ec5cbf_1440w.jpg)
  

前面在有趣的 AI 部分，我们介绍了 AI Agent 慢思考的记忆和情感方面。**记忆是有趣和有用 AI 都必须具备的公共能力。情感是有趣 AI 需要的。而解决复杂任务和使用工具更多是有用 AI 所需的能力** ，因此我们在这里稍作讨论。
第一个例子是一道比较复杂的数学问题，一个人一秒钟也回答不出来。那我们只给大模型一个 token 的思考时间，让大模型听完题目就马上回答，显然也是不可行的。
大模型需要时间去思考，token 就是大模型的时间。我们让大模型写出思考过程，就是给它时间思考。**思维链是非常自然的一种慢思考的模式** ，我一般把思维链通俗地称作 **“先想后说”** ，这是一种非常有效的提升大模型性能的方式。特别是对于输出很简洁的场景，一定要让大模型先写出思考过程再按照格式输出回答。
  

![](https://pic2.zhimg.com/v2-2f7815c9a08ffa283483ce7474f4509d_1440w.jpg)
  

第二个例子是**用多步的网络搜索去回答难题** 。比如这个问题，David Gregory 继承的城堡有多少层，直接上 Google 搜索是无法在一个网页中得到答案的。
人类是怎么解决这个问题的？人会分多个子阶段去解决，首先搜索 David Gregory 这个人，知道他继承的城堡是什么名字，然后搜索这个城堡，找到它有多少层。
在让 AI 学会拆分子问题之前，首先需要解决 AI 的幻觉问题。当它拿整句话去搜索的时候，也能搜索到一个 Wiki 词条，其中也有一段提到了层数，AI 可能就直接拿这个层数作为答案输出了，但这根本不是他继承的城堡。解决幻觉问题可以让它不要只是输出层数，而是先输出参考的这一段落内容，并比较与原问题的相关性，这样**通过 “先想后说” 和 ”反思“，就可以减少一些幻觉。**
如何让 AI 拆分子问题呢？直接告诉大模型就行了，**用 few-shot 方式提供几个拆分子问题的示例** ，让大模型把这个问题拆分成一个更简单的搜索问题。然后把搜索结果和原始问题输入到大模型，让它输出下一步搜索的问题。直到大模型认为根据搜索结果已经可以可信地回答原始问题。
  

![](https://pic4.zhimg.com/v2-1a8f79b3c6c7f8b621f0896934900ba3_1440w.jpg)
  

多步网络搜索解决问题其实是一个更大问题的子集，这个更大的问题是**复杂任务的规划和分解** 。
例如，我们给定一篇论文，问它的第二章相比某个相关工作有什么贡献。
首先，AI 怎么找到第二章的内容。如果我们没有长上下文，而是把文章切片之后用 RAG 方式搜索，那么第二章内容的每一段不会写着第二章，RAG 就很难检索出来。当然我做一个特殊情况的处理逻辑是可以的，但是一般情况下这种**章节编号问题需要在 RAG 索引的时候就添加进去元数据** 。当然如果模型有长上下文能力，并且成本可以接受，一次性把整篇文章都放进去是最好的。
第二，这个相关工作是在另外一篇论文里，怎么把这篇论文找出来，有时只用一个关键词是搜不到的，重名的内容太多，因此**需要结合原文内容中的更多关键词去搜索** 。搜索到这篇相关工作之后还要总结这篇相关工作的内容，然后用大模型生成第二章和这篇相关工作的对比。
另一个复杂任务规划分解的例子是查天气。查天气看起来好像挺简单，点一下网页就行了。但是我们如果让 AutoGPT 去查一个特定城市的天气，现在大多数情况是失败的。为什么呢？
首先它会尝试去找一些查天气的 API，还真的会去查这些 API 文档，尝试写代码调用，但是都失败了，因为这些 API 都是付费的。这就说明**大模型缺少一些常识，比如 API 一般是需要付费的** ，而且在尝试多个 API 失败之后，没有向用户求助，而是不断在死胡同里尝试。现实世界中一个人完成任务遇到困难会去求助，有用的 AI 也应该这样，**及时向用户反馈进展，有问题及时求助用户。**
API 查询失败之后，AutoGPT 就会开始尝试从网页里面读取天气。AutoGPT 的搜索词和搜索到的页面都是正确的，但仍然不能正确提取出天气信息。因为 AutoGPT 看的是 HTML 代码，HTML 代码乱七八糟的，它看不懂，其实我作为一个人也看不懂。
AutoGPT 也会尝试把网页内容转换成文本之后再提取，但是像右面这个天气网页，提取出纯文本之后也有问题。这个网页上有很多不同的温度，有的是别的城市的，有的是别的时间的，单靠纯文本很难区别。**文本丢掉了太多的网页结构信息，HTML 代码又不好看懂** ，怎么办？
比较靠谱的方案其实是**把渲染出来的网页截图放到多模态模型里面去** 。比如 GPT-4V 读取这个天气截图就没有问题。但是用 MiniGPT-4/v2 这些开源多模态模型仍然很困难。它的主要问题是并不支持任意分辨率的输入，只支持 256 x 256 的小分辨率，网页截图压到这么小的分辨率后根本就看不清上面的字了。因此 Fuyu-8B 这些开源多模态模型支持任意分辨率是一个非常关键的事情。
从上面两个查论文和查天气的例子可以看到，复杂任务的规划和分解很大程度上是模型基础能力的问题，需要依靠 scaling law，模型基础能力上去了，自然就解决了。在系统方面，与用户交互式解决复杂任务是很重要的，AI 遇到困难要及时求助。
  

![](https://pic1.zhimg.com/v2-12713ef10a44e6f9da05a21e8f59a794_1440w.jpg)
  

第三个例子是 **AI 需要能够按照流程调用工具** 。使用工具是 AI 一项非常基本的能力。
比如要解决一道高中物理题，需要首先调用 Google 搜索获取到相关的背景知识，然后调用 OpenAI Codex 生成代码，最后调用 Python 执行代码。
实现按流程调用工具的方法是 few-shot，也就是在 prompt 中给 AI 提供几个样例任务的执行过程，这样 AI 就可以参考样例任务的流程，逐次生成对流程中每种工具的调用。
  

![](https://pic2.zhimg.com/v2-9d3c02bbeb850982fc4b9fd20006e0e3_1440w.jpg)
  

上一页是按照指定的顺序使用三种工具。但如果我们有多种工具需要根据任务类型按需使用呢？有两种典型的路线，**一是以 GPT Store 为代表的工具调用大模型，二是以 ChatGPT 为代表的大模型调用工具。**
在 GPT Store 中，用户已经显式指定了要用哪个工具，工具的 prompt 是 GPT Store 中的应用预先写好的。这种方法其实并没有解决根据任务类型按需使用工具的问题。
在 ChatGPT 中，有浏览器、图片生成、日记本、代码解释器等几个内置的工具，它是**在 system prompt 中把几种工具的使用说明书都写了进去** 。
ChatGPT 模型在训练阶段也加入了调用工具的特殊 token。模型如果需要调用工具，就输出调用工具的特殊 token，这样 ChatGPT 就知道后面输出的是工具调用代码而非普通文本。工具调用完成之后，再把工具的结果输入到模型，生成下一个工具调用，或者给用户的输出。
我在 2024 年 2 月 15 日测试的 ChatGPT system prompt 如下：

