發布日期:2025 年 5 月 20 日
說明 | 網頁 | 額外資訊 | Chrome 狀態 | Intent |
---|---|---|---|---|
GitHub | 查看 | 意圖進行實驗 |
Rewriter API 可協助您修訂及重構文字。這個 API 和 Writer API 是 Writing Assistance APIs 提案的一部分。
這些 API 可協助您改善使用者創作的內容。
用途
縮短或延長現有內容,或變更語氣來調整內容。舉例來說,您可以:
- 改寫一封簡短的電子郵件,讓內容聽起來更有禮貌、更正式。
- 建議修改客戶評論,協助其他客戶瞭解意見回饋或移除有害內容。
- 根據特定觀眾的期待,調整內容格式。
是否缺少您的用途?加入搶先體驗方案,分享您的意見回饋。
開始使用
加入 Rewriter API 來源試用計畫,在 Chrome 137 到 142 版中執行。
查看硬體需求
Language Detector API 和 Translator API 僅適用於 Chrome 桌面版。
在 Chrome 中,Prompt API、Summarizer API、Writer API 和 Rewriter API 會在下列條件下運作:
- 作業系統: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 新增支援
如要在來源試用期間存取本機上的 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()
函式。它會傳回字串,可採用四個可能的值:
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 錯誤。
在瀏覽器中探索所有使用模型的 內建 AI API,包括 Gemini Nano 和其他專家模型。