发布时间:2025 年 5 月 20 日
解说 | Web | 扩展程序 | Chrome 状态 | 意向 |
---|---|---|---|---|
GitHub | 视图 | 意图进行实验 |
Rewriter API 可帮助您修改和重构文本。此 API 和 Writer API 属于写作辅助 API 提案的一部分。
这些 API 可帮助您改进用户创作的内容。
使用场景
通过延长或缩短现有文本或更改其语气来优化文本。例如,您可以:
- 改写一封简短的电子邮件,使其听起来更礼貌、更正式。
- 对客户评价提出修改建议,以帮助其他客户了解反馈或移除恶意评价。
- 调整内容格式,以满足特定观众的期望。
您的用例是否缺失?加入抢先体验计划,分享您的反馈。
开始使用
加入 Rewriter API 源试用,该试用在 Chrome 137 到 142 中运行。
查看硬件要求
语言检测器 API 和 Translator API 仅适用于桌面版 Chrome。
满足以下条件时,Prompt API、Summarizer API、Writer API 和 Rewriter API 可在 Chrome 中正常运行:
- 操作系统:Windows 10 或 11;macOS 13 或更高版本(Ventura 及更高版本);或 Linux。由 Gemini Nano 支持的 API 尚不支持 Android 版、iOS 版和 ChromeOS 版 Chrome。
- 存储空间:包含 Chrome 个人资料的卷至少有 22 GB。
- GPU:VRAM 必须严格超过 4 GB。
- 网络:无限流量或不计流量的连接。
这些要求适用于您在开发过程中以及使用您构建的功能的用户。
注册源代码试用
Rewriter API 可与 Writer API 一起在源试用中使用。如需开始使用这些 API,请执行以下操作:
- 确认您已阅读《Google 生成式 AI 使用限制政策》。
- 前往 Rewriter API 源代码试用版。
- 点击注册,然后填写表单。在“网站来源”字段中,提供您的来源或扩展程序 ID
chrome-extension://YOUR_EXTENSION_ID
。 - 如需提交,请点击注册。
- 复制提供的令牌,并将其添加到来源中的每个参与扩展程序的网页,或将其包含在扩展程序清单中。
- 开始使用 Rewriter API。
详细了解如何开始使用来源试用。
添加了对 localhost 的支持
如需在源试用期间在 localhost 上访问 Writer API 和 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()
函数。它会返回一个字符串,该字符串可以采用四个可能的值:
unavailable
:浏览器支持 Rewriter API,但目前无法使用。这可能有多种原因,例如可用磁盘空间不足,无法下载模型。available
:浏览器支持 Rewriter API,并且可以立即使用。downloadable
:浏览器支持 Rewriter API,但需要先下载模型。downloading
:浏览器支持 Rewriter API,并且目前正在下载模型。
如需触发模型下载并启动重写器,请调用 Rewriter.create()
函数。如果对 availability()
的响应为 downloadable
,请监听下载进度并通知用户,因为下载可能需要一些时间。
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();
演示
互动和分享反馈
Writer 和 Rewriter API 正在积极讨论中,将来可能会发生变化。如果您试用此 API 并有反馈,我们非常期待收到您的反馈。
- 阅读解说、提问和参与讨论。
- 如需查看 Chrome 的实现情况,请访问 Chrome 状态。
- 加入抢先体验计划,抢先体验新 API 并加入我们的邮寄名单。
- 如果您对 Chrome 的实现有任何反馈,请提交 Chromium bug。
探索在浏览器中使用模型(包括 Gemini Nano 和其他专家模型)的所有内置 AI API。