前言

我们之前尝试过将 GPT-4o 带入 Snap!.

Snap! 用户用它做了很多有意思的项目, 比如 @张老师 带学生做的这个项目

由于国内无法正常使用 OpenAI, 人们希望往 Snap! 里接入国内大模型.

于是我尝试接入字节跳动的 豆包 大模型.

Snap! GPT-4o 库主要提供了以下两块积木:

这两个积木提供的功能分别是:

  • 对话(支持图像理解)
  • 文生图(从文字生成图像)

为了替代 GPT-4o 库的功能, 我们需要用到以下两种豆包大模型(字节跳动在模型广场提供了非常多的的大模型):

开始使用

提醒: 推荐张老师录制的这个教学视频

为了在 Snap! 里使用豆包大模型, 需要进行以下以下工作:

对话模型需要的设置:

文生图模型需要的设置:

开始编程

开通大模型服务, 获取密钥之后, 就可以在 Snap! 中编程了.

以上例子, 展示了如何进行多轮对话(关闭临时对话的开关, 对话历史存储在 doubao_messages 全局变量里)

你可以从这个例子开始:

示例项目 (点击运行)

进阶

豆包库的所有功能都是在 Snap! 里实现的, 相比于之前的 GPT-4o 库(使用了 OpenAI SDK 制作的 primitive), 用户拥有更多的控制权, 使得以下这些事情可以发生:

  1. 用户可以在积木层面理解网络通信的所有细节, 深入到网络请求的细节构造里
  2. 调整 API 的任何参数
  3. 未来豆包大模型平台有了新功能, 用户可以在 Snap! 里添加自定义积木, 来使用这些未来的新功能
  4. 用户可以修改豆包库, 使其支持其他的 AI 平台

FAQ

速率限制?

注意大模型服务通常会有请求速率限制(尤其是文生图服务), 如果访问的人数比较多(比如在课堂使用), 可能需要付费扩充 QPS(Queries Per Second,查询每秒)上限, 免费版本默认是 1 秒请求 1 次:

如何渲染 markdown 文本?

大模型喜欢回复 markdown 文本, 我们可以在 Snap! 中渲染它: 动态显示 markdown 文档

示例项目 (点击运行)

如何解决在浏览器中使用豆包 API 遇到的 CORS 问题?

需要代理服务器. 目前我跟 ChatGPT 一起为豆包大模型写了个简单的代理服务器.

代理服务属于 I/O 密集型应用, 以异步的方式编写效率会更高, 能够有效提高吞吐量.

豆包大模型文生图相关的 Python SDK 文档很糟糕, 暂时使用同步的 API (支持 4x10 的并发).

对话相关的 API 目前是异步的, 性能很高, 支持大规模并发.

有哪些需要改进的地方?

改进图像理解相关部分

目前对话积木的图像理解功能, 传输的是 base64 编码的图像, 图像没有经过压缩, 有 2MB 多, 如果开启多轮视觉对话(临时对话设为的时候), 可能会比较慢.

有两个改进方向:

  1. 将图片上传到云服务, 然后发 url 给大模型
  2. 在 Snap! 里压缩完图像再以 base64 格式传给大模型

如何使用这个 AI 大模型库?

这个 AI 大模型库使用起来很简单, 但人们可能以非常糟糕的方式使用它.

关于如何在教育中使用 AI , 迄今为止, 我最认可的观点是 Scratch/《终生幼儿园》 作者的这篇文章 Generative AI and Creative Learning: Concerns, Opportunities, and Choices(生成式人工智能与创造性学习:忧虑、机遇和选择). 这也是我将 AI 大模型接入个人计算环境(如当前的Snap!)的主要动机.

如今的人工智能技术往往以限制学习者的主动性、专注于“封闭式”问题,并以低估人际关系和社区的方式进行应用

我相信这些新的人工智能技术(与早期的人工智能技术相比)在支持年轻人进行基于项目、兴趣驱动的创造性学习体验方面具有更大的潜力,从而支持他们作为有创造力、好奇心强、合作性强的学习者的发展。我们可能正处于重大教育变革的时刻:新的生成式人工智能技术所引起的混乱使更多人意识到我们在教育和学习方法上需要根本性的变革。但只有人们在设计和使用这些新工具的方式上做出明确、有意识的选择,新的人工智能技术才会对这些变革做出贡献。

在很大程度上,AI 导师被设计用来控制教育过程:设定目标、传递信息、提出问题、评估表现。这也是过去几个世纪大多数教室的运作方式。但当今世界要求一种不同的方法:为学生提供机会设定自己的目标,建立自己的兴趣,表达自己的想法,制定自己的策略,并对自己的学习有一种控制感和所有权。这种学习者主体性对学生的发展非常重要,帮助他们培养主动性、动力、自信和创造力,这些都是他们在未来在社区中做出有意义的贡献所需的。

AI 导师和教练被宣传为“个人化”,因为它们提供个性化的指导。但在我看来,真正个人化的学习方法应该给学习者更多的选择和控制权

通过 Scratch,年轻人可以根据自己的兴趣创建动画、游戏和其他互动项目,并与在线社区中的其他人分享。通过这种基于项目的、兴趣驱动的方法,学生仍然可以学习重要的编程技能和计算机科学概念,但他们是在更具激励和意义的背景下学习,因此能够与这些想法建立更深层次的联系。

学校通常更喜欢封闭式问题,因为这样更容易管理和评估。学校最终会重视他们最容易评估的东西,而不是想出评估最有价值的东西的方法

选择更多地涉及教育和政治,而不是技术.

《终生幼儿园》 和 《Mindstorms》 可能依然是最好的向导.

参考