Yayınlanma tarihi: 12 Mart 2025, Son güncelleme tarihi: 28 Mayıs 2025
Açıklayıcı | Web | Uzantılar | Chrome Durumu | Amaç |
---|---|---|---|---|
MDN | Görünüm | Kargoya verme amacı |
Özetleyici API, çeşitli uzunluk ve biçimlerdeki bilgilerin özetlerini oluşturmanıza yardımcı olur. Uzun veya karmaşık metinleri kısa ve öz bir şekilde açıklamak için Chrome'da Gemini Nano ile ya da tarayıcılara yerleştirilmiş diğer dil modelleriyle birlikte kullanın.
İstemci tarafında gerçekleştirildiğinde verilerle yerel olarak çalışabilirsiniz. Bu sayede hassas verileri güvende tutabilir ve geniş ölçekte kullanılabilirlik sağlayabilirsiniz. Ancak bağlam penceresi, sunucu tarafı modellerdekinden çok daha küçüktür. Bu nedenle, çok büyük belgelerin özetlenmesi 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 her bölümü ayrı ayrı özetleyin. Her bölümden gelen çıkışları birleştirebilir, ardından bu birleştirilmiş metni tek bir nihai özet halinde özetleyebilirsiniz.
İçeriğinizi dikkatli bir şekilde bölme
Farklı stratejiler, LLM'lerde farklı çıktılara yol açabileceğinden büyük bir metni nasıl böleceğinizi göz önünde bulundurmanız önemlidir. İdeal olarak, metinler konu değişikliği olduğunda (ör. makalenin yeni bir bölümü veya paragraf) bölünmelidir. Metni kelime veya cümlenin ortasında bölmekten kaçınmak önemlidir. Bu nedenle, tek bölme yönergesi olarak karakter sayısını kullanamazsınız.
Bunu yapmanın birçok yolu vardır. Aşağıdaki örnekte, performans ve çıkış kalitesini dengeleyen LangChain.js'deki Recursive Text Splitter (Yinelemeli Metin Bölücü) kullanılmıştır. Bu yöntem çoğu iş yükü için uygundur.
Yeni bir örnek oluştururken iki temel parametre vardır:
chunkSize
, her bölmede izin verilen maksimum karakter sayısıdır.chunkOverlap
, iki ardışık bölme arasında çakışacak karakter sayısıdır. Bu, her parçanın önceki parçadaki bağlamın bir kısmını içermesini sağlar.
Her parçayı içeren bir dizeler 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. Ortalama olarak bir jeton 4 karakter içerir. Örneğimizde chunkSize
3.000 karakterden oluşuyor ve bu yaklaşık 750 jetona denk geliyor.
Jetonun kullanılabilirliğini belirleme
Bir giriş için kaç jetonun kullanılabileceğini belirlemek üzere measureInputUsage()
yöntemini ve inputQuota
özelliğini kullanın. Bu durumda, tüm metni işlemek için özetleyicinin kaç kez çalışacağını bilemeyeceğinizden uygulama sınırsızdır.
Her bölüm için özet oluşturma
İçeriğin nasıl bölüneceğini ayarladıktan sonra, Özetleyici API'si ile her bölüm için özet oluşturabilirsiniz.
create()
işleviyle özetleyici örneği oluşturun. Mümkün olduğunca fazla bağlam bilgisi sağlamak için format
parametresini plain-text
, type
parametresini tldr
ve length
parametresini long
olarak ayarladık.
Ardından, RecursiveCharacterTextSplitter
ile oluşturulan her bölüm için özeti oluşturun ve sonuçları yeni bir dizede birleştirin.
Her bölümün özetini net bir şekilde belirlemek için özetleri yeni bir satırla ayırdık.
Bu yeni satır, döngü yalnızca bir kez yürütüldüğünde önemli olmasa da her özetin son özetin jeton değerine nasıl katkıda bulunduğunu belirlemek için kullanışlıdır. Çoğu durumda bu çözüm, orta ve uzun içerikler için işe yarar.
Özetlerin yinelemeli özeti
Çok uzun metinlerde birleştirilmiş özetin uzunluğu, mevcut bağlam penceresinin boyutunu aşabilir. Bu durumda özetleme işlemi başarısız olur. Bu sorunu gidermek için özetleri yinelemeli olarak özetleyebilirsiniz.
RecursiveCharacterTextSplitter
tarafından oluşturulan ilk bölümleri toplamaya devam ediyoruz. Ardından, recursiveSummarizer()
işlevinde, birleştirilmiş bölümlerin karakter uzunluğuna göre özetleme sürecini döngüye alıyoruz. Özetlerin karakter uzunluğu 3000
değerini aşarsa fullSummaries
değerine birleştirilir. Sınıra ulaşılmazsa özet partialSummaries
olarak kaydedilir.
Tüm özetler oluşturulduktan sonra son 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 özetleri tekrarlar ve özetlemeye devam eder.
Bu çözümü, 17.560 kelime içeren 110.030 karakterlik 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ı iletişim kurmanın bir yoludur. Kanallarda sohbet edebilir veya özel mesajlar gönderebilirsiniz. Ayrıca, sohbeti kontrol etmek ve sunucuyla etkileşim kurmak için komutları kullanabilirsiniz. İnternetteki bir sohbet odası gibidir. Burada yazabilir ve diğer kullanıcıların mesajlarını anında görebilirsiniz.
Bu oldukça etkili bir yöntemdir. Ayrıca, yalnızca 309 karakterden oluşuyor.
Sınırlamalar
Özetlerin özeti tekniği, istemci boyutundaki 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: Özyineleme ile özetleme sürecinin tekrarı sonsuz olabilir ve her özet orijinal metinden daha uzaktır. Bu, modelin faydalı olamayacak kadar yüzeysel bir nihai özet oluşturabileceği anlamına gelir.
- Daha yavaş performans: Her özetin oluşturulması zaman alır. Yine, daha uzun metinlerde sonsuz sayıda özet oluşturulabileceğinden bu yaklaşımın tamamlanması birkaç dakika sürebilir.
Özetleyici demosunu inceleyebilir ve tam kaynak kodunu görüntüleyebilirsiniz.
Görüşlerinizi paylaşın
Summarizer API ile farklı uzunluklarda giriş metni, farklı bölme boyutları ve farklı çakışma uzunluklarıyla özetlerin özeti tekniğini kullanmayı deneyin.
- Chrome'un uygulamasıyla ilgili geri bildirim için hata raporu veya özellik isteği gönderin.
- MDN'deki belgeleri okuyun.
- Özetleme süreciniz veya diğer yerleşik yapay zeka sorularınız hakkında Chrome Yapay Zeka Ekibi ile sohbet edin.