簡單幾行JS就能搞AI:Summarizer API(Gemini Nano)
在Chromium的環境中,可以直接寫JavaScript導入生成摘要的AI(Gemini Nano):Summarizer API。
這個 API 可以幫助生成文章或對話的重點或摘要、前導訊息、生成標題……等用途。
官方明確提出會在 Chrome 138 的版本導入此 API,但其實在很早之前就鼓勵開發者試著用Gemini Nano開發擴充功能。
在開始使用之前,可以順便閱讀 The People + AI Guidebook 與 Ameba 平台實際運用的情境。
開始使用
查看是否支援 Summarizer API:
if ('Summarizer' in self) {
// The Summarizer API is supported.
}
Summarizer.availability() 可以判斷模型是否已準備好:它會回傳 "unavailable"(不支援)、"downloadable"(尚未下載)、"downloading"(下載中)、"available"(支援且可執行)。
而如果是 downloadable 或 downloading,可以在 Summarizer.create() 中使用 downloadprogress 查看下載進度:
const summarizer = await Summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
呼叫 function
一般摘要:
const theArticle = document.querySelector('#article').innerHTML;
const summary = await summarizer.summarize(theArticle, {
context: 'This article is about vtuber of hololive.',
});
context 是給 AI 對於這篇文章的背景提示。另外,摘要時務必移除所有不必要的資料,包括 HTML 標記。
另外在說明文件中也看到不同類型的摘要,它是這樣使用的:
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
let summarizer;
summarizer = await Summarizer.create(options);
- sharedContext:可協助摘要工具的其他共用背景資訊。
- type:摘要類型,key-points(預設)、tldr、teaser 和 headline。
- format:摘要格式,可使用 markdown(預設) 和 plain-text。
- length:摘要長度,short、medium(預設) 和 long。這些長度的含義會因 type 而異。
type: key-points
摘要會從輸入內容中擷取最重要的重點,並以 list 的形式呈現。(short: 3 項、medium: 5 項、long: 7 項)
type: tldr
摘要簡短扼要,讓使用者能快速瀏覽。(short: 1 句話、medium: 3 句話、long: 5 句話)
type: teaser
摘要著重於最有趣或最吸引人的部分,吸引讀者繼續閱讀。(short: 1 句話、medium: 3 句話、long: 5 句話)
type: headline
摘要以標題的型式呈現,在單一句子中呈現要點。(short: 12 字、medium: 17 字、long: 22 字)
整理之後可寫成一段初始化摘要的程式碼:
const options = {
sharedContext: 'This is a Summarizer API example',
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;
}
而根據官方的實驗與眾多開發者的回報,Summarizer API 再搭配 LoRA 的校正,成效優化了 10%~40% 不等,差別還蠻大的。
簡單體驗一下Summarizer API
摘要結果:
若點擊後卡在「🔍 檢查 Summarizer API 可用狀態」的話,很可能是無法判別語言,在 console 會跳出以下訊息:
No output language was specified in a Summarizer API request. An output language should be specified to ensure optimal output quality and properly attest to output safety. Please specify a supported output language code: [en, es, ja]
你可以在 Shared Context 寫上語言的提示解決這個問題。
Gemini Nano 也用於防詐騙
Chrome 已導入 Gemini Nano 提供額外的網路詐騙防護。這種設備內建方法可以即時洞察高風險網站,讓 chrome 提供保護,即使是針對前所未有的詐騙。
例如,使用者啟用了網站通知功能,惡意網站可能會試圖運用大量通知來詐騙。當 Chrome 裝置上的機器學習模型標記通知時,使用者將會收到警告,其中包含取消訂閱或查看被封鎖內容的選項。使用者覺得誤判,也可以主動選擇允許接收來自該網站的未來通知。


留言
張貼留言