AI篇——毛线AI 连续对话机器人
AI功能使用教程:https://www.shenxinduo.com/turbowarp/index.html
【疑惑篇】
大语言模型并没有记忆,所以每次向大语言模型提问时,它只能针对当前问题进行回答。为了让大语言模型知道之前的问答内容,和它进行连续对话,除了向它发送当前问题之外,还可以向它发送之前的对话内容,帮助它补充“记忆”。
点击绿旗按钮,开始向毛线AI 机器人连续提问,记录玩家和机器人的聊天记录,让机器人可以参考聊天记录进行连续对话。
【线索篇】
在毛线AI 机器人的基础上修改:
它们发生的场景是什么?
每个场景中有哪些角色?
每个场景中的每个角色在做什么?
- 建立“聊天记录”列表,点击“清空”按钮,清空“聊天记录”列表。
- 使用AI积木获取答案后,将玩家的提问和机器人的回答添加到“聊天记录”列表。
- 向AI积木发送问题时,附带之前的聊天记录(限制发送的聊天记录长度)。
【解决篇】
你和一个人类聊天时,你们会记住聊天的内容,进行连续对话。但是大语言模型并没有记忆,所以每次向大语言模型提问时,它只能针对当前问题进行回答。
例如,你可以先问它“李白是哪里人”,它会回答你关于李白是哪里人的信息。接着,你再问它“他有哪些朋友?”。这时它会回答你,它不知道你所说的“他”是谁,所以无法回答你的问题。
为了让大语言模型也能拥有连续对话的能力,我们需要帮助它补充记忆力。其中最简单的一种方法,就是提问的同时,告诉它你们之前都聊了些什么。这样它就能够参考之前的聊天内容,对你此时的问题进行更好的回答。
如何才能告诉它你们之前都聊了些什么?需要你把之前聊天的内容记录下来,发送给它看就行了。
- 建立“聊天记录”列表,点击“清空”按钮,清空“聊天记录”列表。
为了记录每次对话的内容,你可以建立一个“聊天记录”列表,用来保存它们。在每次点击绿旗按钮开始新的对话时,可以先将聊天记录清空。
为了在聊天的过程中你可以和它随时开启新的对话,你还可以增加一个按钮,用来在聊天过程中清空“聊天记录”。实现很简单,添加一个按钮角色,当角色被点击时,删除[聊天记录]的全部项目。
- 使用AI积木获取答案后,将玩家的提问和机器人的回答添加到“聊天记录”列表。
聊天记录的列表准备好了,接下来就需要你在每次接收到AI模型返回的内容时,将当前的问题和回答都添加到列表中。需要注意的是,保存到列表中的问题必须在回答前面。最终列表中的内容从上至下就是问题一,回答一,问题二,回答二,以此类推。
有时候使用问[AI接口名称] (你好)积木调用大语言模型会失败,这时没有任何内容返回,你可以想象成机器人没有回答你的问题。为了避免将空的回答存到聊天记录中,在添加内容到列表之前,可以先使用如果<>那么积木判断一下AI模型的回答是不是空的。如果不是空的,再将它们存入列表中。
- 向AI积木发送问题时,附带之前的聊天记录(限制发送的聊天记录长度)。
最后,我们就要利用列表中的聊天记录,帮助机器人补充记忆了。我们需要将列表中的内容和当前的提问,使用两个“$”符号拼接在一起,作为问[AI接口名称] (你好)积木的参数,发送给大语言模型。
拼接好的内容类似下面这样:
问题一$回答一$问题二$回答二$...问题N$回答N$最新的问题
你可以创建一个自制积木,用来拼接聊天记录。因为拼接过程不需要刷新舞台上显示的内容,可以勾选上“运行时不刷新屏幕”。
另一个需要注意的是,大语言模型一次可以接收的“记忆”大小会有限制,如果发送给它的聊天记录太多,它会处理不了(你可以想象成一个人向你说了一本书的内容,因为内容太多,反而你什么都没有记住),所以你还需要限制发送给它的聊天记录数量。你可以在自制积木中使用一个参数作为控制。
接下来,你可以尝试一下,自己能不能实现这个自制积木。
怎么实现呢?
因为我们需要对拼接的聊天记录数量做限制,所以我们只需要拼接最近的聊天内容,也就是列表最后添加的内容就可以了。
怎么添加最后的内容?是不是将列表从后向前取出来拼接就可以了。
建立一个“拼接的聊天记录”变量用来保存拼接的内容,在自制积木的最开始先将它设置为空,然后开始从后向前取出列表中的内容拼接起来。
每个问题在列表中都有一条问题记录和一条回答记录,所以总共从列表中取出的列表数据数量 = 拼接的问题数量 x 2。例如,要拼接之前的2个问题,就只用取出列表最后的4条数据拼接在一起。要拼接之前的10个问题,就只用取出列表最后的20条数据拼接在一起。
最后在发送问题之前,判断是否有聊天记录。如果没有,直接发送问题。否则将拼接好的聊天记录和问题拼接在一起发送给AI模型。
这样一来,你就可以跟毛线AI机器人连续对话了。
想看更多学习案例,欢迎点击查看《Scratch 3学习手册》
想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店。