發布日期:2024 年 11 月 11 日
想像一下,如果您能讓使用者將冗長的文章、複雜的文件,甚至是熱絡的即時通訊對話,濃縮成精簡且有洞見的摘要,那該有多好!
您可以使用 Summarizer API 以各種長度和格式 (例如句子、段落、項目符號清單等) 產生不同類型的摘要。我們認為這個 API 適用於下列情況:
- 摘要文章或即時通訊對話的重點。
- 為文章建議標題和標題
- 針對冗長的文字建立簡潔且資訊豐富的摘要。
- 根據書籍評論產生書籍預告片。
可用性
- 加入 Summarizer API 來源試用,從 Chrome 131 到 Chrome 136 執行。您可以透過來源試用程序,在 Chrome 上為來源的實際使用者提供這項功能。
- 請參閱 Chrome 狀態中的實作說明。
- Summarizer API 提案是一系列寫入 API 的一部分,歡迎您前往討論。
- 加入搶先預覽計畫,搶先一睹全新內建 AI API,並參與我們的郵寄清單討論。
註冊 Origins 試用版
如要開始使用 Summarizer API,請按照下列步驟操作:
- 確認瞭解 Google 的生成式 AI 使用限制政策。
- 前往 Summarizer API 來源試用計畫。
- 按一下「註冊」並填寫表單。
- 在「Web origin」欄位中,提供來源或擴充功能 ID
chrome-extension://YOUR_EXTENSION_ID
。
- 在「Web origin」欄位中,提供來源或擴充功能 ID
- 按一下「註冊」即可提交。
- 複製提供的符記,並將其新增至您要啟用試用版的來源或擴充功能檔案中的每個網頁。
- 如果您要建構擴充功能,請按照擴充功能來源試用說明操作
- 開始使用 Summarizer API。
進一步瞭解如何開始使用來源試驗。
來源試用期間的限制
在來源試用期間,Summarizer API 僅支援英文文字摘要,因為模型品質僅經過英文內容的徹底測試。我們會在測試其他語言的品質和安全性,並廣泛提供 API 後,解除這項限制。
為 localhost 新增支援
如要在來源試用期間存取 localhost
上的 Summarizer API,您必須使用 Chrome Canary。然後按照下列步驟操作:
- 在 Windows、Mac 或 Linux 等平台上開啟 Chrome Canary。
- 前往
chrome://flags/#summarization-api-for-gemini-nano
。 - 選取「已啟用」。
- 按一下「重新啟動」或重新啟動 Chrome。
使用 Summarizer API
首先執行功能偵測,確認瀏覽器是否支援 Summarizer API。
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
模型下載
Summarizer API 會使用經過訓練的強大 AI 模型,產生高品質的摘要。雖然 API 已內建於 Chrome,但網站首次使用 API 時,系統會另外下載模型。
如要判斷模型是否已準備好供使用,請呼叫非同步 ai.summarizer.capabilities()
函式。這個方法會傳回 AISummarizerCapabilities
物件,其中包含 available
欄位,可接受三個可能的值:
no
:目前的瀏覽器支援 Summarizer API,但目前無法使用。這可能是因為磁碟空間不足,無法下載模型。readily
:目前的瀏覽器支援 Summarizer API,可立即使用。after-download
:目前的瀏覽器支援 Summarizer API,但必須先下載模型。
如要觸發模型下載作業並建立摘要器,請呼叫非同步 ai.summarizer.create()
函式。如果 capabilities()
的回應是 after-download
,建議您監聽下載進度。這樣一來,如果下載作業需要一段時間,您就能通知使用者。
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
API 函式
您可以利用 create()
函式,根據需求設定新的摘要器物件。此方法會使用選用的 options
物件,並採用下列參數:
sharedContext
:可協助摘要工具的其他共用背景資訊。type
:摘要類型,允許的值為key-points
(預設)、tl;dr
、teaser
和headline
。format
:摘要格式,可用的值為markdown
(預設值) 和plain-text
。length
:摘要長度,允許的值為short
、medium
(預設值) 和long
。這些長度的含義會因要求的type
而異。舉例來說,在 Chrome 的實作中,簡短的重點摘要由三個項目符號組成,而簡短摘要則為一句話;長的重點摘要由七個項目符號組成,而長摘要則為一段文字。
以下範例說明如何初始化摘要工具。
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
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()
函式。然後在資料流中重複執行可用的文字片段。
let result = '';
let previousChunk = '';
for await (const chunk of stream) {
const newChunk = chunk.startsWith(previousChunk)
? chunk.slice(previousChunk.length) : chunk;
console.log(newChunk);
result += newChunk;
previousChunk = chunk;
}
console.log(result);
summarizeStreaming()
會傳回 ReadableStream
,其中的回應區段會依序建立。這表示每個回應都包含到目前為止產生的完整摘要,而非僅包含下一個片段,這並非預期的行為。
我們打算與平台上的其他串流 API 保持一致,其中片段是單一長串流的連續片段。目前,如要達成預期的行為,您可以實作以下內容:
let result = '';
let previousLength = 0;
for await (const segment of stream) {
const newContent = segment.slice(previousLength);
console.log(newContent);
previousLength = segment.length;
result += newContent;
}
console.log(result);
示範
您可以在 Summarizer API Playground 中試用 Summarizer API。
標準化作業
我們正在努力將 Summarizer API 標準化,確保跨瀏覽器的相容性。
我們的 API 提案獲得社群支持,並已移至 W3C Web Incubator 社群群組進行進一步討論。Chrome 團隊向 W3C 技術架構小組索取意見回饋,並向 Mozilla 和 WebKit 詢問他們的標準立場。
參與並提供意見回饋
立即加入來源試用計畫,開始測試 Summarizer API,並提供寶貴意見。您的意見回饋會直接影響我們建構及實作此 API 未來版本,以及所有內建 AI API 的方式。
- 如要提供 Chrome 實作方式的意見回饋,請提交錯誤報告或功能要求。
- 在 GitHub 上討論 Summarizer API 設計,方法是針對現有問題發表意見或開啟新問題。
- 加入 Web Incubator 社群群組,參與標準制定工作。