Yerleşik yapay zeka ile özetleme

Yayınlanma tarihi: 11 Kasım 2024, Son güncelleme tarihi: 1 Mayıs 2025

Açıklayıcı Web Uzantılar Chrome Durumu Amaç
GitHub Bayrak arkasında Origin deneme sürümü Bayrak arkasında Origin deneme sürümü Görünüm Deneme yapma niyeti

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ğına inanı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.

Başlayın

Chrome 131 ile 139 arasında çalışan Summarizer API kaynak denemesine katılın. Kaynak denemeleri, özelliği Chrome'da kaynağınızdaki gerçek kullanıcılara sunmanıza olanak tanır.

Kaynak denemesine kaydolma

Özetleyici API'yi kullanmaya başlamak için aşağıdaki adımları uygulayın:

  1. Google'ın Üretken Yapay Zeka Yasaklanan Kullanım Politikası'nı kabul edin.
  2. Summarizer API kaynak denemesi'ne gidin.
  3. Register'ı (Kaydol) tıklayın ve formu doldurun.
    • Web kaynağı alanına kaynağınızı veya uzantı kimliğinizi (chrome-extension://YOUR_EXTENSION_ID) girin.
  4. Göndermek için Kaydol'u tıklayın.
  5. Sağlanan jetonu kopyalayıp deneme sürümünün etkinleştirilmesini istediğiniz kaynaktaki veya uzantınızın dosyasındaki her web sayfasına ekleyin.
  6. Summarizer API'yi kullanmaya başlayın.

Kaynak denemelerini kullanmaya başlama hakkında daha fazla bilgi edinin.

Kaynak denemesi sırasındaki sınırlamalar

Model kalitesi yalnızca İngilizce içerik üzerinde ayrıntılı 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 ek dilleri test ettikten ve API'yi geniş bir kitleye sunduktan sonra bu sınırlamayı kaldırmayı planlıyoruz.

localhost için destek ekleme

Kaynak denemesi sırasında localhost'te Summarizer API'ye erişmek için Chrome Canary'a sahip olmanız gerekir. Ardından aşağıdaki adımları uygulayın:

  1. Şuraya git: chrome://flags/#summarization-api-for-gemini-nano.
  2. Etkin'i seçin.
  3. Yeniden başlat'ı tıklayın veya Chrome'u yeniden başlatın.

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 ('Summarizer' in self) {
  // The Summarizer API is supported.
}

Model indirme

Özetleyici API, yüksek kaliteli özetler oluşturmak için eğitilmiş bir model 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 asenkron Summarizer.availability() işlevini çağırın. Aşağıdaki değerleri içeren bir promise döndürür.

  • "unavailable", uygulamanın istenen seçenekleri desteklemediği anlamına gelir.
  • "downloadable", uygulamanın istenen seçenekleri desteklediği anlamına gelir ancak önce tarayıcının bir model (Chrome'da Gemini Nano) veya model için ince ayar gibi bir şey indirmesi gerekir.
  • "downloading", uygulamanın istenen seçenekleri desteklediği ancak devam edebilmesi için devam eden bir indirme işleminin tamamlanması gerektiği anlamına gelir.
  • "available", uygulamanın istenen seçenekleri desteklediğini ve özetleyicinin devam edebileceğini gösterir.

Model indirme işlemini tetiklemek ve özetleyiciyi oluşturmak için eşzamansız Summarizer.create() işlevini çağırın. availability() için yanıt downloadable veya downloading ise indirme ilerleme durumunu dinlemeniz önerilir. Bu sayede kullanıcıyı bilgilendirebilir ve özetleme işleminin gerçekleşebilmesi için indirme işleminin zaman alabileceğini belirtebilirsiniz.

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

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 parametreleri içeren isteğe bağlı bir options nesnesi alır:

  • sharedContext: Özetleyiciye yardımcı olabilecek ek paylaşılan bağlam.
  • type: key-points (varsayılan), tl;dr, teaser ve headline izin verilen değerlerle özetleme türü. Ayrıntılar için aşağıdaki tabloya bakın.
  • format: markdown (varsayılan) ve plain-text izin verilen değerlerle özetleme biçimi.
  • length: short, medium (varsayılan) ve long izin verilen değerlerle özetleme uzunluğu. Bu uzunlukların anlamları, istenen type'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.

Aşağıdaki tabloda farklı özet türleri ve bunların karşılık gelen uzunlukları gösterilmektedir. Bazen sonuçlar daha kısa olabileceğinden uzunluklar mümkün olan maksimum değeri temsil eder.

Tür Anlamı Uzunluk
"tl;dr" Özet kısa ve öz olmalı, yoğun bir okuyucu için girişe hızlı bir genel bakış sunmalıdır.
kısa video 1 cümle
medium 3 cümle
uzun 5 cümle
"teaser" Özet, girişin en ilgi çekici veya merak uyandırıcı kısımlarına odaklanmalı ve okuyucuyu daha fazla okumaya teşvik etmelidir.
kısa video 1 cümle
medium 3 cümle
uzun 5 cümle
"key-points" Özet, girişteki en önemli noktaları madde işaretli liste halinde sunmalıdır.
kısa video 3 madde işareti
medium 5 madde işareti
uzun 7 madde işareti
"headline" Özet, girişin ana fikrini makale başlığı biçiminde tek bir cümlede etkili bir şekilde içermelidir.
kısa video 12 kelime
medium 17 kelime
uzun 22 kelime

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

Özetleyiciyi çalıştırma

Özetleyiciyi çalıştırmanın iki yolu vardır: akış ve toplu işlem (akış dışı).

Toplu özetleme

Toplu özetleme özelliğinde model, girişi bir bütün olarak işler ve ardından çıkışı oluşturur.

Toplu özet almak için summarize() işlevini çağırın. İlk bağımsız değişken, özetlemek istediğiniz metindir. İkinci isteğe bağlı bağımsız değişken, context alanı içeren bir öğedir. 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ış 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, amaçlanan davranış değildir.

Segmentlerin tek bir uzun yayının art arda gelen parçaları olduğu platformdaki diğer akış API'leriyle uyumlu hale getirmeyi 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 ve tüm yerleşik yapay zeka API'lerinin gelecekteki sürümlerini nasıl derleyip uygulayacağımızı doğrudan etkileyebilir.