Dipublikasikan: 12 Maret 2025
Penjelasan | Web | Ekstensi | Status Chrome | Intent |
---|---|---|---|---|
GitHub | View | Intent to Experiment |
Summarizer API membantu Anda membuat ringkasan informasi dalam berbagai durasi dan format. Gunakan dengan Gemini Nano di Chrome untuk melakukan inferensi sisi klien, dan menjelaskan teks yang rumit atau panjang secara ringkas.
Jika dilakukan di sisi klien, Anda dapat menggunakan data secara lokal, sehingga Anda dapat menjaga keamanan data sensitif dan dapat menawarkan ketersediaan dalam skala besar. Namun, periode konteks jauh lebih kecil daripada model sisi server, yang berarti dokumen yang sangat besar mungkin sulit untuk diringkas. Untuk mengatasi masalah ini, Anda dapat menggunakan teknik ringkasan ringkasan.
Apa yang dimaksud dengan ringkasan ringkasan?
Untuk menggunakan teknik ringkasan ringkasan, bagi konten input pada poin utama, lalu ringkas setiap bagian secara terpisah. Anda dapat menyambungkan output dari setiap bagian, lalu meringkas teks yang digabungkan ini menjadi satu ringkasan akhir.

Membagi konten dengan cermat
Anda harus mempertimbangkan cara membagi bagian teks yang besar, karena pembagian di lokasi yang berbeda dapat menghasilkan output yang sangat berbeda oleh Gemini Nano atau LLM lainnya. Idealnya, teks harus dibagi saat ada perubahan topik, seperti bagian baru dari artikel, atau di paragraf. Sebaiknya hindari pemisahan teks di tengah kata atau kalimat, yang berarti Anda tidak dapat menetapkan jumlah karakter sebagai satu-satunya panduan pemisahan.
Ada banyak cara untuk melakukannya, tanpa upaya manual. Pada contoh berikut, kami menggunakan Pemisah Teks Rekursif dari LangChain.js, yang menyeimbangkan performa dan kualitas output. Hal ini akan berfungsi untuk sebagian besar beban kerja.
Saat membuat instance baru, ada dua parameter utama:
chunkSize
adalah jumlah karakter maksimum yang diizinkan dalam setiap pemisahan.chunkOverlap
adalah jumlah karakter yang akan tumpang-tindih antara dua pemisahan berturut-turut. Hal ini memastikan bahwa setiap bagian memiliki beberapa konteks dari bagian sebelumnya.
Pisahkan teks dengan splitText()
untuk menampilkan array string dengan setiap bagian.
Sebagian besar LLM memiliki jendela konteks yang dinyatakan sebagai sejumlah token, bukan jumlah karakter. Rata-rata, token berisi 4 karakter, sehingga Anda dapat memperkirakan jumlah token yang digunakan oleh input dengan membagi jumlah karakter dengan 4.
Dalam contoh ini, chunkSize
adalah 3.000 karakter dan itu adalah sekitar
750 token.
Membuat ringkasan untuk setiap bagian
Setelah menyiapkan cara pemisahan konten, Anda dapat membuat ringkasan untuk setiap bagian dengan Summarizer API.
Buat instance peringkas dengan fungsi create()
. Untuk mempertahankan sebanyak mungkin konteks, kita telah menetapkan
parameter format
ke plain-text
, type
ke
tl;dr
,
dan length
ke long
.
Kemudian, buat ringkasan untuk setiap pemisahan yang dibuat oleh
RecursiveCharacterTextSplitter
dan gabungkan hasilnya menjadi string baru.
Kami memisahkan setiap ringkasan dengan baris baru untuk mengidentifikasi ringkasan dengan jelas untuk
setiap bagian.
Meskipun baris baru ini tidak penting saat menjalankan loop ini hanya sekali, baris ini berguna untuk menentukan bagaimana setiap ringkasan menambahkan nilai token untuk ringkasan akhir. Pada umumnya, solusi ini akan berfungsi untuk konten berdurasi sedang dan panjang.
Ringkasan rekursif ringkasan
Jika Anda memiliki jumlah teks yang sangat panjang, panjang ringkasan yang digabungkan mungkin lebih besar dari jendela konteks yang tersedia, sehingga menyebabkan ringkasan gagal. Untuk mengatasi hal ini, Anda dapat meringkas ringkasan secara rekursif.

Kami masih mengumpulkan bagian awal yang dihasilkan oleh
RecursiveCharacterTextSplitter
. Kemudian, dalam fungsi recursiveSummarizer()
,
kita melakukan loop pada proses ringkasan berdasarkan panjang karakter
pemisahan yang digabungkan. Jika panjang karakter ringkasan melebihi 3000
,
maka kita akan menggabungkannya menjadi fullSummaries
. Jika batas tidak tercapai, ringkasan akan disimpan sebagai partialSummaries
.
Setelah semua ringkasan dibuat, ringkasan parsial akhir akan ditambahkan
ke ringkasan lengkap. Jika hanya ada 1 ringkasan di fullSummaries
, tidak diperlukan rekursi tambahan. Fungsi ini menampilkan ringkasan akhir. Jika ada lebih dari
satu ringkasan, fungsi akan mengulangi dan terus meringkas ringkasan
sebagian.
Kami menguji solusi ini dengan Internet Relay Chat (IRC) RFC, yang memiliki 110.030 karakter yang mencakup 17.560 kata. Summarizer API menyediakan ringkasan berikut:
Internet Relay Chat (IRC) adalah cara untuk berkomunikasi secara online secara real time menggunakan pesan teks. Anda dapat melakukan chat di channel atau mengirim pesan pribadi, dan Anda dapat menggunakan perintah untuk mengontrol chat dan berinteraksi dengan server. Ruang ini seperti ruang chat di internet tempat Anda dapat mengetik dan melihat pesan orang lain secara langsung.
Cara ini cukup efektif. Selain itu, hanya boleh berisi 309 karakter.
Batasan
Teknik ringkasan ringkasan membantu Anda beroperasi dalam jendela konteks model ukuran klien. Meskipun ada banyak manfaat untuk AI sisi klien, Anda mungkin mengalami hal berikut:
- Ringkasan yang kurang akurat: Dengan rekursi, pengulangan proses ringkasan mungkin tidak terbatas, dan setiap ringkasan lebih jauh dari teks asli. Artinya, model dapat menghasilkan ringkasan akhir yang terlalu dangkal sehingga tidak berguna.
- Performa yang lebih lambat: Setiap ringkasan memerlukan waktu untuk dibuat. Sekali lagi, dengan jumlah ringkasan yang mungkin tidak terbatas dalam teks yang lebih besar, pendekatan ini mungkin memerlukan waktu beberapa menit untuk selesai.
Kami memiliki demo peringkas yang tersedia, dan Anda dapat melihat kode sumber lengkap.
Beri masukan
Coba gunakan teknik ringkasan ringkasan dengan panjang teks input yang berbeda, ukuran pemisahan yang berbeda, dan panjang tumpang-tindih yang berbeda, untuk menentukan mana yang paling sesuai untuk kasus penggunaan Anda.
Mulai uji Summarizer API sekarang dengan bergabung ke uji coba origin dan berikan masukan Anda. Masukan Anda dapat secara langsung memengaruhi cara kami mem-build dan menerapkan versi API ini di masa mendatang, dan semua API AI bawaan.
- Untuk memberikan masukan tentang penerapan Chrome, ajukan laporan bug atau permintaan fitur.
- Diskusikan desain Summarizer API di GitHub dengan memberikan komentar pada Masalah yang ada atau membuka masalah baru.
- Berpartisipasilah dalam upaya standar dengan bergabung ke Grup Komunitas Inkubator Web.
- Chat dengan tim AI Chrome tentang proses pembuatan ringkasan Anda atau pertanyaan AI bawaan lainnya.