Scratch 3 学习手册【AI 2.0篇】——AI 对话机器人

注意:本案例需要使用AI 对话扩展,请先免费下载并学习如何配置 AI 对话扩展。

如果你还不知道什么是大模型,推荐先学习我写的白话大模型。

说起大模型,大家第一个想到的肯定就是一个可以和你聊天的对话机器人,所以 AI 篇的第一个案例就来做一个自己的 AI 对话机器人。

【疑惑篇】

点击绿旗按钮,可以向 AI 机器人提问,机器人再根据你的提问进行回答。

【线索篇】

案例分析

它们发生的场景是什么?

Room1

每个场景中有哪些角色?

Retro Robot
Button2

每个场景中的每个角色在做什么?

机器人

  1. 1. 点击绿旗按钮,AI 机器人说开场内容。
  2. 2. 询问玩家,有什么问题想问?
  3. 3. 接收玩家输入,判断玩家是否输入“没有”。
  • • 如果输入“没有”,结束重复执行,说结束语。
  • • 如果玩家输入问题,使用 AI 积木获取答案,回复玩家。
  1. 4. 重复2~3步,直到玩家输入“没有”。

清空按钮

  1. 1. 被点击时,清空 AI 机器人的对话记忆。

积木提示

询问(你叫什么名字?)并等待

回答

如果<>那么否则

重复执行

停止[全部脚本]

广播与接收消息

自制积木

连接(苹果 )和(香蕉)

(苹果)的第(1)个字符

(苹果)的字符数

使用 AI 连接[本机默认模型]

设置 AI 角色为(系统提示词)

设置对话记忆[开启]

向 AI 提问(提示词)并等待

AI 的回答

上次提问成功?

错误说明

清空对话记忆

【解决篇】

第一步,点击绿旗按钮,AI 机器人说开场内容。

首先,你需要添加 AI 对话扩展,再加入用到的背景和角色,Turbowarp中的操作和Scratch中一模一样。

将机器人的大小设置为70,位置设置为 x:-100、y:-30,右边留出显示回答的位置。清空按钮稍后再添加。

添加扩展、背景和角色

每次你在使用AI扩展时,需要先使用其中几个积木做一些基础设置。

第一,通过 使用 AI 连接[本机默认模型] 积木选择需要使用的大模型。大多数情况下,你可以直接使用默认的 本机默认模型,它会自动使用你配置好的第一个模型。

第二,通过 设置 AI 角色为(系统提示词) 积木给大模型定制人设和规定,这段人设和规定的文字专业术语叫作 系统提示词。

大模型就像一个博学多才的人,但是它不知道自己是谁,现在应该干嘛,所以需要你明确的告诉它。

你可以想象大模型就像是在玩一种角色扮演的游戏,你希望它扮演什么样的人,它就会听从你的指示,努力扮演它。

例如,在这里你可以这样写:你是一个AI 聊天机器人。用适合小学生的中文回答,每次尽量不超过120字,不用表情和Markdown。不知道就说不知道。

这里要求它回答不超过120字,是为了让说话气泡中的文字更容易阅读。不过,AI 不一定每次都严格遵守字数要求,所以后面还要用程序处理长回答,不能只靠这一句话。

第三,通过 设置对话记忆[开启] 积木设定记忆方式。想要搞懂这个积木的作用,你需要对大模型本身有一定了解。

简单来说,大模型只是一个会文字接龙的程序。

所谓的文字接龙就是,你告诉大模型前面的字,例如“今天天气“,大模型会去想后面应该接什么?

例如,它会觉得“今天天气“后面可以接“真“,接着它又会继续想“今天天气真“后面可以接“好“,接着它又会继续想“今天天气真好“后面可以接“,“,以此类推,直到它认为后面不需要再接任何字。

这些在你发送的问题后面接的文字,就是大模型对你提问的回复(问题:“今天天气“,回复:“真好,...”)。

因为相同的一句话后面可以接很多不同的字,所以当你在向大模型提问时,一模一样地问题有可能会得到不同的答案。

大模型只是会做文字接龙的程序

接下来,继续聊聊天大模型的记忆。

刚刚说了大模型只会文字接龙,所以它本身其实并没有记忆。既然如此,现在你使用的很多大模型又是如何做到看上去有记忆的呢?

方法其实很简单,你只要每次向它提问时,将你们过去完整的对话内容都告诉它就行了。

例如,第一次你问大模型“我最近想去贵州旅游,有什么推荐的地方?“,大模型回答你“贵州有很多好玩的地方,比如贵阳.....“。

接下来当你第二次问它时,不是直接发给它第二个问题“听起来不错!那它们各自有什么特色美食?“,而是把 第一次问题 + 第一次回答 + 第二次的问题 一起发给大模型。这时大模型就会在你给的完整对话基础上做文字接龙,看上去的表现就像是它拥有了记忆。

xvxSFV

回到 设置对话记忆[开启] 积木,它的作用就是控制 AI 扩展保不保存你们过往的对话记录。

当你选择 关闭 时,扩展不会保存你们的对话记录,你用向 AI 提问(提示词)并等待 积木提问时,只会将你当前的问题发送给大模型。

当你选择 开启 时,扩展就会记录下你的每一次提问和大模型的每一次回答,然后将它们 + 最新的提问一起发送给大模型。

开启记忆

如果你开启了对话记忆,在提问过程中又想要它忘记过去,重新开始记忆时怎么办?这时候就可以使用 清空对话记忆 积木,将 AI 扩展保存的记忆全部删除。

319xMa

你可以自己做个简单的小实验,尝试关闭和开启记忆时,大模型的回答会有什么不同?

三种对话记忆实验

接下来就是你熟悉的操作,将角色移动到固定位置,再说开场白2秒。

机器人选择连接、设置说话要求并打招呼

点击绿旗按钮进行测试,观察机器人是否回到指定位置,并出现开场白。这一步还没有向 AI 提问,因此只看到打招呼,并不能说明 AI 连接已经成功。

第二步,先完成一次问答

在开场白后面,接上询问(你叫什么名字?)并等待,将问题改为“你有什么问题想问?(输入‘没有’结束)”,然后从回答积木中取得玩家输入的内容。

将回答积木放入向 AI 提问(提示词)并等待的参数框,这样你就将用户的问题发送给了大模型,等待大模型给出回复。

为了避免等待时间太长,画面中机器人没有反应,你可以在发送 AI 提问之前用思考(嗯……)显示“思考中……”,告诉玩家程序正在等待。

向 AI 提问(提示词)并等待 积木的用法就像询问(你叫什么名字?)并等待,区别只是一个向用户提问,一个向大模型提问。

类似的,询问(你叫什么名字?)并等待的回答通过回答积木获取,向 AI 提问(提示词)并等待积木的回答通过AI 的回答积木获取。

询问积木对比

此外,它们还有一个不同的地方。

向大模型提问有时会失败,例如你没有提前配置好模型供应商,或者你的账号没有余额,或者你的网络不通等等,这时 AI 的回答积木会返回空白。所以在获取大模型的回答之前,通常你需要使用 上次提问成功?积木判断一下当前向 AI 询问是否成功,如果成功了就可以从 AI 的回答积木获取大模型的回答,否则你可以从错误说明积木中获取失败的原因。

获取AI的回答

点击绿旗按钮,输入“请用一句话介绍你自己”。观察机器人是否先显示“思考中……”,再显示回答。如果出现错误说明,就根据提示检查连接、模型或网络,再点击绿旗重试。全是空格的问题也会被扩展拒绝,此时同样会走失败分支。

注意,“回答”是玩家输入的文字,“AI 的回答”是AI 返回的文字,不要把两块积木用反了。

第三步,让机器人不停地询问

现在只能问一次。想接着问,是不是只要把“询问、提问、显示回答”放入重复执行中就可以了?

现在机器人会一直不停的询问用户,无法停止。你可以增加一个用户回答判断,如果用户输入的是“没有“,就停止循环,否则才向 AI 提问。

模型选择、系统提示词和记忆开关仍放在循环外面,只在开始时设置一次即可。尤其不要把“清空对话记忆”放进循环,否则每问一个新问题,就先忘掉前面的对话了。

点击绿旗按钮,先输入“没有”,确认机器人说完结束语后,输入框不再出现。再点击绿旗,输入普通问题,看看 AI 是否能正常回答问题。

现在你会发现一个问题,AI 的回答我们是使用等待积木固定显示2秒。但是 AI 的回答有时很长,有时很短,使用固定时间显示就不太合适了。

有没有什么好的解决方案?

第四步,逐字显示,自动翻页

在高级篇案例菩提偈中,我们学过让角色逐字说话的方法,这里正好就可以用上,不论 AI 回复多少都可以让它一个字一个字说出来。

在机器人身上再建立“字符编号”和“说话文字”两个变量,都选择“仅适用于当前角色”,并隐藏变量显示。然后制作自制积木“逐字分页说”,添加一个文字或数字参数“内容”。不要勾选“运行时不刷新屏幕”,我们正需要看到文字逐渐出现。

接着实现逐字说话效果。初始将“字符编号”设为1,“说话文字”设为空,再重复下面的操作:

  1. 1. 取出“内容”的第“字符编号”个字符,连接到“说话文字”的末尾。
  2. 2. 用不带时间的“说”积木显示“说话文字”。
  3. 3. 等待0.05秒,再将“字符编号”增加1。

例如,内容是“你好呀”,第一次显示“你”,第二次显示“你好”,第三次显示“你好呀”。我们改变的是气泡中的完整文字,而不是让每个字单独说完就消失。

之前菩提偈中每句话的内容很少,直接显示没有问题。但是 AI 的回答有可能会非常多,如果全部显示在一个说话气泡中,可能会显示不全,看上去也不美观。怎么办?

可以额外增加一个限制,给说话气泡的内容设一个上限,分成多次说。

实现也很简单,之前的说话文字变量会一直增加内容,现在你只要额外判断一下说话文字变量中的字符个数,如果说话文字变量的字符个数超过60,就将它的内容全部清空。这样说话气泡中最多就只会显示60个字符。

先不调用 AI,也可以测试这个自制积木。填写一段超过60个字符的普通文字,点击积木,观察它是否逐字出现,在第60个字符后停留1秒,再继续显示之后的文字。

接下来,把成功分支中“说(AI模型的回答)”替换为“逐字分页说(AI模型的回答)”。失败分支也使用这个自制积木,显示“提问失败:”和“错误说明”连接后的内容。这样错误较长时,也可以慢慢读完。

点击绿旗,输入一个问题。现在机器人会逐字显示回答,每页按字数停留后自动继续,最后一页也会停留,之后才出现下一次提问的输入框。

第五步,增加清空记忆功能

现在你和机器人聊天时,他会记住你们聊过的所有内容,如果你想让它忘记你们之前聊的内容,重新开始聊怎么办?

最简单的办法,直接点击绿旗按钮,重新开始运行程序即可。除此之外,我们还能增加一个清空记忆按钮来实现。

添加按键角色,并将它放在初始位置。

清空记忆按钮

现在问题来了,如何当按钮被点击时,清空记忆?

我猜你很快就能想要使用 当角色被点击积木和最开始说过的清空对话记忆积木。

你可以试试,连续和机器人对话后,点击清空记忆按钮,然后问机器人还记不记得你们说了什么?

你会很惊讶,为什么机器人还是会记得你们之前聊过的内容,是清空对话记忆积木没有生效吗?

请你想一想,前面是哪个角色在和 AI 聊天?

答案是机器人角色。

AI 对话扩展中每个角色都有自己的“记忆“。你现在把清空积木放在按钮角色身上,只会清空按钮角色的记忆,机器人的记忆还在。

因此,在按钮的当角色被点击下面,不是让按钮直接清空记忆,而是广播一条新消息“清空记忆”,通知机器人去清空记忆。机器人收到消息后,再清空自己的记忆。

现在你可以重新测试,看看点击按钮后是不是机器人就失忆了?


以上,你就完成了一个自己的 AI 对话机器人。你可以把它和你平时使用的 AI 应用(例如豆包、DeepSeek App)对比一下,看看效果是否一样。

接下来,你可以自己尝试在舞台上增加一些参数配置功能。

例如,可以让用户自己设置系统提示词,或者让用户可以自己选择开启或关闭记忆。

注意:切换记忆模式和修改系统提示词后,都会自动清空当前记忆。

X2xbeo

最后,我再给你留两个思考题:

  1. 1. 机器人的记忆是不是无限大?
  2. 2. 机器人每次回答的内容长度有没有限制?

这两个问题的答案就在 历史达到上限时[摘要并保留最近对话]、设置对话容量[默认(32000)]token、设置回答 token 上限[2048] 这三个积木中,留给你自己去探索。

如果你想要《Scratch 3 学习手册》中的源码进行学习,欢迎查看下面的文章,付费购买(目前 AI 篇刚开始更新,后期源码购买价格会随着案例数量增加,不定时上涨。如果现在购买,可以自动获得未来增加的所有案例源码,无需二次付费)。

初级+中级+高级+AI篇 完整源码
AI篇 源码

重要的提示说三遍:

你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。

你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。

你在完成后将作品保存为 .sb3,如果换一台电脑使用时,需要重新配置那台电脑的 AI 连接;API Key 不随作品保存。

如果觉得内容不错,欢迎你点一下「在看」,或是将文章分享给其他有需要的人^^

相关好文推荐:

Scratch 3 学习手册【AI 2.0篇】——AI 对话扩展使用教程

花了3天,又做了一个英语绘本课本点读小程序

我花了24小时做了一个自己的电子书阅读器

为什么“提取”才是真正的学习,而不是“听懂”?

为什么背景知识决定理解能力?

习惯是如何“绑架”大脑的?

白话三国(全120回)

白话西游(全100回)


0条留言

留言