Membuat ringkasan dengan AI bawaan

Dipublikasikan: 11 November 2024, Terakhir diperbarui: 1 Mei 2025

Penjelasan Web Ekstensi Status Chrome Intent
GitHub Di balik tanda Uji coba Origin Di balik bendera Uji coba Origin View Intent to Experiment

Bayangkan Anda dapat menawarkan kemampuan kepada pengguna untuk menyaring artikel panjang, dokumen kompleks, atau bahkan percakapan chat yang aktif menjadi ringkasan yang ringkas dan mendalam.

Summarizer API dapat digunakan untuk membuat berbagai jenis ringkasan dalam berbagai panjang dan format, seperti kalimat, paragraf, daftar poin, dan lainnya. Kami yakin API ini berguna dalam skenario berikut:

  • Meringkas poin-poin penting dari artikel atau percakapan chat.
  • Menyarankan judul dan heading untuk artikel.
  • Membuat ringkasan singkat dan informatif dari teks yang panjang.
  • Membuat teaser untuk buku berdasarkan ulasan buku.

Mulai

Bergabunglah dengan uji coba origin Summarizer API, yang berjalan dari Chrome 131 hingga Chrome 139. Uji coba origin memungkinkan Anda menawarkan fitur kepada pengguna sebenarnya di origin, di Chrome.

Mendaftar untuk uji coba origin

Untuk mulai menggunakan Summarizer API, ikuti langkah-langkah berikut:

  1. Konfirmasi Kebijakan Penggunaan Terlarang untuk AI Generatif Google.
  2. Buka Uji coba origin Summarizer API.
  3. Klik Daftar dan isi formulir.
    • Di kolom Asal web, berikan asal atau ID ekstensi Anda, chrome-extension://YOUR_EXTENSION_ID.
  4. Untuk mengirim, klik Daftar.
  5. Salin token yang diberikan, lalu tambahkan ke setiap halaman web di origin atau file untuk Ekstensi Anda, tempat Anda ingin mengaktifkan uji coba.
  6. Mulai menggunakan Summarizer API.

Pelajari lebih lanjut cara memulai uji coba origin.

Batasan selama uji coba origin

Selama uji coba origin, Summarizer API hanya mendukung ringkasan teks bahasa Inggris, karena kualitas model hanya diuji secara menyeluruh pada konten bahasa Inggris. Kami bermaksud mencabut batasan ini setelah menguji bahasa tambahan untuk kualitas dan keamanan, serta API tersedia secara luas.

Menambahkan dukungan ke localhost

Untuk mengakses Summarizer API di localhost selama uji coba origin, Anda harus memiliki Chrome Canary. Kemudian, ikuti langkah-langkah berikut:

  1. Buka chrome://flags/#summarization-api-for-gemini-nano.
  2. Pilih Enabled.
  3. Klik Luncurkan kembali atau mulai ulang Chrome.

Menggunakan Summarizer API

Pertama, jalankan deteksi fitur untuk melihat apakah browser mendukung Summarizer API.

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

Download model

Summarizer API menggunakan model yang dilatih untuk menghasilkan ringkasan berkualitas tinggi. Meskipun API di-build ke dalam Chrome, model didownload secara terpisah saat pertama kali situs menggunakan API.

Untuk menentukan apakah model siap digunakan, panggil fungsi Summarizer.availability() asinkron. Fungsi ini menampilkan promise dengan nilai berikut.

  • "unavailable" berarti penerapan tidak mendukung opsi yang diminta.
  • "downloadable" berarti implementasi mendukung opsi yang diminta, tetapi pertama-tama, browser harus mendownload sesuatu, seperti model (dalam kasus Chrome, Gemini Nano) atau melakukan penyesuaian untuk model.
  • "downloading" berarti implementasi mendukung opsi yang diminta, tetapi harus menyelesaikan download yang sedang berlangsung sebelum dapat dilanjutkan.
  • "available" berarti implementasi mendukung opsi yang diminta dan penyingkat dapat dilanjutkan.

Untuk memicu download model dan membuat peringkas, panggil fungsi Summarizer.create() asinkron. Jika respons untuk availability() adalah downloadable atau downloading, praktik terbaiknya adalah memproses progres download. Dengan cara ini, Anda dapat memberi tahu pengguna dan menunjukkan bahwa download mungkin memerlukan waktu untuk diselesaikan sebelum ringkasan dapat dilakukan.

const summarizer = await Summarizer.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

Fungsi API

Fungsi create() memungkinkan Anda mengonfigurasi objek peringkas baru sesuai kebutuhan Anda. Fungsi ini memerlukan objek options opsional dengan parameter berikut:

  • sharedContext: Konteks bersama tambahan yang dapat membantu pembuat ringkasan.
  • type: Jenis ringkasan, dengan nilai yang diizinkan key-points (default), tl;dr, teaser, dan headline. Lihat tabel berikut untuk mengetahui detailnya.
  • format: Format ringkasan, dengan nilai yang diizinkan markdown (default) dan plain-text.
  • length: Panjang ringkasan, dengan nilai yang diizinkan short, medium (default), dan long. Makna panjang ini bervariasi, bergantung pada type yang diminta. Misalnya, dalam penerapan Chrome, ringkasan poin penting singkat terdiri dari tiga poin, dan ringkasan singkat adalah satu kalimat.

Tabel berikut menunjukkan berbagai jenis ringkasan dan panjangnya yang sesuai. Panjangnya mewakili nilai maksimum yang mungkin, karena terkadang, hasilnya bisa lebih pendek.

Jenis Arti Panjang
"tl;dr" Ringkasan harus singkat dan padat, memberikan ringkasan singkat tentang input, yang cocok untuk pembaca yang sibuk.
short 1 kalimat
sedang 3 kalimat
long 5 kalimat
"teaser" Ringkasan harus berfokus pada bagian input yang paling menarik atau membingungkan, yang dirancang untuk menarik pembaca agar membaca lebih lanjut.
short 1 kalimat
sedang 3 kalimat
long 5 kalimat
"key-points" Ringkasan harus mengekstrak poin-poin terpenting dari input, yang disajikan sebagai daftar berbutir.
short 3 poin butir
sedang 5 poin butir
long 7 poin butir
"headline" Ringkasan harus secara efektif berisi poin utama input dalam satu kalimat, dalam format judul artikel.
short 12 kata
sedang 17 kata
long 22 kata

Contoh berikut menunjukkan cara melakukan inisialisasi peringkas.

const options = {
  sharedContext: 'This is a scientific article',
  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;
}

Menjalankan peringkas

Ada dua cara untuk menjalankan peringkas: streaming dan batch (non-streaming).

Ringkasan batch

Dengan ringkasan batch, model memproses input secara keseluruhan, lalu menghasilkan output.

Untuk mendapatkan ringkasan batch, panggil fungsi summarize(). Argumen pertama adalah teks yang ingin Anda rangkum. Argumen kedua yang bersifat opsional adalah objek dengan kolom context. Kolom ini memungkinkan Anda menambahkan detail latar belakang yang dapat meningkatkan ringkasan.

const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});

Ringkasan streaming

Ringkasan streaming menawarkan hasil secara real time. Output diperbarui secara terus-menerus saat input ditambahkan dan disesuaikan.

Untuk mendapatkan ringkasan streaming, panggil fungsi summarizeStreaming() ringkasan. Kemudian, ulangi segmen teks yang tersedia di aliran data.

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() menampilkan ReadableStream, dengan segmen respons yang dibuat secara berurutan satu sama lain. Artinya, setiap respons berisi seluruh ringkasan yang dihasilkan hingga titik tersebut, bukan hanya segmen berikutnya, yang bukan perilaku yang diinginkan.

Kami ingin menyesuaikan dengan API streaming lainnya di platform, dengan segmen adalah bagian berturut-turut dari satu streaming panjang. Untuk saat ini, untuk mencapai perilaku yang diinginkan, Anda dapat menerapkan hal berikut:

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);

Demo

Anda dapat mencoba Summarizer API di Summarizer API Playground.

Upaya standardisasi

Kami sedang berupaya menstandarkan Summarizer API, untuk memastikan kompatibilitas lintas browser.

Proposal API kami menerima dukungan komunitas dan telah dipindahkan ke W3C Web Incubator Community Group untuk didiskusikan lebih lanjut. Tim Chrome meminta masukan dari W3C Technical Architecture Group, dan meminta Mozilla dan WebKit untuk mengetahui posisi standar mereka.

Berpartisipasi dan memberikan masukan

Mulai uji Summarizer API sekarang dengan bergabung ke uji coba origin dan berikan masukan Anda. Input Anda dapat langsung memengaruhi cara kami mem-build dan menerapkan versi mendatang API ini, dan semua API AI bawaan.