OpenAI 于 2024 年 10 月开发者大会上发布 Canvas,官方给它的用途定义为:在写作和代码方面展开协作。有点结对写作和结对编程的意思,应该是想往写作工具(office、notion这些)和代码编辑工具(vscode、cursor)上扩展。下面我结合官方的文档以及我的试用体验,给大家简单大概介绍一下 Canvas。

功能

写作工具

xxx

该功能支持在线编辑文档,可以选中某一句或段文本进行追问让chatgpt进行改写,也可使用快捷键,其中快捷键包括建议编辑、调整长度、阅读水平、添加最后的润色、添加表情。有点类似于 DALLE 的交互逻辑。

代码编辑

xxx

该功能借鉴了 Claude 的 artifacts,虽然不支持在线预览,但支持在线编辑、选中某一句或段文本进行追问,也可使用快捷键,如代码审查、转移到另一种语言、修复错误、添加日志、添加注释。

关于实现

我阅读了一下 OpenAI 官方发布的介绍文章,这里记录了一些重点的内容。

  1. 重新训练了 GPT-4o,让它能够成为创造性的合作伙伴。这个模型知道何时打开 Canvas、进行有针对性的编辑或彻底重写。它还能理解更广泛的上下文,提供精准的反馈和建议。据 OpenAI 研究员介绍 Canvas 模型是通过合成数据进行训练的,并在 2 个月内训练了出具有核心行为的模型。

  2. Canvas 有以下核心功能:

  • 在写作和编程时触发 Canvas
  • 生成多样化的内容类型
  • 进行有针对性的编辑
  • 重写文档
  • 提供行内点评
  1. 通过超过 20 项自动化内部评估来衡量进展。使用了新颖的合成数据生成技术,例如从 OpenAI o1-preview 蒸馏输出结果,对模型的核心行为进行微调训练。这种方法让我们能够快速解决写作质量和新的用户交互问题,而且完全不依赖人工生成的数据。

  2. 一个关键的挑战是定义何时触发 Canvas。我们教会模型在像“撰写一篇关于咖啡豆历史的博客文章”这样的提示时触发 Canvas,同时避免在“帮我做一道新的晚餐食谱”这样的常规问答任务中过度触发。对于写作任务,我们优先提升了“正确触发率”(以牺牲“正确不触发率”为代价),达到了 83%,相比基础的零样本 GPT-4o 使用提示指令有了明显提升。

  3. 值得注意的是,这类基线的表现对具体提示的敏感性很高。使用不同的提示时,基线模型可能仍然会表现不佳,但形式不同——例如,它可能在编码和写作任务上同样表现不佳,从而导致不同的错误分布和其他形式的次优表现。对于编码任务,我们故意让模型偏向不触发 Canvas,以避免干扰高级用户的使用体验。

  4. 对于写作和编程任务,我们改进了正确触发 Canvas 的决策边界,分别达到了 83% 和 94%,相比基础的零样本 GPT-4o 使用提示指令有了显著提升。

  5. 第二个挑战是如何在触发 Canvas 后调整模型的编辑行为——特别是在何时进行有针对性的编辑,何时重写整个内容。我们训练模型在用户在界面中明确选择文本时执行有针对性的编辑,否则则倾向于重写。

  6. 训练模型生成高质量评论需要经过反复的仔细迭代。与前两个较容易通过全面人工审查适应自动化评估的情况不同,自动化衡量质量是一个特别具有挑战性的任务。因此,我们通过人工评估来判断评论的质量和准确性。我们的集成 Canvas 模型在准确性上比零样本 GPT-4o 使用提示指令提升了 30%,在质量上提升了 16%,这表明合成训练相比零样本加详细提示指令,能够显著提升响应质量和行为表现。