发布时间:2025 年 5 月 20 日
说明类视频 | Web | 扩展程序 | Chrome 状态 | 目的 |
---|---|---|---|---|
GitHub | 视图 | 实验意向 |
Rewriter API 可帮助您修改和重构文本。此 API 和 Writer API 是写作辅助 API 提案的一部分。
这些 API 可帮助您改进用户创建的内容。
使用场景
通过延长或缩短现有文本,或更改语气来优化文本。例如,您可以:
- 改写一封简短的电子邮件,使其听起来更礼貌、更正式。
- 建议修改客户评价,以帮助其他客户了解反馈或消除有害内容。
- 调整内容格式以满足特定受众群体的期望。
您的使用场景是否未列出?加入抢先试用计划,分享您的反馈。
开始使用
加入 Rewriter API 源试用,该试用在 Chrome 137 至 142 中进行。
查看硬件要求
开发者和在 Chrome 中使用这些 API 运行功能的用户必须满足以下要求。其他浏览器可能有不同的运行要求。
Language Detector API 和 Translator API 可在桌面版 Chrome 中使用。这些 API 不适用于移动设备。当满足以下条件时,Prompt API、Summarizer API、Writer API 和 Rewriter API 可在 Chrome 中正常运行:
- 操作系统:Windows 10 或 11;macOS 13 及更高版本(Ventura 及更高版本);或 Linux。使用 Gemini Nano 的 API 尚不支持 Android 版 Chrome、iOS 版 Chrome 和 ChromeOS 版 Chrome。
- 存储空间:包含 Chrome 个人资料的卷上至少有 22 GB 的可用空间。
- GPU:VRAM 严格大于 4 GB。
- 网络:无限流量或不按流量计费的网络连接。
随着浏览器更新模型,Gemini Nano 的确切大小可能会有所不同。如需确定当前大小,请访问 chrome://on-device-internals
,然后前往模型状态。打开列出的文件路径,以确定模型大小。
报名参加源试用
Rewriter API 与 Writer API 一起提供,供您进行源试用。 如要开始使用这些 API,请执行以下操作:
- 确认《Google 生成式 AI 使用限制政策》。
- 前往 Rewriter API 来源试用。
- 点击注册,然后填写表单。在“Web 来源”字段中,提供您的来源或扩展程序 ID (
chrome-extension://YOUR_EXTENSION_ID
)。 - 如需提交,请点击注册。
- 复制提供的令牌,并将其添加到源中的每个参与网页,或将其包含在扩展程序清单中。
- 开始使用 Rewriter API。
详细了解如何开始使用源试用。
添加对 localhost 的支持
如需在源试用期间在 localhost 上访问 Writer 和 Rewriter API,您必须将 Chrome 更新到最新版本。然后,请按下列步骤操作:
- 前往
chrome://flags/#rewriter-api-for-gemini-nano
。 - 选择已启用。
- 点击重新启动或重启 Chrome。
使用 Rewriter API
首先,运行功能检测,看看浏览器是否支持这些 API。
if ('Rewriter' in self) { // The Rewriter API is supported. }
Rewriter API 和所有其他内置 AI API 都已集成到浏览器中。首次有任何网站使用内置 AI API 时,系统会单独下载 Gemini Nano。实际上,如果用户已经与内置 API 互动过,他们就已将模型下载到浏览器中。
如需确定模型是否已准备就绪,请调用异步 Rewriter.availability()
函数。如果对 availability()
的响应为 downloadable
,请监听下载进度并告知用户,因为下载可能需要一些时间。
const availability = await Rewriter.availability();
如需触发模型下载并启动重写器,请检查是否存在用户激活,然后调用 Rewriter.create()
函数。
const rewriter = await Rewriter.create({ monitor(m) { m.addEventListener("downloadprogress", e => { console.log(`Downloaded ${e.loaded * 100}%`); }); } });
API 功能
借助 create()
函数,您可以配置新的重写器对象。它采用一个可选的 options
对象,该对象包含以下参数:
tone
:写作语气是指内容的风格、特征或态度。该值可以设置为more-formal
、as-is
(默认值)或more-casual
。format
:输出格式,允许的值包括as-is
(默认值)、markdown
和plain-text
。length
:输出的长度,允许的值为shorter
、as-is
(默认值)和longer
。sharedContext
:在重写多段内容时,共享上下文有助于模型创建更符合您期望的内容。
以下示例展示了如何初始化 rewriter
对象:
const options = { sharedContext: 'This is an email to acquaintances about an upcoming event.', tone: 'more-casual', format: 'plain-text', length: 'shorter', }; const available = await Rewriter.availability(); let rewriter; if (available === 'unavailable') { // The Rewriter API isn't usable. return; } if (available === 'available') { // The Rewriter API can be used immediately . rewriter = await Rewriter.create(options); } else { // The Rewriter can be used after the model is downloaded. rewriter = await Rewriter.create(options); rewriter.addEventListener('downloadprogress', (e) => { console.log(e.loaded, e.total); }); }
开始重写
模型输出内容的方式有两种:非流式输出和流式输出。
非流式传输输出
对于非流式重写,模型会整体处理输入,然后生成输出。
如需获取非流式输出,请调用异步 rewrite()
函数。您必须包含要改写的初始文本。您可以添加可选的 context
来提供模型背景信息,这有助于模型更好地满足您对输出的期望。
// Non-streaming const rewriter = await Rewriter.create({ sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc." }); const result = await rewriter.rewrite(reviewEl.textContent, { context: "Avoid any toxic language and be as constructive as possible." });
流重写输出
流式传输可提供实时结果。随着输入内容添加和调整,输出内容会不断更新。
如需获取流式重写器,请调用 rewriteStreaming()
函数,并遍历流中可用的文本段。您可以添加可选的 context
来提供模型背景信息,这有助于模型更好地满足您对输出的期望。
const rewriter = await Rewriter.create({ sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc." }); const stream = rewriter.rewriteStreaming(reviewEl.textContent, { context: "Avoid any toxic language and be as constructive as possible.", tone: "more-casual", }); for await (const chunk of stream) { composeTextbox.append(chunk); }
为多个任务共享上下文
您可能需要使用 rewriter
生成多条内容。在这种情况下,添加 sharedContext
会很有用。例如,您可能希望帮助审核者在评论中提供更出色的反馈。
// Shared context and per writing task context const rewriter = await Rewriter.create({ sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform." }); const stream = rewriter.rewriteStreaming( "Love all this work on generative AI at Google! So much to learn and so many new things I can do!", { context: "The request comes from someone working at a startup providing an e-commerce CMS solution.", tone: "more-casual", } ); for await (const chunk of stream) { composeTextbox.append(chunk); }
重复使用重写器
您可以使用同一重写器来修改多篇内容。如果将重写器添加到反馈或评论工具中,以帮助撰写者提供有意义且有用的反馈,这可能特别有用。
// Reusing a rewriter const rewriter = await Rewriter.create({ sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc." }); const rewrittenReviews = await Promise.all( Array.from( document.querySelectorAll("#reviews > .review"), (reviewEl) => rewriter.rewrite(reviewEl.textContent, { context: "Avoid any toxic language and be as constructive as possible.", tone: "more-casual", }) ), );
停止重写器
如需结束重写流程,请中止控制器并销毁 rewriter
。
// Stop a rewriter const controller = new AbortController(); stopButton.onclick = () => controller.abort(); const rewriter = await Rewriter.create({ signal: controller.signal }); await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal }); // Destroy a rewriter rewriter.destroy();
演示
权限政策、iframe 和 Web Worker
默认情况下,Rewriter API 仅适用于顶级窗口及其同源 iframe。可以使用权限政策 allow=""
属性将 API 访问权限委托给跨源 iframe:
<!-- The hosting site at https://main.example.com can grant a cross-origin iframe at https://cross-origin.example.com/ access to the Rewriter API by setting the `allow="rewriter"` attribute. --> <iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
由于需要为每个 worker 建立负责任的文档以检查权限政策状态,因此 Prompt API 目前在 Web Worker 中不可用。
互动和分享反馈
Writer 和 Rewriter API 正在积极讨论中,将来可能会发生变化。如果您试用了此 API 并有反馈意见,欢迎随时告诉我们。
- 阅读说明、提出问题并参与讨论。
- 在 Chrome 状态中查看 Chrome 的实现情况。
- 加入抢先预览计划,抢先了解新 API 并加入我们的邮寄名单。
- 如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug。
探索浏览器中所有使用模型的内置 AI API,包括 Gemini Nano 和其他专家级模型。