Prompt API Nedir?

Prompt API, W3C Web Machine Learning Community Group tarafından önerilen deneysel bir web platformu önerisidir ve tarayıcı tarafından sağlanan büyük bir dil modelini window.LanguageModel arayüzü aracılığıyla JavaScript'e sunar. Sayfalar LanguageModel.create() ile bir oturum oluşturur, isteğe bağlı olarak bir sistem istemiyle yapılandırır ve ardından bir yanıt almak için prompt() veya promptStreaming() çağırır.

Barındırılan bir LLM API'sini çağırmaktan farklı olarak, model kullanıcının cihazında çalışır. Bu, girdilerin hiçbir zaman makineden ayrılmadığı, sayfa model önbelleğe alındıktan sonra çevrimdışı çalışır ve istek başına maliyeti olmadığı anlamına gelir. Chrome'da temel model Gemini Nano'dur, ancak API kasıtlı olarak model-agnostiktir, böylece diğer tarayıcılar farklı uygulamalar ekleyebilir.

Bir oturum durum bilgisine sahiptir: bağlam penceresi içinde token cinsinden ölçülen konuşma geçmişini izler. Pencere dolduğunda, en eski sistem olmayan iletiler otomatik olarak çıkarılır (bir contextoverflow olayı tetiklenir) ve herhangi bir zamanda session.contextUsage ve session.contextWindow öğelerini inceleyerek ne kadar alan kaldığını görebilirsiniz.

Araç açıklaması

Bu oyun alanı, window.LanguageModel ile bağlantılı etkileşimli bir sohbet yüzeyidir. Bir sistem istemi ayarlamanıza, ileti göndermenize ve modelin token'ları gerçek zamanlı olarak akışını izlemenize olanak tanır. Bir ilerleme çubuğu model kullanılabilirliğini ve indirme ilerleme durumunu gösterir ve bir token kullanım çubuğu oturumun bağlam penceresinin ne kadarının tüketildiğini bildirir.

Oturum ilk gönderide tembel bir şekilde oluşturulur ve sistem istemi değiştirene kadar iletiler arasında yeniden kullanılır; bu noktada yok edilir ve yeni talimatlarla yeni bir oturum oluşturulur.

Özellikler

  • Akış yanıtları — token'lar üretildikçe sohbette görünmesi için promptStreaming() kullanır.
  • Sistem istemi editörü — her yanıtı koşullandıran kalıcı bir rol veya davranış tanımlayın.
  • Durdur düğmesi — oturumu yıkmadan AbortController ile uçuşta bir istemi iptal edin.
  • Canlı bağlam kullanımıcontextUsage öğesini contextWindow öğesine karşı görselleştirir, böylece konuşmanın ne zaman taşacağını görebilirsiniz.
  • Kullanılabilirlik ve indirme ilerleme durumu — model alınırken availability() durumunu ve downloadprogress olaylarını yüzeye çıkarır.

Kullanım durumları

  • İstemleri yerel olarak deneme — bulut API'si için ödeme yapmadan sistem istemi ve az sayıda örnek desenleri yineleyin.
  • Cihazda AI uygulanabilirliğini test etme — Prompt API'sinin kullanılabilir olduğunu doğrulayın, bağlam penceresinin ne kadar büyük olduğunu görün ve donanımınızda yanıt hızını kıyaslayın.
  • Gizlilik açısından hassas taslak oluşturma — üçüncü taraf sunucusuna gönderilmemesi gereken metni beyin fırtınası yapın veya yeniden ifade edin.

Gereksinimler

  • Prompt API'sini uygulayan bir tarayıcı. Chrome 138+ bunu deneysel olarak sunar; eski sürümlerde chrome://flags/#prompt-api-for-gemini-nano aracılığıyla etkinleştirmeniz ve cihazda model indirmeniz gerekebilir.
  • Bir güvenli bağlam (HTTPS veya localhost).
  • Modelin donanım gereksinimlerini karşılayan bir cihaz (yeterli disk alanı, RAM ve desteklenen GPU/CPU). Desteklenmeyen cihazlarda availability() unavailable döndürür.
  • Modeli indirmek için ilk bant genişliği. Sonraki oturumlar önbelleğe alınan modeli yeniden kullanır.

Nasıl çalışır

  1. Bağlama alındığında, araç typeof window.LanguageModel öğesini kontrol eder. Yoksa, bir uyarı sohbet girişinin yerini alır.
  2. LanguageModel.availability() available, downloadable, downloading veya unavailable öğelerinden birini bildirir. Sonuç ilerleme çubuğunda gösterilir.
  3. İlk kez Gönder düğmesine bastığınızda, araç LanguageModel.create() öğesini downloadprogress olaylarını UI'ye aktaran bir monitor ile çağırır. Bir sistem istemi ayarlanmışsa, initialPrompts: [{ role: "system", content: ... }] aracılığıyla iletilir.
  4. Kullanıcı iletisi session.promptStreaming(text, { signal }) aracılığıyla gönderilir. Döndürülen ReadableStream<string> parça parça tüketilir ve asistan iletisine eklenir.
  5. Her yanıttan sonra, session.contextUsage ve session.contextWindow okunur ve token kullanım çubuğunda yansıtılır.
  6. Durdur düğmesine basmak controller.abort() çağırır, bu da oturumu sonraki istem için canlı bırakırken uçuşta akışı AbortError ile reddeder.
  7. Sistem istemi düzenleme, önbelleğe alınan oturumu geçersiz kılar: mevcut oturum destroy() edilir ve sonraki gönderme güncellenmiş talimatlarla yeni bir oturum oluşturur.

Seçenekler açıklandı

  • Sistem istemi — ilk system rolü iletisi olarak iletilen serbest biçimli bir talimat. Sonraki tüm turları koşullandırır. Boş bırakmak sistem iletisi olmadan bir oturum oluşturur.
  • Gönder / DurdurGönder girişi bir user iletisi olarak gönderir. Durdur akış yanıtını önceki iletileri silmeden iptal eder.
  • Token kullanımı — geçerli oturum için used / total token'lar. used total öğesine yaklaştığında, eski kullanıcı/asistan çiftleri sonraki isteme çıkarılacaktır.
  • Model durumuavailability() ve downloadprogress öğelerinin birleştirilmiş okuması. Model indirilirken çubuk canlanır ve bir yüzde gösterir.

Sınırlamalar

  • Prompt API deneyseldir. Yöntem adları, seçenekler (örneğin inputUsage vs contextUsage) ve olay semantiği Chrome sürümleri arasında değişebilir.
  • Çıktı kalitesi, doğruluk ve talimat izleme tamamen tarayıcı tarafından sağlanan modele bağlıdır ve garantili değildir.
  • Bağlam penceresi barındırılan LLM'lere kıyasla küçüktür. Uzun konuşmalar taşacak ve en eski turları sessizce bırakacaktır.
  • API web worker'larına açık değildir ve çapraz kaynaklı iframe'lerde Permissions Policy (language-model) delegasyonu gerektirebilir.
  • Bu araç kasıtlı olarak temperature, topK, araç kullanımı, çok modlu girdiler, yapılandırılmış çıktı (responseConstraint) veya oturum klonlamayı açık değildir. Bunlar spesifikasyonun parçasıdır ancak düz sohbete odaklanmak için oyun alanından tutulur.

SSS

API neden desteklenmiyor diyor? window.LanguageModel tarayıcınızda tanımsızdır. Masaüstünde en son Chrome'u deneyin ve gerekirse Prompt API bayrağını etkinleştirin ve chrome://components aracılığıyla cihazda model indirmeyi bekleyin.

İlk yanıt neden yavaş? İlk çağrı bir model indirmesi (ilerleme çubuğunu izleyin) ve oturum oluşturma adımını tetikleyebilir. Sonraki istemler aynı oturumu yeniden kullanır ve neredeyse hemen akışa başlar.

İstemim cihazdan ayrılıyor mu? Hayır. Model yerel olarak çalışır. Metniniz bu araç tarafından herhangi bir sunucuya gönderilmez.

Bağlam dolduğunda ne olur? Oturum bir contextoverflow olayı tetikler ve yer açmak için en eski sistem olmayan turları çıkarır. Sistem istemi korunur.

Sistem istemi değiştirmek neden yanıt stilini konuşmanın ortasında temizledi? Sistem istemi düzenleme, geçerli oturumu yok eder ve sonraki gönderide yeni bir oturum oluşturur. Yeni oturumun önceki turlardan hiçbir hafızası yoktur.