Scratch 3 学习手册【AI 2.0篇】——AI 对话机器人
注意:本案例需要使用AI 对话扩展,请先免费下载并学习如何配置 AI 对话扩展。
如果你还不知道什么是大模型,推荐先学习我写的白话大模型。
说起大模型,大家第一个想到的肯定就是一个可以和你聊天的对话机器人,所以 AI 篇的第一个案例就来做一个自己的 AI 对话机器人。
【疑惑篇】
点击绿旗按钮,可以向 AI 机器人提问,机器人再根据你的提问进行回答。
【线索篇】
案例分析
它们发生的场景是什么?
每个场景中有哪些角色?
每个场景中的每个角色在做什么?
机器人
-
1. 点击绿旗按钮,AI 机器人说开场内容。 -
2. 询问玩家,有什么问题想问? -
3. 接收玩家输入,判断玩家是否输入“没有”。
-
• 如果输入“没有”,结束重复执行,说结束语。 -
• 如果玩家输入问题,使用 AI 积木获取答案,回复玩家。
-
4. 重复2~3步,直到玩家输入“没有”。
清空按钮
-
1. 被点击时,清空 AI 机器人的对话记忆。
积木提示
询问(你叫什么名字?)并等待
回答
如果<>那么否则
重复执行
停止[全部脚本]
广播与接收消息
自制积木
连接(苹果 )和(香蕉)
(苹果)的第(1)个字符
(苹果)的字符数
使用 AI 连接[本机默认模型]
设置 AI 角色为(系统提示词)
设置对话记忆[开启]
向 AI 提问(提示词)并等待
AI 的回答
上次提问成功?
错误说明
清空对话记忆
【解决篇】
第一步,点击绿旗按钮,AI 机器人说开场内容。
首先,你需要添加 AI 对话扩展,再加入用到的背景和角色,Turbowarp中的操作和Scratch中一模一样。
将机器人的大小设置为70,位置设置为 x:-100、y:-30,右边留出显示回答的位置。清空按钮稍后再添加。
每次你在使用AI扩展时,需要先使用其中几个积木做一些基础设置。
第一,通过 使用 AI 连接[本机默认模型] 积木选择需要使用的大模型。大多数情况下,你可以直接使用默认的 本机默认模型,它会自动使用你配置好的第一个模型。
第二,通过 设置 AI 角色为(系统提示词) 积木给大模型定制人设和规定,这段人设和规定的文字专业术语叫作 系统提示词。
大模型就像一个博学多才的人,但是它不知道自己是谁,现在应该干嘛,所以需要你明确的告诉它。
你可以想象大模型就像是在玩一种角色扮演的游戏,你希望它扮演什么样的人,它就会听从你的指示,努力扮演它。
例如,在这里你可以这样写:你是一个AI 聊天机器人。用适合小学生的中文回答,每次尽量不超过120字,不用表情和Markdown。不知道就说不知道。
这里要求它回答不超过120字,是为了让说话气泡中的文字更容易阅读。不过,AI 不一定每次都严格遵守字数要求,所以后面还要用程序处理长回答,不能只靠这一句话。
第三,通过 设置对话记忆[开启] 积木设定记忆方式。想要搞懂这个积木的作用,你需要对大模型本身有一定了解。
简单来说,大模型只是一个会文字接龙的程序。
所谓的文字接龙就是,你告诉大模型前面的字,例如“今天天气“,大模型会去想后面应该接什么?
例如,它会觉得“今天天气“后面可以接“真“,接着它又会继续想“今天天气真“后面可以接“好“,接着它又会继续想“今天天气真好“后面可以接“,“,以此类推,直到它认为后面不需要再接任何字。
这些在你发送的问题后面接的文字,就是大模型对你提问的回复(问题:“今天天气“,回复:“真好,...”)。
因为相同的一句话后面可以接很多不同的字,所以当你在向大模型提问时,一模一样地问题有可能会得到不同的答案。
接下来,继续聊聊天大模型的记忆。
刚刚说了大模型只会文字接龙,所以它本身其实并没有记忆。既然如此,现在你使用的很多大模型又是如何做到看上去有记忆的呢?
方法其实很简单,你只要每次向它提问时,将你们过去完整的对话内容都告诉它就行了。
例如,第一次你问大模型“我最近想去贵州旅游,有什么推荐的地方?“,大模型回答你“贵州有很多好玩的地方,比如贵阳.....“。
接下来当你第二次问它时,不是直接发给它第二个问题“听起来不错!那它们各自有什么特色美食?“,而是把 第一次问题 + 第一次回答 + 第二次的问题 一起发给大模型。这时大模型就会在你给的完整对话基础上做文字接龙,看上去的表现就像是它拥有了记忆。
回到 设置对话记忆[开启] 积木,它的作用就是控制 AI 扩展保不保存你们过往的对话记录。
当你选择 关闭 时,扩展不会保存你们的对话记录,你用向 AI 提问(提示词)并等待 积木提问时,只会将你当前的问题发送给大模型。
当你选择 开启 时,扩展就会记录下你的每一次提问和大模型的每一次回答,然后将它们 + 最新的提问一起发送给大模型。
如果你开启了对话记忆,在提问过程中又想要它忘记过去,重新开始记忆时怎么办?这时候就可以使用 清空对话记忆 积木,将 AI 扩展保存的记忆全部删除。
你可以自己做个简单的小实验,尝试关闭和开启记忆时,大模型的回答会有什么不同?
接下来就是你熟悉的操作,将角色移动到固定位置,再说开场白2秒。
点击绿旗按钮进行测试,观察机器人是否回到指定位置,并出现开场白。这一步还没有向 AI 提问,因此只看到打招呼,并不能说明 AI 连接已经成功。
第二步,先完成一次问答
在开场白后面,接上询问(你叫什么名字?)并等待,将问题改为“你有什么问题想问?(输入‘没有’结束)”,然后从回答积木中取得玩家输入的内容。
将回答积木放入向 AI 提问(提示词)并等待的参数框,这样你就将用户的问题发送给了大模型,等待大模型给出回复。
为了避免等待时间太长,画面中机器人没有反应,你可以在发送 AI 提问之前用思考(嗯……)显示“思考中……”,告诉玩家程序正在等待。
向 AI 提问(提示词)并等待 积木的用法就像询问(你叫什么名字?)并等待,区别只是一个向用户提问,一个向大模型提问。
类似的,询问(你叫什么名字?)并等待的回答通过回答积木获取,向 AI 提问(提示词)并等待积木的回答通过AI 的回答积木获取。
此外,它们还有一个不同的地方。
向大模型提问有时会失败,例如你没有提前配置好模型供应商,或者你的账号没有余额,或者你的网络不通等等,这时 AI 的回答积木会返回空白。所以在获取大模型的回答之前,通常你需要使用 上次提问成功?积木判断一下当前向 AI 询问是否成功,如果成功了就可以从 AI 的回答积木获取大模型的回答,否则你可以从错误说明积木中获取失败的原因。
点击绿旗按钮,输入“请用一句话介绍你自己”。观察机器人是否先显示“思考中……”,再显示回答。如果出现错误说明,就根据提示检查连接、模型或网络,再点击绿旗重试。全是空格的问题也会被扩展拒绝,此时同样会走失败分支。
注意,“回答”是玩家输入的文字,“AI 的回答”是AI 返回的文字,不要把两块积木用反了。
第三步,让机器人不停地询问
现在只能问一次。想接着问,是不是只要把“询问、提问、显示回答”放入重复执行中就可以了?
现在机器人会一直不停的询问用户,无法停止。你可以增加一个用户回答判断,如果用户输入的是“没有“,就停止循环,否则才向 AI 提问。
模型选择、系统提示词和记忆开关仍放在循环外面,只在开始时设置一次即可。尤其不要把“清空对话记忆”放进循环,否则每问一个新问题,就先忘掉前面的对话了。
点击绿旗按钮,先输入“没有”,确认机器人说完结束语后,输入框不再出现。再点击绿旗,输入普通问题,看看 AI 是否能正常回答问题。
现在你会发现一个问题,AI 的回答我们是使用等待积木固定显示2秒。但是 AI 的回答有时很长,有时很短,使用固定时间显示就不太合适了。
有没有什么好的解决方案?
第四步,逐字显示,自动翻页
在高级篇案例菩提偈中,我们学过让角色逐字说话的方法,这里正好就可以用上,不论 AI 回复多少都可以让它一个字一个字说出来。
在机器人身上再建立“字符编号”和“说话文字”两个变量,都选择“仅适用于当前角色”,并隐藏变量显示。然后制作自制积木“逐字分页说”,添加一个文字或数字参数“内容”。不要勾选“运行时不刷新屏幕”,我们正需要看到文字逐渐出现。
接着实现逐字说话效果。初始将“字符编号”设为1,“说话文字”设为空,再重复下面的操作:
-
1. 取出“内容”的第“字符编号”个字符,连接到“说话文字”的末尾。 -
2. 用不带时间的“说”积木显示“说话文字”。 -
3. 等待0.05秒,再将“字符编号”增加1。
例如,内容是“你好呀”,第一次显示“你”,第二次显示“你好”,第三次显示“你好呀”。我们改变的是气泡中的完整文字,而不是让每个字单独说完就消失。
之前菩提偈中每句话的内容很少,直接显示没有问题。但是 AI 的回答有可能会非常多,如果全部显示在一个说话气泡中,可能会显示不全,看上去也不美观。怎么办?
可以额外增加一个限制,给说话气泡的内容设一个上限,分成多次说。
实现也很简单,之前的说话文字变量会一直增加内容,现在你只要额外判断一下说话文字变量中的字符个数,如果说话文字变量的字符个数超过60,就将它的内容全部清空。这样说话气泡中最多就只会显示60个字符。
先不调用 AI,也可以测试这个自制积木。填写一段超过60个字符的普通文字,点击积木,观察它是否逐字出现,在第60个字符后停留1秒,再继续显示之后的文字。
接下来,把成功分支中“说(AI模型的回答)”替换为“逐字分页说(AI模型的回答)”。失败分支也使用这个自制积木,显示“提问失败:”和“错误说明”连接后的内容。这样错误较长时,也可以慢慢读完。
点击绿旗,输入一个问题。现在机器人会逐字显示回答,每页按字数停留后自动继续,最后一页也会停留,之后才出现下一次提问的输入框。
第五步,增加清空记忆功能
现在你和机器人聊天时,他会记住你们聊过的所有内容,如果你想让它忘记你们之前聊的内容,重新开始聊怎么办?
最简单的办法,直接点击绿旗按钮,重新开始运行程序即可。除此之外,我们还能增加一个清空记忆按钮来实现。
添加按键角色,并将它放在初始位置。
现在问题来了,如何当按钮被点击时,清空记忆?
我猜你很快就能想要使用 当角色被点击积木和最开始说过的清空对话记忆积木。
你可以试试,连续和机器人对话后,点击清空记忆按钮,然后问机器人还记不记得你们说了什么?
你会很惊讶,为什么机器人还是会记得你们之前聊过的内容,是清空对话记忆积木没有生效吗?
请你想一想,前面是哪个角色在和 AI 聊天?
答案是机器人角色。
AI 对话扩展中每个角色都有自己的“记忆“。你现在把清空积木放在按钮角色身上,只会清空按钮角色的记忆,机器人的记忆还在。
因此,在按钮的当角色被点击下面,不是让按钮直接清空记忆,而是广播一条新消息“清空记忆”,通知机器人去清空记忆。机器人收到消息后,再清空自己的记忆。
现在你可以重新测试,看看点击按钮后是不是机器人就失忆了?
以上,你就完成了一个自己的 AI 对话机器人。你可以把它和你平时使用的 AI 应用(例如豆包、DeepSeek App)对比一下,看看效果是否一样。
接下来,你可以自己尝试在舞台上增加一些参数配置功能。
例如,可以让用户自己设置系统提示词,或者让用户可以自己选择开启或关闭记忆。
注意:切换记忆模式和修改系统提示词后,都会自动清空当前记忆。
最后,我再给你留两个思考题:
-
1. 机器人的记忆是不是无限大? -
2. 机器人每次回答的内容长度有没有限制?
这两个问题的答案就在 历史达到上限时[摘要并保留最近对话]、设置对话容量[默认(32000)]token、设置回答 token 上限[2048] 这三个积木中,留给你自己去探索。
如果你想要《Scratch 3 学习手册》中的源码进行学习,欢迎查看下面的文章,付费购买(目前 AI 篇刚开始更新,后期源码购买价格会随着案例数量增加,不定时上涨。如果现在购买,可以自动获得未来增加的所有案例源码,无需二次付费)。
重要的提示说三遍:
你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。
你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。
你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。
如果觉得内容不错,欢迎你点一下「在看」,或是将文章分享给其他有需要的人^^
相关好文推荐:
Scratch 3 学习手册【AI 2.0篇】——AI 对话扩展使用教程

0条留言