Summarizer API memungkinkan developer web menawarkan penyaringan teks lokal yang didukung AI langsung di browser menggunakan Gemini Nano di Chrome atau Phi di Edge. API ini mendukung berbagai format, termasuk poin-poin penting, judul, dan TL;DR, sekaligus beroperasi sepenuhnya di perangkat untuk memastikan privasi pengguna.
Memulai
Summarizer API tersedia mulai Chrome dan Edge 138. Fitur ini memerlukan download model satu kali untuk Gemini Nano atau Phi (masing-masing).
Persyaratan Hardware & Software
- OS: Windows 10/11, macOS 13+, Linux, atau ChromeOS (Chromebook Plus).
- Penyimpanan: Ruang kosong sebesar 22 GB untuk volume profil.
- RAM/CPU: RAM 16 GB+ dan 4+ core CPU.
- VRAM: 4 GB+ (jika menggunakan GPU).
Download dan Ketersediaan Model
Periksa apakah model sudah siap, perlu didownload, atau tidak tersedia.
Penerusan Opsi Wajib: Anda harus meneruskan objek opsi konfigurasi yang sama ke Summarizer.availability(options) dan Summarizer.create(options). JANGAN gunakan platform API window.ai.summarizer yang tidak digunakan lagi.
Pemantauan Progres Wajib: Anda HARUS menerapkan pemantauan untuk progres download model dengan memberikan callback monitor(m) ke Summarizer.create() dan menambahkan pemroses untuk peristiwa downloadprogress.
Persyaratan Gestur Pengguna: Jika availability adalah 'downloadable' atau 'downloading', pemicuan download sebenarnya melalui Summarizer.create() memerlukan gestur pengguna (seperti klik pengguna). Anda harus menempatkan panggilan pembuatan di dalam pemroses peristiwa, bukan memanggilnya tanpa syarat saat pemuatan halaman untuk mencegah NotAllowedError.
const options = {
type: 'key-points',
format: 'plain-text',
length: 'medium'
};
const availability = await Summarizer.availability(options);
if (availability === 'available') {
const summarizer = await Summarizer.create(options);
// Ready to use immediately
} else if (availability === 'downloadable') {
// A user gesture is strictly required to start the download
document.getElementById('start-download-btn').addEventListener('click', async () => {
const summarizer = await Summarizer.create({
...options,
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${Math.round((e.loaded / e.total) * 100)}%`);
});
},
});
});
}
Fungsi & Konfigurasi API
Saat membuat summarizer melalui Summarizer.create(options), Anda dapat menyesuaikan
output:
| Parameter | Opsi | Deskripsi |
|---|---|---|
type |
key-points, tldr, teaser, headline |
Menentukan strategi ringkasan. |
format |
markdown, plain-text |
Gaya sintaksis output. |
length |
short, medium, long |
Target panjang (misalnya, 1 vs. 5 kalimat). |
preference |
auto, speed, capability |
Menyeimbangkan latensi vs. kualitas. |
Konfigurasi Contoh
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
if (navigator.userActivation.isActive) {
const summarizer = await Summarizer.create(options);
}
Dukungan Bahasa
Anda dapat menentukan bahasa yang diharapkan untuk memastikan browser dapat menangani permintaan ringkasan tertentu.
const summarizer = await Summarizer.create({
type: 'key-points',
expectedInputLanguages: ['en', 'ja'],
outputLanguage: 'es',
});
Metode Ringkasan
1. Ringkasan Batch
Memproses seluruh teks sekaligus dan menampilkan hasilnya.
const longText = document.querySelector('article').innerText;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
console.log(summary);
2. Peringkasan Streaming
Menampilkan hasil secara real-time saat model membuatnya, sehingga memberikan UI yang lebih responsif.
const stream = summarizer.summarizeStreaming(longText);
for await (const chunk of stream) {
console.log(chunk);
}
Keamanan dan Izin
- Privasi Data: Tidak ada data yang dikirim ke Google; pemrosesan terjadi di perangkat lokal.
Lintas Origin: Akses dapat diberikan ke iframe menggunakan Kebijakan Izin.
<iframe src="https://example.com/" allow="summarizer"></iframe>Web Worker: Saat ini tidak didukung.
Strategi Penggantian
Sebelum melakukan inisialisasi atau mengkueri ketersediaan, periksa apakah browser mendukung Summarizer API:
if ('Summarizer' in self) {
// The Summarizer API is supported.
} else {
// Execute fallback strategy
}
Jika Summarizer API tidak didukung atau pemeriksaan ketersediaan menampilkan 'unavailable', Anda harus melakukan penggantian dengan baik.
Opsi yang direkomendasikan:
- Penggantian API Jarak Jauh: Mengarahkan permintaan distilasi ke endpoint server atau API jarak jauh (seperti Vertex AI Gemini API) agar pengguna tetap mendapatkan ringkasan.
- Degradasi Halus: Nonaktifkan kontrol ringkasan secara visual di UI, atau sembunyikan tombol sambil menampilkan pesan yang mudah dipahami (misalnya,
"Local summarization is currently unsupported in this browser"). Jangan izinkan interaksi memicu pengecualian runtime umum yang tidak tertangani. - Penggantian Polyfill: Anda dapat menggunakan polyfill yang dikelola komunitas seperti
built-in-ai-task-apis-polyfillsatauprompt-api-polyfilluntuk mengemulasi platform API menggunakan layanan jarak jauh dengan model di cloud atau inferensi di perangkat dengan model lokal.
Implikasi Privasi dan Biaya: Polyfill ini mungkin mem-proxy permintaan ke server jarak jauh (seperti Gemini API melalui cloud). Hal ini sepenuhnya meniadakan jaminan privasi di perangkat dari API AI Bawaan native dan akan menimbulkan biaya penggunaan API sisi server.