Web开发者的浏览器内置语言模型API
prompt-api是一个实验性项目,为Web开发者提供统一的JavaScript API以访问浏览器内置语言模型。该API抽象了语言模型细节,实现本地数据处理、离线使用和降低开发成本。它支持零样本提示、系统提示和N-shot提示,并提供会话管理和能力检测功能。prompt-api为开发AI驱动的Web应用提供了新的可能性。
这是 Chrome 内置 AI 团队的一份早期设计草案,旨在描述以下问题并征求对提议解决方案的反馈。尚未批准在 Chrome 中发布。
浏览器和操作系统越来越被期望能够访问语言模型。(示例, 示例, 示例。) 语言模型以其多功能性而闻名。通过足够创造性的提示,它们可以帮助完成各种各样的任务,例如:
虽然 Chrome 内置 AI 团队正在为其中一些用例探索专用 API(例如翻译,未来可能还会有摘要和撰写),我们也在探索一个通用的"prompt API",允许 Web 开发者直接向语言模型发送提示。这让 Web 开发者可以访问更多功能,但代价是需要他们自己进行提示工程。
目前,希望使用语言模型的 Web 开发者必须调用云 API,或者自带模型并使用 WebAssembly 和 WebGPU 等技术运行。通过提供对浏览器或操作系统现有语言模型的访问,我们可以与云 API 相比提供以下优势:
同样,与自带 AI 的方法相比,使用内置语言模型可以节省用户的带宽,可能受益于更多优化,并降低 Web 开发者的使用门槛。
比许多其他需要开启标志的 API 更甚,prompt API 是一个实验,旨在帮助我们了解 Web 开发者的用例,以制定专用 API 的路线图。 然而,我们希望发布一个说明文档,为实验进行期间提供文档和公开讨论的场所。
我们的目标是:
以下是明确的非目标:
以下是我们尚不确定的潜在目标:
这两个潜在目标都可能给互操作性带来挑战,因此我们想进一步调查这些功能对开发者有多重要,以找到合适的权衡。
在这个例子中,使用单个字符串向 API 发送提示,假设这来自用户。返回的响应来自助手。
const session = await ai.assistant.create(); // 向模型发送提示并等待整个结果返回。 const result = await session.prompt("给我写一首诗。"); console.log(result); // 向模型发送提示并流式传输结果: const stream = await session.promptStreaming("给我写一首特别长的诗。"); for await (const chunk of stream) { console.log(chunk); }
助手可以配置一个特殊的"系统提示",为未来的交互提供上下文:
const session = await ai.assistant.create({ systemPrompt: "假装你是一只能言善辩的仓鼠。" }); console.log(await session.prompt("你最喜欢的食物是什么?"));
系统提示是特殊的,助手不会对其做出响应,即使由于对 prompt()
的过多调用导致上下文窗口溢出,它也会被保留。
如果系统提示太大(见下文),则 promise 将被拒绝,并抛出一个 "QuotaExceededError"
DOMException
。
如果开发者想提供用户/助手交互的示例,他们可以使用 initialPrompts
数组。这与常见的"聊天完成 API"格式 { role, content }
对齐,包括一个 "system"
角色,可以用来代替上面显示的 systemPrompt
选项。
const session = await ai.assistant.create({ initialPrompts: [ { role: "system", content: "