AI篇——毛线AI 机器人

AI功能使用教程:https://www.shenxinduo.com/turbowarp/index.html

【疑惑篇】

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

PmkYgt

视频演示open in new window

【线索篇】

案例分析

它们发生的场景是什么?

Room1

每个场景中有哪些角色?

Retro Robot

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

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

积木提示

当绿旗被点击

说(你好!)(2)秒

说(你好!)

重复执行(10)次

如果<>那么

如果<>那么否则

等待(1)秒

重复执行直到<>

重复执行

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

回答

等于

连接(苹果 )和(香蕉)

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

(苹果)的字符数

建立一个变量

使用变量

将[我的变量]设为(0)

将[我的变量]增加(1)

问[AI接口名称] (你好)

换行符

(字符)是否是空白

【解决篇】

开始实现毛线AI机器人之前,你可以先试用一下问[AI接口名称] (你好)积木。

它的用法很简单,第一个参数是你要调用的大语言模型名称,你可以将大语言模型想象成一个人,不同的模型就代表了不同的人。它们有的人懂的更多,但是反应慢一点。有的人懂得少一点,但是反应更快。第二个参数是你想向大语言模型提出的问题。点击积木,就会返回大语言模型的回答。就像你跟一个人说一句话,它就回答你一句话。

RxhuvO

接下来,就开始来实现毛线AI机器人。首先,还是添加用到的背景和角色,Turbowarp中的操作和Scratch中一模一样。

g7IP2z

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

使用当绿旗被点击积木启动机器人。可以先将它移到固定的位置,接着说开场内容。

hhQA4X

第二步,询问玩家,有什么问题想问?

这一步很简单,使用询问(你叫什么名字?)并等待积木即可。

WBuBIS

第三步,接收玩家输入,判断玩家是否输入“没有”。

使用回答积木获得玩家输入的内容,然后使用如果<>那么否则积木对它进行判断。看看玩家是否输入了“没有”。

Vx49rg

  • 如果输入“没有”,说结束语。

如果玩家输入“没有”,直接说结束语,结束程序。

dWDX9g

  • 如果玩家输入问题,使用AI积木获取答案,回复玩家。

如何玩家输入“没有”之外的其他内容,使用问[AI接口名称] (你好)积木向AI模型提问,获取答案,并将答案说给玩家听。

因为向AI模型提问需要访问第三方的接口,并不能实时得到答案。为了等待过程能给玩家一些反馈,你可以在提问前使用思考(嗯......)积木,让机器人显示“思考中...”。如果想要更好的效果,你还可以将它改为其他等待中的动画。

cXDT0F

点击绿旗按钮进行测试,现在你已经可以向机器人提问,看到机器人的回答,但会有两个问题。有时你提出的问题比较复杂,AI模型回答的内容会很多,这时使用说(你好!)(2)秒积木无法显示所有内容。另外如果你将说(你好!)(2)秒积木中的时间参数设置为固定值,可能会来不及看全。

Hpi2ID

如何解决这两个问题呢?

对于第2个问题,显示时间太短,最简单的解决方法就是将将时间参数变大。不过这样一来,对于很短的回答,又会等待太长时间。更好的方法,可以通过说话文字的字数来计算等待时间。

为了能根据AI模型返回的字数来计算时间,我们需要将问[AI接口名称] (你好)积木返回的内容保存在一个变量中。例如,建立一个“AI模型的回答”变量。再使用运算分类的积木来计算说话的时间。例如,每10个字就说1秒钟。

KjYf9o

除了这种方法外,你还可以使用高级篇案例菩提偈中实现的逐字说话的方法。

MpVD4s

对于第1个问题,AI模型返回的文字太长,导致显示不全又该怎么处理?其实也很简单,你只用想办法将很长的内容切分成多个短句,逐句显示出来就可以了。

AI模型返回的文字中,每段话之间是通过换行符连接在一起,你可以看见显示出来的文字是一段一段的,并没有像我们使用连接(苹果 )和(香蕉)积木那样,所有文字都连在一起。现在我们就可以利用换行符将内容切成多段,一段一段的进行显示。

pIEh8U

在毛线AI扩展中有一个换行符积木,它返回的就是一个换行符。你可以用它和连接(苹果 )和(香蕉)积木进行测试,将“苹果”和“香蕉”利用换行符进行连接,现在“苹果”和“香蕉”不再显示在同一行,而是分成了两行。

W3QQTf

接下来,我们就来修改一下自制的逐字说话积木,不让返回的内容全部说出来,而是通过换行符将它们拆分开。操作很简单,只需要在遇到换行符时,将“说话文字”变量设置为空就行了(你可以拿出纸和笔,写上几段话,然后在纸上模拟一下这个重置执行积木中究竟发生了什么)。

u1j9tw

点击绿旗按钮进行测试,你可能会发现说话时,气泡会一直在闪烁。为了解决该问题,你可以将换行符积木的值先保存在一个变量中,然后使用该变量进行比较。

Tmq5wh

另一种解决方法,你可以使用说(你好!)积木替换说(你好!)(2)秒积木,再使用等待(1)秒积木来控制说话的速度。别忘了最后要让说话气泡消失。

yzPlAD

  1. 重复2~3步,直到玩家输入“没有”。

最后,你只要使用使用重复执行积木让机器人一直不停的提问就行了。但是当用户输入“没有”时,如何停止重复执行呢?很简单,使用停止[全部脚本]积木就可以了。

9C2IaA

好了,属于你的第一AI程序,毛线AI机器人就完成了,开发一个AI程序是不是也没有想象中那么难。接下来,你还可以尝试使用朗读积木让你的机器人开口说话。

目前,你的机器人只能跟你一问一答,下一个案例中,我们将会让他具有连续对话的能力。

想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window

想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店

Last Updated:
Contributors: lanheixingkong