使用內建 AI 技術製作摘要

發布日期:2024 年 11 月 11 日,上次更新日期:2025 年 7 月 30 日

說明 網頁 額外資訊 Chrome 狀態 Intent
MDN Chrome 138 Chrome 138 查看 出貨意願

你可以讓使用者將長篇大論、複雜文件,甚至是熱烈的對話內容,濃縮成簡潔精闢的摘要。

您可以使用 Summarizer API,以不同長度和格式生成各種摘要,例如句子、段落、項目符號清單等。我們認為這個 API 適用於下列情境:

  • 歸納文章或即時通訊對話的重點。
  • 建議文章標題和標題。
  • 生成長篇文字的精簡摘要。
  • 根據書評生成書籍預告。

開始使用

Summarizer API 可在 Chrome 138 穩定版中使用。

使用這項 API 前,請先詳閱並同意《Google 生成式 AI 使用限制政策》

執行功能偵測,確認瀏覽器是否支援 Summarizer API。

if ('Summarizer' in self) {
  // The Summarizer API is supported.
}

查看硬體需求

開發人員和使用者在 Chrome 中使用這些 API 運作功能時,必須遵守下列規定。其他瀏覽器的操作規定可能不同。

語言偵測器和翻譯器 API 適用於電腦版 Chrome。這些 API 不適用於行動裝置。在 Chrome 中使用 Prompt API、Summarizer API、Writer API 和 Rewriter API 時,須符合下列條件:

  • 作業系統:Windows 10 或 11;macOS 13 以上版本 (Ventura 和後續版本);或 Linux。目前 Android 版、iOS 版和 ChromeOS 版 Chrome 尚未支援使用 Gemini Nano 的 API。
  • 儲存空間:包含 Chrome 設定檔的磁碟區至少要有 22 GB 的可用空間。
  • GPU:視訊記憶體必須超過 4 GB。
  • 網路:無限量數據或不計量的連線。

瀏覽器更新模型時,Gemini Nano 的確切大小可能會有所不同。如要判斷目前大小,請前往 chrome://on-device-internals 並前往「模型狀態」。開啟列出的「檔案路徑」,判斷模型大小。

下載模型

摘要產生器 API 使用的模型經過訓練,可生成高品質摘要。這項 API 已內建於 Chrome 中,網站首次使用這項 API 時,系統會下載 Gemini Nano 模型。

如要判斷模型是否已可使用,請呼叫非同步 Summarizer.availability() 函式。如果 availability() 的回應為 downloadable,請監聽下載進度,並告知使用者進度,因為這可能需要一段時間。

const availability = await Summarizer.availability();

如要觸發模型下載作業並建立摘要產生器,請檢查使用者啟用狀態,然後呼叫非同步 Summarizer.create() 函式。

// Proceed to request batch or streaming summarization
const summarizer = await Summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API 函式

您可以利用 create() 函式,根據需求設定新的摘要工具物件。這個函式會採用選用的 options 物件,並包含下列參數:

  • sharedContext:可協助摘要工具的其他共用背景資訊。
  • type:摘要類型,允許的值為 key-points (預設)、tldrteaserheadline。詳情請參閱下表。
  • format:摘要格式,允許的值為 markdown (預設) 和 plain-text
  • length:摘要長度,允許的值為 shortmedium (預設) 和 long。這些長度的意義會因type要求而異。舉例來說,在 Chrome 的實作中,簡短重點摘要包含三個項目符號,簡短摘要則是一句話。

設定後即無法變更參數。如要修改參數,請建立新的摘要工具物件。

下表列出不同類型的摘要及其對應長度。這些長度代表可能的最大值,因為有時結果可能會較短。

類型 意義 長度
"tldr" 摘要應簡短扼要,讓忙碌的讀者快速瞭解輸入內容。
short 1 句話
3 句話
long 5 句話
"teaser" 摘要應著重於輸入內容最有趣或最引人入勝的部分,吸引讀者繼續閱讀。
short 1 句話
3 句話
long 5 句話
"key-points" 摘要應從輸入內容中擷取最重要的重點,並以項目符號清單的形式呈現。
short 3 個項目符號
5 個項目符號
long 7 個項目符號
"headline" 摘要應以單一句話有效歸納輸入內容的重點,格式為文章標題。
short 12 個字
17 字
long 22 字

舉例來說,您可以初始化摘要工具,以 Markdown 格式輸出中等長度的重點。

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
};

const availability = await Summarizer.availability();
if (availability === 'unavailable') {
  // The Summarizer API isn't usable.
  return;
}

// Check for user activation before creating the summarizer
if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

執行摘要工具

摘要工具的執行方式有兩種:串流和批次 (非串流)。

批次摘要

模型會將輸入內容視為一個整體進行處理,然後產生輸出內容。

如要取得批次摘要,請呼叫 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 stream = summarizer.summarizeStreaming(longText, {
  context: 'This article is intended for junior developers.',
});
for await (const chunk of stream) {
  console.log(chunk);
}

示範

您可以在 Summarizer API Playground 中試用 Summarizer API。

權限政策、iframe 和 Web Worker

根據預設,Summarizer API 僅適用於頂層視窗和同源 iframe。您可以使用 Permission Policy 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 Summarizer API by
  setting the `allow="summarizer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="summarizer"></iframe>

由於建立每個 Worker 的負責文件以檢查權限政策狀態相當複雜,目前 Web Worker 無法使用 Summarizer API。

標準化作業

我們正在努力讓 Summarizer API 標準化,以支援跨瀏覽器。

W3C WebML 工作組已採用 Summarizer API 和其他寫作輔助 API。我們已請 MozillaWebKit 提供標準立場。

提供意見

我們很想瞭解您使用 Summarizer API 打造的內容。歡迎在 XYouTubeLinkedIn 上分享您的網站和網路應用程式。

如要提供 Chrome 實作方面的意見,請提交錯誤報告功能要求