Yayınlanma tarihi: 11 Kasım 2024
Kullanıcılarınıza uzun makaleleri, karmaşık dokümanları ve hatta canlı sohbet görüşmelerini kısa ve bilgilendirici özetlere dönüştürme olanağı sunabileceğinizi hayal edin.
Özetleyici API, cümle, paragraf, madde işareti listesi ve daha fazlası gibi çeşitli uzunluk ve biçimlerde farklı türde özetler oluşturmak için kullanılabilir. Bu API'nin aşağıdaki senaryolarda faydalı olacağını düşünüyoruz:
- Bir makalenin veya sohbet görüşmesinin önemli noktalarını özetleme
- Makaleler için başlık ve başlıklar önerir.
- Uzun bir metnin kısa ve bilgilendirici bir özetini oluşturma.
- Kitap incelemesine dayalı bir kitap tanıtımı oluşturma.
Kullanılabilirlik
- API'yi üretim aşamasında gerçek kullanıcılarla test etmek için Chrome 131'den Chrome 136'ya kadar süren Summarizer API kaynak denemesine katılın. Kaynak denemeleri, Chrome'da kaynağınızdaki tüm kullanıcılar için özelliği etkinleştirir. Kaynak denemelerini kullanmaya nasıl başlayacağınızı öğrenin.
- Kullanım sınırlamaları olabilir ancak canlı test yapmak ve kullanıcı geri bildirimleri toplamak için bu özellikleri entegre edebilirsiniz. Amacımız, daha geniş bir kullanım alanına sunmak için bu API'nin gelecekteki sürümlerini bilgilendirmektir.
- Uygulama sürecimizi Chrome Durumu'nda takip edebilirsiniz.
- Summarizer API önerisi, yazma API'leri paketinin bir parçasıdır ve tartışmaya açıktır.
- Yeni yerleşik yapay zeka API'lerine erken bir bakış atmak ve posta listemizdeki tartışmalara erişmek için erken önizleme programına katılın.
Kaynak denemesi sırasındaki sınırlamalar
Model kalitesi yalnızca İngilizce içerik üzerinde kapsamlı bir şekilde test edildiğinden, kaynak denemesi sırasında Summarizer API yalnızca İngilizce metinlerin özetlenmesini destekler. Kalite ve güvenlik açısından başka dilleri test edip API'yi geniş çapta kullanıma sunduktan sonra bu sınırlamayı kaldırmayı planlıyoruz.
Summarizer API'yi kullanma
Öncelikle, tarayıcının Summarizer API'yi destekleyip desteklemediğini görmek için özellik algılama işlemini çalıştırın.
if ('ai' in self && 'summarizer' in self.ai) {
// The Summarizer API is supported.
}
Model indirme
Özetleyici API, yüksek kaliteli özetler oluşturmak için eğitilmiş güçlü bir yapay zeka modeli kullanır. API, Chrome'a yerleştirilmiş olsa da bir web sitesi API'yi ilk kez kullandığında model ayrı olarak indirilir.
Modelin kullanıma hazır olup olmadığını belirlemek için eşzamansız ai.summarizer.capabilities()
işlevini çağırın. Üç olası değer alabilen bir available
alanına sahip bir AISummarizerCapabilities
nesnesi döndürür:
no
: Mevcut tarayıcı, Summarizer API'yi destekliyor ancak şu anda kullanılamıyor. Bu durum, modeli indirmek için yeterli disk alanı olmaması gibi çeşitli nedenlerden kaynaklanabilir.readily
: Mevcut tarayıcı, Summarizer API'yi destekler ve hemen kullanılabilir.after-download
: Mevcut tarayıcı, özetleyici API'yi destekler ancak önce modeli indirmesi gerekir.
Model indirme işlemini tetiklemek ve özetleyici oluşturmak için eşzamansız ai.summarizer.create()
işlevini çağırın. capabilities()
için yanıt after-download
ise indirme işleminin ilerleme durumunu dinlemeniz önerilir. Bu şekilde, indirme işleminin zaman alması ihtimaline karşı kullanıcıyı bilgilendirebilirsiniz.
const summarizer = await ai.summarizer.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
}
});
API işlevleri
create()
işlevi, ihtiyaçlarınıza göre yeni bir özetleyici nesnesi yapılandırmanıza olanak tanır. Aşağıdaki parametrelere sahip isteğe bağlı bir options
nesnesini alır:
sharedContext
: Özetleyiciye yardımcı olabilecek ek paylaşılan bağlam.type
:key-points
(varsayılan),tl;dr
,teaser
veheadline
izin verilen değerlerle özetleme türü.format
:markdown
(varsayılan) veplain-text
izin verilen değerlerle özetleme biçimi.length
: İzin verilenshort
,medium
(varsayılan) velong
değerleriyle özetin uzunluğu. Bu uzunlukların anlamları, istenentype
'e göre değişir. Örneğin, Chrome'un uygulamasında kısa önemli noktalar özeti üç madde işaretinden, kısa özet ise bir cümleden oluşur. Uzun önemli noktalar özeti yedi madde işaretinden, uzun özet ise bir paragraftan oluşur.
Aşağıdaki örnekte özetleyicinin nasıl başlatılacağı gösterilmektedir.
const options = {
sharedContext: 'This is a scientific article',
type: 'key-points',
format: 'markdown',
length: 'medium',
};
const available = (await self.ai.summarizer.capabilities()).available;
let summarizer;
if (available === 'no') {
// The Summarizer API isn't usable.
return;
}
if (available === 'readily') {
// The Summarizer API can be used immediately .
summarizer = await self.ai.summarizer.create(options);
} else {
// The Summarizer API can be used after the model is downloaded.
summarizer = await self.ai.summarizer.create(options);
summarizer.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
await summarizer.ready;
}
Özetleyiciyi çalıştırma
Özetleyiciyi çalıştırmanın iki yolu vardır: akışlı olan ve olmayan.
Akış dışı özet
Akış dışı özetleme işleminde model, girişi bir bütün olarak işler ve ardından çıkışı oluşturur.
Akış olmayan bir özet almak için özetleyicinin eşzamansız summarize()
işlevini çağırın. İşlevin ilk bağımsız değişkeni, özetlemek istediğiniz metindir. İkinci isteğe bağlı bağımsız değişken, context
alanına sahip bir nesnedir.
Bu alan, özetleme işlemini iyileştirebilecek arka plan ayrıntıları eklemenize olanak tanır.
const longText = document.querySelector('article').innerHTML;
const summary = await summarizer.summarize(longText, {
context: 'This article is intended for a tech-savvy audience.',
});
Akış özeti
Akış özetleme, sonuçları anlık olarak sunar. Giriş eklenip ayarlandıkça çıkış da sürekli olarak güncellenir.
Akış özetini almak için özetleyicinin summarizeStreaming()
işlevini çağırın. Ardından akıştaki mevcut metin segmentlerini iteratif olarak inceleyin.
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()
, yanıt segmentlerinin birbirini ardışık olarak oluşturduğu bir ReadableStream
döndürür. Bu, her yanıtın yalnızca bir sonraki segmenti değil, o noktaya kadar oluşturulan özetin tamamını içerdiği anlamına gelir. Bu, istenen davranış değildir.
Segmentlerin tek bir uzun akışın parçalarından oluştuğu platformdaki diğer akış API'leriyle uyumlu olmayı amaçlıyoruz. Şu anda, istenen davranışı elde etmek için aşağıdakileri uygulayabilirsiniz:
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
Summarizer API'yi Summarizer API Playground'da deneyebilirsiniz.
Standartlaştırma çalışması
Tarayıcılar arası uyumluluğu sağlamak için Summarizer API'yi standartlaştırmaya çalışıyoruz.
API önerimiz topluluktan destek aldı ve daha fazla tartışma için W3C Web Incubator Topluluğu'na taşındı. Chrome ekibi, W3C Teknik Mimari Grubu'ndan geri bildirim istedi ve Mozilla ile WebKit'ten standartlarla ilgili görüşlerini sordu.
Katılma ve geri bildirim paylaşma
Kaynak denemesine katılarak Summarizer API'yi hemen test etmeye başlayın ve geri bildirimlerinizi paylaşın. Geri bildiriminiz, bu API'nin gelecekteki sürümlerini ve tüm yerleşik yapay zeka API'lerini nasıl geliştirip uygulayacağımızı doğrudan etkileyebilir.
- Chrome'un uygulanmasıyla ilgili geri bildirim için hata raporu veya özellik isteği gönderin.
- Mevcut bir soruna yorum yaparak veya yeni bir sorun açarak GitHub'da Özetleyici API tasarımını tartışın.
- Web Incubator Community Group'a (Web Incubator Topluluk Grubu) katılarak standartlar çalışmasına katılın.