發布日期:2024 年 11 月 11 日,上次更新日期:2025 年 5 月 20 日
說明 | 網頁 | 額外資訊 | Chrome 狀態 | Intent |
---|---|---|---|---|
MDN | 查看 | Intent to Ship |
您可以讓使用者將冗長的文章、複雜的文件,甚至是熱絡的即時通訊對話濃縮成精簡且有洞見的摘要。
您可以使用 Summarizer API 以各種長度和格式 (例如句子、段落、項目符號清單等) 產生不同類型的摘要。我們認為這個 API 適用於下列情況:
- 總結文章或即時通訊對話的重點。
- 為文章提供標題和標題建議。
- 針對冗長的文字建立簡潔且資訊豐富的摘要。
- 根據書籍評論產生書籍預告片。
開始使用
您可以從 Chrome 138 穩定版開始使用 Summarizer API。
執行功能偵測,瞭解瀏覽器是否支援 Summarizer API。
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
查看硬體需求
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。
- 網路:無限上網流量或無限上網連線。
這些規定適用於您在開發過程中,以及使用您建構的功能的使用者。
下載模型
Summarizer API 會使用經過訓練的模型,產生高品質的摘要。這個 API 已內建於 Chrome,而 Gemini Nano 是網站首次使用這個 API 時下載的模型。
如要判斷模型是否已準備好供使用,請呼叫非同步 Summarizer.availability()
函式。它會傳回含有下列值的承諾。
"unavailable"
表示實作不支援要求的選項。"downloadable"
表示實作項目支援所要求的選項,但瀏覽器必須先下載某些項目,例如模型 (在 Chrome 的情況下為 Gemini Nano) 或模型的精細調整。"downloading"
表示實作項目支援要求的選項,但必須先完成目前的下載作業才能繼續。"available"
表示實作項目支援要求的選項,且摘要工具可以繼續執行。
如要觸發模型下載作業並建立摘要器,請呼叫非同步 Summarizer.create()
函式。如果 availability()
的回應是 downloadable
或 downloading
,建議您監聽下載進度。這樣一來,您就能通知使用者,並指出下載作業可能需要一些時間才能完成,然後再進行摘要作業。
const summarizer = await Summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
API 函式
您可以利用 create()
函式,根據需求設定新的摘要器物件。此方法會使用選用的 options
物件,並採用下列參數:
sharedContext
:可協助摘要工具的其他共用背景資訊。type
:摘要類型,允許的值為key-points
(預設)、tl;dr
、teaser
和headline
。詳情請參閱下表。format
:摘要格式,可使用的值為markdown
(預設) 和plain-text
。length
:摘要長度,允許的值為short
、medium
(預設值) 和long
。這些長度的含義會因要求的type
而異。舉例來說,在 Chrome 的實作中,簡短的重點摘要包含三個項目符號,而簡短摘要則是一段文字。
下表列出不同類型的摘要,以及對應的長度。長度代表可能的最大值,因為有時結果可能較短。
類型 | 意義 | 長度 | ||||||
---|---|---|---|---|---|---|---|---|
"tl;dr" |
摘要應簡短扼要,提供輸入內容的快速總覽,適合忙碌的讀者。 |
|
||||||
"teaser" |
摘要應著重於輸入內容中最有趣或最吸引人的部分,以吸引讀者繼續閱讀。 |
|
||||||
"key-points" |
摘要應從輸入內容中擷取最重要的重點,並以項目符號清單的形式呈現。 |
|
||||||
"headline" |
摘要應以文章標題的格式,在單一句子中有效地包含輸入內容的主要重點。 |
|
以下範例說明如何初始化摘要工具。
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const availability = await Summarizer.availability();
let summarizer;
if (availability === 'unavailable') {
// The Summarizer API isn't usable.
return;
}
if (availability === 'available') {
// The Summarizer API can be used immediately .
summarizer = await Summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await Summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
await summarizer.ready;
}
執行摘要工具
執行摘要工具的方式有兩種:串流和批次 (非串流)。
批次摘要
使用批次摘要時,模型會整體處理輸入內容,然後產生輸出內容。
如要取得批次摘要,請呼叫 summarize()
函式。第一個引數是您要匯出的文字。第二個選用引數是含有 context
欄位的物件。您可以透過這個欄位新增背景詳細資料,以便改善摘要。
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
串流摘要
即時摘要功能可即時提供結果。隨著輸入內容的新增和調整,輸出內容也會持續更新。如要取得串流匯總,請呼叫 summarizeStreaming()
,而非 summarize()
。
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarizeStreaming(longText, {
context: 'This article is intended for junior developers.',
});
示範
您可以在 Summarizer API Playground 中試用 Summarizer API。
標準化作業
我們正在努力將 Summarizer API 標準化,確保跨瀏覽器的相容性。
我們的 API 提案獲得社群支持,並已移至 W3C Web Incubator Community Group 進一步討論。Chrome 團隊向 W3C 技術架構小組索取意見回饋,並向 Mozilla 和 WebKit 詢問他們的標準立場。
加入 Web Incubator 社群群組,參與標準制定工作。
提供意見
我們想瞭解您使用 Summarizer API 打造的內容,在 X、YouTube 和 LinkedIn 上與我們分享網站和網路應用程式。