【AI2+AI】ChatGPT App
本帖最后由 szjuliet 于 2023-7-24 00:24 编辑视频教程:(视频有点长,进行了章节分割,可点击进度条快速跳转到相应的内容)
https://www.bilibili.com/video/BV1q8411m7Up/
英文版测试截图
中文版测试截图(回答的是不是很有爱,所以角色的设定非常重要!):
讯飞的语音识别把Python识别成了“开展”,但是ChatGPT还是回答正确!
# ChatGPT App
难度:中级
课程类型:教程
主题:计算机科学
年级水平: 6-8,9-12
资源 URL: (https:///ai2.appinventor.mit.edu/?locale=en&repo=http://appinventor.mit.edu/yrtoolkit/yr/aiaFiles/ChatBot/ChatBot_Starter.asc)
## 让智慧的世界触手可及
你是否想过如何创建自己的 ChatGPT 应用程序,让你无论身在何处,都可以进入充满有用信息的世界?在本教程中,你将使用 MIT App Inventor 构建一个简单的应用程序,允许用户连接到 ChatGPT、提出问题并进行对话。

## 创作教程
### 项目概要
在本教程中,你将使用MIT app Inventor构建一个简单的应用程序,允许用户连接到ChatGPT,提出问题并进行对话。
该应用程序将允许用户首先定义一个系统角色,以便ChatGPT将根据分配给它的角色进行响应。例如,如果用户将系统角色定义为:
“你是一个幼儿园老师,以4岁孩子的水平解释一切。”
然后让ChatGPT“解释大BAOZHAO理论”,其回答将与一个4岁孩子的理解相匹配。
(注:Big Bang翻译过来的中文被屏蔽,所以用BAOZHAO替代)


### 图形用户界面 (GUI)
在这个项目中,你将获得一个即将完成的 GUI(请在附件中下载)。

你认为每个组件的功能是什么? 许多组件可能是不言自明的。 但是,**ListView** 是你显示用户与 ChatGPT 的对话的位置。


从媒体**Media**抽屉中先拖放一个** SpeechRecognizer** 组件,接下来拖放一个 **TextToSpeech **组件。

然后,从**Experimental**抽屉中拖放一个 **ChatBot** 组件。

你的工作区和组件面板添加了三个如下所示的不可见组件:

### 编写GUI 功能代码(1)
单击**Blocks**按钮进入Blocks编辑器。

你只需使用 **ChatBot** 组件的 4 个基本积木块即可完成本 ChatBot 应用程序的所有细节。 因此,首先拖出这些积木块并准备好部署。 你能猜出每个积木块的作用吗?

现在可以开始了。初始化全局变量 ***chatList*** 为空列表。这是将聊天消息作为列表条目保存的变量。

### 编写GUI 功能代码(2)
回想一下,当你在整个程序中多次使用一段代码时,最好将其“分解” — 也就是说,将其定义为一个过程,以便简化代码并使其更易于维护(例如,如果由于错误而需要编辑某些内容,则可以在一个地方修复它,而不是在整个程序中进行修复)。
创建一个过程 ***processMessage***,它接受两个输入:*speaker*和*文本*。对于给定的对话实例,speaker是“AI”或“User”,文本将是给定消息的文本。该过程将形成如下所示的文本
***User***:*解释一下大BAOZHAO理论*
将speaker(“用户”)与文本(“解释大BAOZHAO理论”)拼接,中间用“:”(冒号-空格)隔开。这个新文本将被添加到 ***chatList***中,然后该过程将用新添加的文本更新**ListView**。请注意,**ListView**将以相反的顺序显示用户和AI之间的聊天,这样更容易阅读,最近的对话总是在最顶部。

### 编写GUI 功能代码(3)
单击 **SystemRoleButton** 时,将 **ChatBot** 的* System* 属性分配给用户在 **SystemRoleTextBox** 中指定的角色。 ***chatList*** 中的第一个条目应该指示分配的系统角色。 例如:
***User***:你是幼儿园老师,以4岁孩子的水平讲解一切
分配系统角色后,清除 **SystemRoleTextBox** 中的任何文本,并使包含所有系统角色分配组件的 **VerticalArrangement** 不可见。
注意:不要忘记在两个连接块中的“You are a”后面添加一个空格。

### 编写GUI 功能代码(4)
当用户按下 **TalkButton** 时,**SpeechRecognizer** 应捕获用户的语音并将其发送给 Google 进行分析:

当从 Google 收到语音文本时,应用程序将在聊天中创建下一行。 例如:
***User***:解释一下大BAOZHAO理论
还包括将此文本作为问题发送到 ChatGPT 的代码:

### 编写GUI 功能代码(5)
当 ChatGPT 返回响应时,应将新消息添加到 **ListView**,例如:
***AI***:大BAOZHAO理论就像很久以前发生的一次真正的大**……
并使 **TextToSpeech** 组件大声读出此响应。

### 编写GUI 功能代码(6)
最后,当用户单击 **ResetConversationButton** 时,重置对话,将变量 ***chatList*** 设置为空列表,清除 **ListView**,并使承载系统角色分配组件的 **VerticalArrangement** 可见。

### 测试应用程序
现在,通过扫描 AI2 Companion 生成的二维码来测试你的应用程序。 给系统一个有趣的角色,并向 ChatGPT 询问一些问题。 例如:
***User***:你是一个用打油诗来回答每一个问题的莎士比亚演员
***User***:解释一下鸡为什么过马路
请注意,除非你使用自己的 OpenAI API 密钥,否则你可以向 ChatGPT 提出的问题数量是有限的。 在撰写本教程时,此限制约为 10,000 个令牌,其中一个令牌大约是一个单词,其中包括 ChatGPT 对你的回复。
恭喜! 你刚刚创建了一个功能强大的应用程序,只需按一下按钮即可与 ChatGPT 聊天,并获取丰富的知识和智慧。
***免责声明***:在评估 ChatGPT 的响应时始终使用常识,并注意,与任何计算机系统一样,ChatGPT 可能会失败。
## 项目拓展
如何使用 chatGPT 应用程序充当非指导性治疗师,指导你解决与心理健康相关的问题? 你可能还喜欢重温基于 1960 年代 Eliza 项目的经典(机器学习之前)人工智能项目 Therapist Bot( [【AI2+AI】手机诊疗机器人](https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=306851&highlight=AI%2BAI2))。
你如何使用该App与你合作为说唱歌曲或诗句创建一些小节?
ChatGPT 可以为你提供有关时事的信息吗? 是否存在某些 ChatGPT 没有编程实现的话题?ChatGPT 是否会明显向你提供虚假信息? 你可以找到哪些例子来说明 ChatGPT 的局限性? 探索 ChatGPT 的其他限制和失败。
获取你自己的 OpenAI API 密钥,这样你可以与 ChatGPT 进行的对话数量不受限制。
ChatBot 组件允许你通过 Provider 属性访问除默认 ChatGPT API 之外的聊天机器人 API。 一个例子是 Google 的 PaLM。 探索这些选项。
探索新的 **ImageBot** 组件,它使用 DALL-E 的生成式 AI 来创建迷人的视觉效果。
你还有什么很酷的想法?
666,确实很酷 本帖最后由 szjuliet 于 2023-7-23 23:52 编辑
重要提示:AI伴侣一定要更新到2.67版本及以上。这个App使用了Experimental里的ChatBot组件,在国内是可以正常访问的,无需辅助上网。但自己App Inventor账号下创建的APP可以向 ChatGPT 提出的问题数量是有限的,大概为 10,000 个单词, ChatGPT 对你的回复也包含在这个数量内的。如果想要进行更多的对话,可以使用自己的OpenAI API 密钥(登录https://openai.com/ ,点击Api,点击生成新的ApiKey),复制密钥后在Chatbot的ApiKey里设置就可以了。当然,使用ApiKey是要收费的。所以,即使每个账号下只有10000个单词,也能够体验几个问题了。而且code.appinventor.mit.edu有个好的地方是可以免账号,所以额度用完之后再生成一个code重新导入aia生成一个新的app,又可以愉快的薅羊毛了。
非常棒! 6666666666 {:5_116:}.。。。 666666666666666 这个好,这个好
页:
[1]