Özetleyici

Web özellikleri: Özetleyici

Summarizer API, web geliştiricilerin Chrome'da Gemini Nano veya Edge'de Phi kullanarak doğrudan tarayıcıda yerel, yapay zeka destekli metin özetleme özelliği sunmasına olanak tanır. Bu API, önemli noktalar, başlıklar ve özetler dahil olmak üzere çeşitli biçimleri destekler ve kullanıcı gizliliğini sağlamak için tamamen cihaz üzerinde çalışır.


Başlarken

Summarizer API, Chrome ve Edge 138'den itibaren kullanılabilir. Gemini Nano veya Phi modelinin bir kez indirilmesi gerekir.

Donanım ve Yazılım Gereksinimleri

  • İşletim sistemi: Windows 10/11, macOS 13 ve sonraki sürümler, Linux veya ChromeOS (Chromebook Plus).
  • Depolama alanı: Profil birimi için 22 GB boş alan.
  • RAM/CPU: 16 GB+ RAM ve 4+ CPU çekirdeği.
  • VRAM: 4 GB+ (GPU kullanılıyorsa).

Modeli indirme ve kullanılabilirlik

Modelin hazır olup olmadığını, indirilmesi gerekip gerekmediğini veya kullanılamadığını kontrol edin.

Zorunlu seçenekleri iletme: Aynı yapılandırma seçenekleri nesnesini hem Summarizer.availability(options) hem de Summarizer.create(options)'ye iletmeniz gerekir. Desteği sonlandırılan window.ai.summarizer API yüzeyini KULLANMAYIN.

Zorunlu İlerleme İzleme: Summarizer.create() için bir monitor(m) geri çağırma işlevi sağlayarak ve downloadprogress etkinliği için bir dinleyici ekleyerek model indirme ilerleme durumunu izleyen bir mekanizma uygulamanız ZORUNLUDUR.

Kullanıcı Hareketi Şartı: availability, 'downloadable' veya 'downloading' olduğunda, Summarizer.create() aracılığıyla gerçek indirme işleminin tetiklenmesi için bir kullanıcı hareketi (ör. kullanıcı tıklaması) gerekir. NotAllowedError sorununu önlemek için oluşturma çağrısını sayfa yükleme sırasında koşulsuz olarak çağırmak yerine bir etkinlik işleyiciye yerleştirmeniz gerekir.

const options = {
  type: 'key-points',
  format: 'plain-text',
  length: 'medium'
};

const availability = await Summarizer.availability(options);

if (availability === 'available') {
  const summarizer = await Summarizer.create(options);
  // Ready to use immediately
} else if (availability === 'downloadable') {
  // A user gesture is strictly required to start the download
  document.getElementById('start-download-btn').addEventListener('click', async () => {
    const summarizer = await Summarizer.create({
      ...options,
      monitor(m) {
        m.addEventListener('downloadprogress', (e) => {
          console.log(`Downloaded ${Math.round((e.loaded / e.total) * 100)}%`);
        });
      },
    });
  });
}

API İşlevleri ve Yapılandırması

Summarizer.create(options) ile özetleyici oluştururken çıkışı özelleştirebilirsiniz:

Parametre Seçenekler Açıklama
type key-points, tldr, teaser, headline Özet stratejisini tanımlar.
format markdown, plain-text Çıkış söz dizimi stili.
length short, medium ve long Hedef uzunluk (ör. 1 veya 5 cümle).
preference auto, speed ve capability Gecikme ile kalite arasında denge kurar.

Örnek Yapılandırma

const options = {
  sharedContext: 'This is a scientific article',
  type: 'key-points',
  format: 'markdown',
  length: 'medium',
};

if (navigator.userActivation.isActive) {
  const summarizer = await Summarizer.create(options);
}

Dil Desteği

Tarayıcının belirli özet isteğini işleyebilmesi için beklenen dilleri belirtebilirsiniz.

const summarizer = await Summarizer.create({
  type: 'key-points',
  expectedInputLanguages: ['en', 'ja'],
  outputLanguage: 'es',
});

Özetleme Yöntemleri

1. Toplu Özetleme

Metnin tamamını tek seferde işler ve sonucu döndürür.

const longText = document.querySelector('article').innerText;
const summary = await summarizer.summarize(longText, {
  context: 'This article is intended for a tech-savvy audience.',
});
console.log(summary);

2. Akış Özetleme

Model tarafından oluşturulan sonuçları anında döndürerek daha duyarlı bir kullanıcı arayüzü sunar.

const stream = summarizer.summarizeStreaming(longText);
for await (const chunk of stream) {
  console.log(chunk);
}

Güvenlik ve İzinler

  • Veri gizliliği: Google'a veri gönderilmez. İşleme, yerel cihazda gerçekleşir.
  • Çapraz kaynak: İzin Politikası kullanılarak iframe'lere erişim izni verilebilir.

    <iframe src="https://example.com/" allow="summarizer"></iframe>
    
  • Web Workers: Şu anda desteklenmemektedir.

Yedek strateji

Kullanılabilirliği başlatmadan veya sorgulamadan önce tarayıcının Summarizer API'yi destekleyip desteklemediğini kontrol edin:

if ('Summarizer' in self) {
  // The Summarizer API is supported.
} else {
  // Execute fallback strategy
}

Summarizer API'si desteklenmiyorsa veya kullanılabilirlik kontrolleri 'unavailable' değerini döndürüyorsa sorunsuz bir şekilde geri dönmeniz gerekir.

Önerilen seçenekler:

  1. Uzak API yedekleme: Özetleme isteğini bir sunucu uç noktasına veya uzak API'ye (ör. Vertex AI Gemini API) yönlendirerek kullanıcıların özetleri almaya devam etmesini sağlayın.
  2. Kontrollü azalma: Kullanıcı arayüzündeki özetleme kontrollerini görsel olarak devre dışı bırakın veya düğmeyi gizleyip kullanıcı dostu bir mesaj (ör. "Local summarization is currently unsupported in this browser") gösterin. Etkileşimin, genel işlenmemiş çalışma zamanı istisnalarını tetiklemesine izin vermeyin.
  3. Polyfill yedek: Buluttaki modellerle uzak hizmetleri veya yerel modellerle cihaz üzerinde çıkarımı kullanarak API yüzeyini taklit etmek için built-in-ai-task-apis-polyfills veya prompt-api-polyfill gibi topluluk tarafından yönetilen polyfill'leri kullanabilirsiniz.

Gizlilik ve maliyetle ilgili etkiler: Bu polyfill'ler, istekleri uzak sunuculara (ör. bulut üzerinden Gemini API) proxy üzerinden iletebilir. Bu durum, yerel yerleşik yapay zeka API'lerinin cihaz üzerinde gizlilik garantilerini tamamen geçersiz kılar ve sunucu tarafı API kullanım maliyetlerine neden olur.