Published on

提示设计

Authors
  • avatar
    Name
    风哥AI

我通常不喜欢将新世界现象与旧世界类比的常见习惯。所以请耐心听我犯下这个错误:让我阐述为什么提示应该被称为_提示设计_,并与网页设计相提并论

我将提示视为与一个时间受限的人进行沟通。虽然特定于大型语言模型(LLM)的技术无疑是有帮助的(尤其是思维链),但我发现提高性能的最佳方法之一就是提供极其清晰和高质量的指令,正如清晰和简洁也有助于真实人类更好地理解。

提示作为清晰的沟通 使得提示听起来像是写作。然而,我所做的大部分提示都是参数化的:我有多个输入变量,需要动态调整我的提示以适应这些变量。

因此,提示作为与动态输入的清晰沟通 感觉是最准确的描述。

还有哪个领域是关于与动态输入进行清晰沟通的?网页设计。

让我们列出所有相似之处。提示和网页设计都:

  1. 需要清晰,以沟通为主要目标;
  2. 需要响应动态内容,不同于写作或杂志布局;以及
  3. 需要将其内容适应不同的大小——网页设计的屏幕尺寸,提示的上下文窗口。

根据我在提示和网页设计方面的经验,我还发现我在这两个领域有相似的开发者偏好:

  1. 查看实际提示 是非常重要的,就像 查看渲染的网站 是非常重要的。如果我必须在脑海中模拟 HTML 和 CSS 渲染过程,我就无法设计一个网站。同样,在没有查看填充了所有输入变量的提示的渲染输出的情况下,很难写出好的清晰的提示。

    • 例如,提示 "Hi ${username} ${message}" 可能看起来合理,直到你渲染它并意识到用户名与消息混在一起。
  2. 可组合组件在提示和网页设计中都是有用的。

  3. 声明式优于命令式。在所有 HTML 元素都是通过 document.createElement 调用创建的情况下,改变一个网站是非常困难的。同样,阅读和更改由长序列的 str += "..." 组成的提示也容易变得难以管理。

  4. 在这两者中,我有时想要实现“像素完美”。在提示较弱的模型(GPT-3.5 及更差)时,我想确保没有多余的换行或其他类型的不完美格式,而在设计网站时,有时每个像素都很重要。

对于 LLM 代理,可以进一步推进这个类比:代理提示可以被视为为代理构建一个互动网站,在这个网站上,他们可以通过调用函数“点击按钮”,并且提示会根据函数调用重新渲染,就像网站会根据按钮点击重新渲染一样。

当然,提示设计和网页设计之间也存在差异:

  1. 提示仅处理文本(目前!)。
  2. 缓存是不同的:特别是对于代理,你希望通过仅更改提示的后半部分来确保你的重新渲染是便宜的。在这里有一个牵强的类比(你希望缓存优化你的网站),但我认为这在根本上是一个完全不同的挑战。

尽管如此,这些相似之处让我相信提示应该被称为_提示设计_,而不是_提示工程_。编写提示_感觉就像设计一个网站_,因此也应该以相同的方式命名。

提示设计的视角激励我创建了一个类似 React 的、基于 JSX 的提示设计库。

Priompt v0.1:提示设计库的首次尝试

是一个受现代网页设计原则启发的提示设计库的首次尝试。我们在内部使用它,并且非常喜欢。

我认为它在所有抽象方面可能并不完全正确,但我至少相信 JSX 是编写提示比字符串模板更符合人体工程学的方式。即使是简单的能够轻松注释掉提示部分的功能,也使得迭代循环变得更快。

Priompt 还附带一个(非常匆忙搭建的)预览网站,你可以在真实数据上预览你的提示。在开发应用程序时,你可以在每个请求中记录传入组件的序列化 props。然后,当你看到意外行为时,你可以去 Priompt 预览,查看确切的提示,并更改源代码,使提示更新为与真实请求相同的 props。我们发现这使得迭代提示变得更容易。

如果你试用一下,请告诉我你的想法!我很想看到更多类似的想法,或者只是被告知我完全错了,提示设计是愚蠢的 :).

注意事项

模型变化迅速,因此提示技术也必须随之变化。基于此,我认为关于_提示设计_的描述有几个注意事项:

  1. 对于 GPT-4,像素完美的设计并不重要,并且对于 GPT-4.5 或更好的模型可能会过时。
  2. 如果推测最近的长上下文模型趋势,上下文窗口的限制可能会消失。不过,我对此并不确定。
  3. OpenAI 似乎正在朝着减少开发者对提示的控制方向发展;有可能在一年内将不存在提示,API 调用只要求我们提供原始输入和指令。这种减少控制的趋势始于聊天格式,并在最近宣布的函数调用中持续。
  4. 缓存可能是提示中最重要的方面之一,在这种情况下,它开始听起来更像工程而不是设计。
  5. 也许提示设计过于底层,应该留给更高层的框架或编译器(例如)。我认为这可能是正确的,但考虑到 LLM 快速变化的性质,我个人更喜欢尽可能接近原始模型。

最后的必要说明

...因为我很想和你合作 : 在,我们正在构建,一个以 AI 为先的代码编辑器。如果你对提示设计、用于编码的 LLM 或构建美丽产品感到兴奋,请给我发电子邮件。我们在旧金山有 5 个人,我的所有同事都很优秀,我们希望再找几位优秀的人——程序员和设计师——加入我们,共同构建编码的未来。