Yayınlanma tarihi: 12 Mart 2025, Son güncelleme: 28 Mayıs 2025
Açıklayıcı | Web | Uzantılar | Chrome Durumu | Amaç |
---|---|---|---|---|
MDN | Görünüm | Gönderim Amacı |
Summarizer API, çeşitli uzunluk ve biçimlerde bilgi özetleri oluşturmanıza yardımcı olur. Uzun veya karmaşık metinleri kısaca açıklamak için Chrome'daki Gemini Nano ile veya tarayıcılara yerleştirilmiş diğer dil modelleriyle kullanın.
İşlem istemci tarafında yapıldığında verilerle yerel olarak çalışabilirsiniz. Bu sayede hassas verileri güvende tutabilir ve geniş ölçekte kullanılabilirlik sunabilirsiniz. Ancak bağlam penceresi, sunucu tarafı modellere kıyasla çok daha küçüktür. Bu nedenle, çok büyük belgeleri özetlemek zor olabilir. Bu sorunu çözmek için özetlerin özeti tekniğini kullanabilirsiniz.
Özetlerin özeti nedir?
Özetlerin özeti tekniğini kullanmak için giriş içeriğini önemli noktalarda bölün ve ardından her bölümü bağımsız olarak özetleyin. Her bir bölümden gelen çıkışları birleştirebilir ve ardından bu birleştirilmiş metni tek bir nihai özet halinde toplayabilirsiniz.

İçeriğinizi dikkatli bir şekilde bölme
Farklı stratejiler LLM'lerde farklı sonuçlara yol açabileceğinden, büyük bir metni nasıl böleceğinizi düşünmeniz önemlidir. İdeal olarak, metin bir makalenin yeni bir bölümü veya paragrafı gibi konu değişikliği olduğunda bölünmelidir. Metni bir kelimenin veya cümlenin ortasında bölmekten kaçınmanız önemlidir. Yani, tek bölme kuralınız olarak karakter sayısını kullanamazsınız.
Bunu yapmanın birçok yolu vardır. Aşağıdaki örnekte, performans ile çıkış kalitesini dengeleyen LangChain.js'den Yinelenen Metin Bölme işlevini kullandık. Bu, çoğu iş yükü için işe yarayacaktır.
Yeni bir örnek oluştururken iki önemli parametre vardır:
chunkSize
, her bölme için izin verilen maksimum karakter sayısıdır.chunkOverlap
, art arda iki bölme arasında çakışma yapacak karakter miktarıdır. Bu sayede her bir parçada önceki parçanın bağlamının bir kısmı bulunur.
Her bir parçayı içeren bir dize dizisi döndürmek için metni splitText()
ile bölün.
Çoğu büyük dil modelinin bağlam penceresi, karakter sayısı yerine jeton sayısı olarak ifade edilir. Bir jeton ortalama 4 karakter içerir. Örneğimizde chunkSize
3.000 karakter uzunluğundadır ve yaklaşık 750 jetondan oluşur.
Jeton kullanılabilirliğini belirleme
Bir giriş için kaç jeton kullanılabileceğini belirlemek üzere measureInputUsage()
yöntemini ve inputQuota
özelliğini kullanın. Bu durumda, özetleyicinin tüm metni işlemek için kaç kez çalışacağını bilemeyeceğiniz için uygulama sınırsızdır.
Her bölme için özet oluşturma
İçeriğin nasıl bölüneceğini ayarladıktan sonra Summarizer API ile her bölümün özetini oluşturabilirsiniz.
create()
işlevini kullanarak özetleyici örneği oluşturun. Mümkün olduğunca fazla bağlam bilgisini korumak için format
parametresini plain-text
, type
parametresini tldr
ve length
parametresini long
olarak ayarladık.
Ardından, RecursiveCharacterTextSplitter
tarafından oluşturulan her bölme için özeti oluşturun ve sonuçları yeni bir dize halinde birleştirin.
Her bölümün özetini net bir şekilde tanımlamak için her özeti yeni bir satırla ayırdık.
Bu yeni satır, bu döngüyü yalnızca bir kez çalıştırırken önemli olmasa da her özetin nihai özet için jeton değerine nasıl katkıda bulunduğunu belirlemek için yararlıdır. Bu çözüm, çoğu durumda orta ve uzun içerikler için işe yarayacaktır.
Özetlerin yinelenen özeti
Çok uzun bir metniniz varsa birleştirilmiş özetin uzunluğu, mevcut bağlam penceresinden daha büyük olabilir. Bu da özetleme işleminin başarısız olmasına neden olur. Bu sorunu gidermek için özetlerin özetini yinelemeli olarak alabilirsiniz.

RecursiveCharacterTextSplitter
tarafından oluşturulan ilk bölmelerin toplanması devam eder. Ardından, recursiveSummarizer()
işlevinde, birleştirilmiş bölmelerin karakter uzunluğuna göre özetleme işlemini döngüye alırız. Özetlerin karakter uzunluğu 3000
'ü aşarsa fullSummaries
olarak birleştirilir. Sınıra ulaşılmazsa özet partialSummaries
olarak kaydedilir.
Tüm özetler oluşturulduktan sonra nihai kısmi özetler tam özete eklenir. fullSummaries
içinde yalnızca 1 özet varsa ek yineleme gerekmez. İşlev, nihai bir özet döndürür. Birden fazla özet varsa işlev, kısmi özetlerin özetlenmesi işlemini tekrarlayarak devam eder.
Bu çözümü, 17.560 kelime içeren 110.030 karakterden oluşan Internet Relay Chat (IRC) RFC ile test ettik. Summarizer API aşağıdaki özeti sağladı:
Internet Relay Chat (IRC), kısa mesajları kullanarak internette gerçek zamanlı olarak iletişim kurmanın bir yoludur. Kanallarda sohbet edebilir veya özel mesaj gönderebilir, sohbeti kontrol etmek ve sunucuyla etkileşimde bulunmak için komutları kullanabilirsiniz. İnternetteki bir sohbet odası gibidir. Yazdığınız mesajlar ve diğer kullanıcıların mesajları anında gösterilir.
Bu oldukça etkili. Ayrıca, yalnızca 309 karakterden oluşuyor.
Sınırlamalar
Özetlerin özeti tekniği, müşteri boyutunda bir modelin bağlam penceresinde çalışmanıza yardımcı olur. İstemci tarafı yapay zekanın birçok avantajı olsa da aşağıdakilerle karşılaşabilirsiniz:
- Daha az doğru özetler: Yinelemeli özetleme işleminde özetleme işleminin tekrarı sonsuz olabilir ve her özet, orijinal metinden daha uzak olur. Bu, modelin yararlı olamayacak kadar yüzeysel bir son özet oluşturabileceği anlamına gelir.
- Daha yavaş performans: Her özetin oluşturulması zaman alır. Yine de, daha uzun metinlerde sonsuz sayıda özet oluşturma olasılığı olduğundan bu yaklaşımın tamamlanması birkaç dakika sürebilir.
Özetleyici demomuz mevcuttur ve tam kaynak kodunu görüntüleyebilirsiniz.
Görüşlerinizi paylaşın
Summarizer API ile farklı giriş metni uzunlukları, farklı bölme boyutları ve farklı çakışma uzunlukları kullanarak özetlerin özetini kullanmayı deneyin.
- Chrome'un uygulanmasıyla ilgili geri bildirim için hata raporu veya özellik isteği gönderin.
- MDN'deki dokümanları okuyun.
- Özetleme süreciniz veya yerleşik yapay zeka ile ilgili diğer sorularınız hakkında Chrome Yapay Zeka Ekibi ile sohbet edin.