惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
H
Help Net Security
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
云风的 BLOG
云风的 BLOG
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
月光博客
月光博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
G
Google Developers Blog
Jina AI
Jina AI
P
Proofpoint News Feed
J
Java Code Geeks
I
InfoQ
博客园 - 司徒正美
D
DataBreaches.Net
博客园 - 叶小钗
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
L
LangChain Blog
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
V
V2EX
F
Full Disclosure
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
V
Visual Studio Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
Snap! 中的 GPT-4o
种瓜 · 2024-05-28 · via 夜行人

文章目录

English version

前言

之前写过一篇文章讨论图形化编程中的 AI 助手 , 当时的实验展示了一些有趣的可能性, 但实用性并不高。 随着 GPT-4o 的发布, 尤其是多模态能力的提升(不久将发布音频流, 视频流 API), 图形化编程中的 AI 助手(或导师) 变得真正具有吸引力: 你可以通过对话与之交流, 它能够实时看到你在做的事情, 理解你的困境并给予建议或引导

Snap! (即将发布 Snap! v10)近期的巨大改进。尤其是 lisp code 功能的发布(积木与代码是同构的),使得 Snap 成为可以与 AI 进行深度协作的图形化环境。

通过 Snap! 的JavaScript function 功能, 我们可以将 GPT-4o 的能力全部引入 Snap! , 无需对 Snap! 源代码做任何修改!

我将 GPT-4o 的功能包装为一个 Snap! 库

其中最常用的积木是 stream chat completions, 这个积木流式地输出 GPT-4o 的回复, 与你在 ChatGPT app 的使用体验非常相似。

这个积木的参数如下:

  • text: 提示词
  • vision: 将 Snap! 某个区域的图像发送给 GPT-4o。你可以选择让 GPT-4o 看到以下任一内容,
    • IDE: 当前整个页面
    • Stage: 舞台区
    • Camera: 摄像头
    • Scripting Area: 脚本区(暂未实现)
    • Palette: 最左边的积木区域(暂未实现)
    • None: 不携带图像(只进行文本对话)
  • callback: 回调函数。每当 GPT-4o 返回了信息时, 将调用这个回掉函数, 通常来时,它是 say, 或者 设置某个变量
  • temporary: 这个开关用来控制是否是临时对话, 如果不是临时对话, 对话的内容都将存储在 messages 变量中。 你可以使用 clear messages 积木清理它。

描述摄像头的内容

这个简单的例子(点击运行)中, 我们让 GPT-4o 描述它看到的摄像头内容

你需要先在积木填写 API key, 才能运行。为了获得 API key, 需要有一个 openai 账号(目前只有 Plus 用户才能够使用 GPT-4o 的 API, 未来可能会有变化), 然后通过 这个链接 申请 API key。

如果你是企业, 想为国内用户提供 GPT-4o 的 API 服务, 需要等到微软的 Azure OpenAI Service 支持 GPT-4o。 我为 Azure OpenAI Service 也构建了对应版本的驱动库, 如有需要,可以联系我。

生成图像

将文字生成的图像, 用作角色的造型:

示例项目(点击运行)

聊天界面

你可以使用 Snap! 的菜单库构建类似聊天软件的界面, 原理是为 messages 变量构建合适的 UI 界面。

示例项目(点击运行)

更完整的例子:

图形化编程中的 AI 助手

我将 AI 助手 构建为一个普通的 Snap! 角色, AI 助手只是一个使用了 GPT-4o 库的普通角色, 作为用户的你(你可能是产品经理或老师), 可以随意修改它来实现脑子里的原型, 由于整个过程只是拼搭积木, 因此无需委托"软件工程师"来帮助你实现想法。

我喜欢在 Snap! 的 “用户环境” 中工作, 而不是在源代码中工作, 它有更好的活性(liveness), 不仅效率更高, 而且更加愉快。

分享我之前做的一些实验, 它们都包含在这个项目中: AI Assistant(点击运行)

运行项目之前,首先需要切换到 AI Assistant 角色里, 填写 API key.

视频演示

这个 演示视频(图形化编程环境中的 GPT-4o) 介绍了更多的内容, 如果你对 AI Assistant 项目感兴趣,推荐先看完视频。

以下是几个比较简短的视频展示 AI Assistant 的能力:

向用户解释页面中的任务(通过视觉能力看到当前任务):

当用户感到困惑时, 看到用户的困境(与用户共享相同的视野), 并给与合适的建议

解释答案, 并给出可运行的积木代码:

我试着在以下例子中测试 GPT-4o 的能力边界:

基于给定的积木, 以及一例展示了lisp code 语法的样本, GPT-4o 就完成了这个任务:

GPT-4o 的视觉能力帮助纠正了我任务描述中的错误(内径误写为外径), 思维链对于增强它的数学能力非常有用。例子来自Test Driving ChatGPT-4o (Part 2)

Snap! 的 Puzzle 功能与 GPT-4o 相结合来构建 microworld,

Seymour Papert 最早在《Mindstorms》里提出 microworld 的想法, 《终身幼儿园》复述了这个重要想法。 这是个非常有潜力的方向,我目前认为它可能是在图形化编程中的 AI 助手的最佳方向, 它可以显著减少幻觉。

更多的演示参考 演示视频(图形化编程环境中的 GPT-4o)

FAQ

如何改进 GPT-4o 的 lisp code 生成能力?

  • 提供语法的形式描述
  • 提供足够的代码样本用于 fine-tuning
    • 写一个爬虫从 Snap! 社区爬取所有项目, 用于 fine-tuning

接下来会做什么?

目前的 GPT-4o 版本只是 v1, 有很多工作值得继续探索:

  • embedding for blocks(help text)
  • 音频流(openai 暂未发布 api)
  • 视频流(openai 暂未发布 api)

你是如何构建 GPT-4o 库的?

使用 JavaScript function 引入 OpenAI JavaScript library

GPT-4o 库的每一个积木, 都可以展开阅读, 通过阅读这些自定义积木, 你可以弄懂它们是如何构建的。

如何将其转化为标准的 Snap! 库?

目前 GPT4o 库 已成为了 Snap! 中文版 内置库.

更多细节参考 如何将其转化为标准的 Snap! 库?

Realtime API

参考 视频演示

参考