中午好,我是蓝色蒜头。
2023 年 11 月 12 号,短播客第 24 期
今天依然是接着昨天的话题
来讨论大模型怎样被用来处理一些较为复杂的任务
围绕大模型
在前几天已经做了三期的科普
内容是顺序关系,深度很浅,可以连续收听
昨天最后说到
一些稍微复杂一些的问题
比如能不能利用大模型实现一个速通教练
或者一个攻略助手,自动回答玩家的疑问
或者让他自动在聊天频道里
收集和整理技巧资料
为什么我们称这些任务为复杂任务
主要是以下两个判断因素
第一,任务的输入和输出是不固定的
之前提到的翻译
无论涉及到多少的专业术语、专 业知识
输入和输出的模式都很简单
总是输入原文,输出译文
无非是中间用到的参考资料存在差别
但是上面说的两个问题
先是速通教练,或者攻略助手
你是不知道玩家会问什么问题的
是问什么特定技巧怎么按键操作
还是什么谜题怎么解
还是打 BOSS
还是配装
问题是不确定的
回答什么内容,以什么形式回答
也是不确定的
有的问题,可能几行字就能清晰解答
而有的问题,可能需要推荐相关的视频
再是自动情报收集
聊天频道聊的东西是五花八门的
有时候可能在聊一些技巧
有的时候在讨论一些疑问
有的时候可能就是纯闲聊
把这些原始聊天信息作为输入
是没有办法简单去定义的
直接对模型说,从这些对话文本里提取游戏技巧
他能反馈,但效果是非常非常差的
而且,我们整理技巧的时候
需要归档到一个表格里
一些已经记录的旧的技巧,哪怕反复聊到
也就不用再归纳了
需要判断这个技巧是不是新的
如果是新的,是谁发现的,效果是什么,怎么操作
示例视频链接在哪里,可能有什么用途
这些信息是需要提取出来并且归纳的
所以,真的是非常不固定
即使是人来做
也需要花比较长的时间阅读判断比较
第二,正是由于这种信息的不固定
所以处理这些问题是必须分步骤的
比如攻略助手
可能要先判断问的是不是游戏攻略问题
再判断问的是哪方面的问题
再查找知识库内有没有相关资料
再把这些资料整理好,组织成容易阅读的形式反馈回去
有人会说
你说的这些,传统程序不用 AI 好像也能做啊
听起来不难啊
但是传统程序的局限性在于
这些多步骤的事情
需要人去定义好每个步骤
然后计算机程序按照固定的步骤去运行
他很难自动的去判断
是不是要调整或者增减这些步骤
传统程序到最后
就会给每个场景
设计一套流程
然后让用户自己选择
要做什么流程
或者也会有一些自动判断
但是总体来说还是比较呆板的
不会让人觉得很智能
你可以参考现在一些银行里的柜员机
功能很多,可以办理很多业务
比如开卡,销卡都可以在一台机器上完成
但是每个功能流程是相对固定的
所以经常还需要有柜员在旁边引导操作
不然用户可能用不懂
为什么过去几年
很多银行会尝试去做智能对话机器人
也是因为确实有这方面的需求
只是这些机器人目前的实现技术参差不齐
有的还是用的很传统的手段
有的用的可能不是大语言模型,
是小规模神经网络
现在开始
就可以结合大语言模型去调整这些机器人的设计了
相信很快就能看到一些应用
不说远了,回到我们的游戏场景上
上述两个问题该怎么处理
如果直接去和模型沟通
显然是不可能有合理结果的
用上前面说到的参考资料 + 提示词
也不能满足这类不固定的问题
所以
在具体的实践里
工程师提出了一种针对大模型的方法论
就是思维链 Chain-of-Thought
缩写为 COT
思维链 COT 这个概念的发展
要讲清楚非常复杂
这个概念本身也经历了不少的发展变化
目前结合大模型应用它的方式有很多种
这里因为是简单的科普
我就只列举常见的一种
R-E-A-C-T ReAct
也可以称为 思维-行动-观察 模式
这个模式其实并不神秘
就算不使用编程
也可以通过和大模型直接对话来感受
核心技巧就在于
使用一套特定的提示词
要求大模型给出几个特定方面的回复
比如说,可能会这样和大模型沟通
先给出要解答的问题,或者要处理的要求
然后在下面说明
请你给出你的思考
再给出你要进行的操作
根据操作结果进行观察
再进行下一步思考
一步一步地进行,直到得到最终结果
虽然听起来好像很不严谨
但是这样提要求之后
大模型的反馈模式就确实会发生改变
默认情况下
大模型会尝试尽可能一次性地返回最终结果
不会去做步骤的分解和每个步骤的仔细推进
当我们这样明确的去要求它
它就不会尝试一次得出结果
它会先去做某种判断
只要目前的信息
包括提供给他的信息和它自己训练时掌握的信息
不能立刻得出结论
他就会先把它的思考和行动建议发出来
以上面情报自动收集的例子为例
它可能就会在第一次反馈时
给出这样的信息
经过思考,需要先判断对话内容是否在聊游戏
行动建议是,做出判断
再下一步可能就是
接下来,需要判断是否在谈论游戏技巧
再下一步是,判断这个技巧是否已经被收录
感觉上好像也没有什么神奇的
但要注意的是
这些步骤分解并不是人给他建议的
而是他自己逐渐完成的
所有大语言模型可以被认为具有语言方面的常识
利用这些常识,即使碰到他不知道的专业知识
他也是可以作出分解思考的
这就像是一种对人的思维过程的模拟
这样做还有一个好处
之前我们说到,处理任务时
发给他的附加参考资料可能会很多
如果要发特定的参考资料
如何裁剪又是一件麻烦的事情
利用上面的这种思维链的做法
让大模型分小步骤去推进
他就会反馈每个步骤需要补充的比较精准且具体的信息
比如说
它中途会反馈
我不确定这个技巧有没有被收录过
需要检索收录表来进行判断
此时,人可以帮他作出判断并反馈
也可以在外部的知识库程序上增加一个检索接口
自动调用这个接口来帮助它完成判断
简单来说
利用思维链模式
它就会尝试分解任务
一步步地推进
任何一 步它可能搞不定时
就会提出具体的信息要求
这样一来,就解决了三个问题
一是不固定的问题可以让他自己见机行事进行分解处理
二是它会提出具体需要什么参考信息
这样就可以更精准的把信息给到他
三是每个步骤只需要把前面的步骤记录一起发给它
它就能保持某种针对该任务的连贯记忆
上面说的这些
听起来虽然很厉害
但是实际应用起来是有很多限制的
第一,大语言模型本身必须够强
这里的够强不是说专业知识够强
而是训练时输入的常识性资料和基础语言逻辑资料足够多
如果上述常识性的数据训练不够
它可能在一些特定的情况下,无法好好的推进执行步骤
陷入混乱
现在最强的大模型是最新的 GPT4-Turbo
其他的大模型,可能效果就差不少
但是到了明年,都会有所改善
能用上面这个模式处理的问题就会变多
第二,还是需要有一个整理的非常好的
领域知识库,配合大模型一起协同工作
能做到大语言模型在步骤分解中搞不定的信息
就从这个知识库里自动拿
这个知识库的搭建并不那么容易
目前也没有特别通用的搭建方法
第三,虽然思维链的原理很简单
但是由于它把步骤拆分的很细
用手工操作是不现实的
必须用编程手段把和大模型的沟通
做成自动化的过程
这样实现之后
用户不是直接和大模型对话
而是和对外的一个提问或检索接口对话
这个接口内部再通过思维链的方式和大模型沟通
所有步骤对用户隐藏
获得结果后,再反馈给用户
这样实现的程序就叫做代理 agent
所以 agent 和 思维链 基本上是要放在一起提的
两者是不可分的概念
关于 agent 和 思维链 的科普
这一期还不算讲完
接下来会尝试说说
为了实现思维链的自动化手段
需要做哪些开发,需要哪些外部条件
典型的团队需要做什么工作
才可能真正把这件事情落地
代价是什么,成本是什么
但从这里就开始愈发抽象了
单纯的没有画面的播客
不见得能讲好
只能说我先试试
明天又是周一
短播客可能会先讲一些其他话题
所以大模型的科普我们另找时间继续
好的,今天就聊到这里
祝大家进步,顺利,再见!

