使用內建 AI 技術製作摘要

發布日期:2024 年 11 月 11 日,上次更新日期:2025 年 5 月 20 日

說明 網頁 額外資訊 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() 函式。這個函式會傳回包含下列值的 Promise。

  • "unavailable" 表示實作方式不支援所要求的選項。
  • "downloadable" 表示實作項目支援所要求的選項,但瀏覽器必須先下載某些內容,例如模型 (以 Chrome 來說,就是 Gemini Nano) 或模型的微調。
  • "downloading" 表示實作項目支援所要求的選項,但必須先完成進行中的下載作業,才能繼續。
  • "available" 表示實作項目支援所要求選項,摘要工具可以繼續作業。

如要觸發模型下載作業並建立摘要產生器,請呼叫非同步 Summarizer.create() 函式。如果對 availability() 的回應是 downloadabledownloading,建議監聽下載進度。這樣一來,您就能通知使用者,並指出下載作業可能需要一段時間才能完成,之後才能進行摘要。

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 字

以下範例說明如何初始化摘要工具。

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;
}
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。

標準化作業

我們正在努力讓 Summarizer API 標準化,確保跨瀏覽器的相容性。

我們的 API 提案獲得社群支持,並已移至 W3C Web Incubator Community Group 進行進一步討論。Chrome 團隊向 W3C 技術架構小組徵求意見,並詢問 MozillaWebKit 的標準立場。

加入 Web Incubator Community Group,參與標準制定工作。

提供意見

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

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