Yerleşik yapay zeka ile Chrome'da özetleme

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

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) seçeneğini tıklayıp 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ıza ait 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. Windows, Mac veya Linux platformlarından birinde Chrome Canary'ı açın.
  2. Şuraya git: chrome://flags/#summarization-api-for-gemini-nano.
  3. Etkin'i seçin.
  4. 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 ('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 asenkron 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ı, özetleyici API'yi destekler ancak şu anda kullanılamaz. 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 özetleyiciyi 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. Böylece, indirme işleminin uzun sürmesi durumunda 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 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ü.
  • 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. 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ış ve akış dışı.

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ış 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 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 gelecekteki sürümlerini ve tüm yerleşik yapay zeka API'lerini nasıl geliştirip uygulayacağımızı doğrudan etkileyebilir.