Prompt API ile yerel ve çevrimdışı olarak çalışabilen bir sohbet botu oluşturma

Yayın tarihi: 13 Ocak 2025

Bu makale, LLM chatbot'ları hakkındaki üç bölümlük serinin son bölümüdür. Önceki makalelerde istemci tarafı LLM'lerin gücü ele alınmış ve WebLLM destekli bir chatbot'u yapılacaklar listesi uygulamasına ekleme süreci adım adım açıklanmıştı.

Bazı yeni cihazlarda büyük dil modelleri ve diğer yapay zeka modelleri doğrudan cihazda bulunur. Chrome, yerleşik yapay zeka API'lerini tarayıcıya entegre etmeyi önerdi. Bu kapsamda, farklı geliştirme aşamalarında olan bir dizi API bulunuyor. Bu API'lerin çoğu, web sitelerinin maksimum çıkarım performansı elde etmek için aynı uygulamayı ve modeli kullanabilmesi amacıyla standartlaştırma sürecinden geçmektedir.

Prompt API, bu tür yapay zeka API'lerinden biridir. Geliştiricilerin bu özelliği kullanmak için Erken Erişim Programı'na kaydolmaları önerilir. Kabul edildikten sonra, istem API'sini tarayıcılarda nasıl etkinleştireceğinizle ilgili talimatlar alırsınız. Prompt API, Chrome uzantıları için kaynak denemesi olarak kullanılabilir. Bu sayede, bu API'yi gerçek uzantı kullanıcıları için test edebilirsiniz.

Paylaşılan model erişimi

Prompt API, WebLLM'ye benzer şekilde çalışır. Ancak bu sefer model seçimi yoktur (tarayıcıyla birlikte gelen LLM'yi kullanmanız gerekir). Yerleşik yapay zekayı etkinleştirirken Chrome, tarayıcıya Gemini Nano'yu indirir. Bu model daha sonra birden fazla kaynakta paylaşılabilir ve maksimum performansla çalıştırılabilir. Bir geliştiricinin model seçimi özelliği eklemeyi istediği bir GitHub sorunu var.

Konuşmayı ayarlama

Mesaj yazışmasını aynı şekilde başlatabilirsiniz ancak Prompt API, sistem istemini belirtmek için kısa bir söz dizimi de sunar. create() arayüzünde LanguageModel yöntemini kullanarak dil modeli oturumunu başlatın:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

İlk sorunuzu yanıtlayın

Akışı yapılandırmak için bir yapılandırma nesnesi kullanmak yerine Prompt API iki ayrı yöntem sunar:

  • prompt() tam dizeyi döndürür
  • promptStreaming(), eşzamansız bir yinelenebilir döndürür. WebLLM'nin aksine, istem API'si tam dize yanıtıyla karşılık verir. Bu nedenle, sonuçları kendiniz birleştirmeniz gerekmez.

Daha önce başka bir kaynak model indirmeyi tetiklemediyse Gemini Nano tarayıcınıza indirilirken ilk isteğinizin işlenmesi çok uzun sürebilir. Model zaten kullanıma sunulmuşsa çıkarım işlemi hemen başlar.

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

Demo

Özet

Büyük dil modellerinin uygulamalara entegre edilmesi, kullanıcı deneyimini önemli ölçüde iyileştirebilir. Bulut hizmetleri, kullanıcının cihazından bağımsız olarak daha yüksek kaliteli modeller ve yüksek çıkarım performansı sunarken WebLLM ve Chrome'un Prompt API'si gibi cihaz üzerinde çözümler, çevrimdışı olarak kullanılabilir, gizliliği artırır ve bulut tabanlı alternatiflere kıyasla maliyet tasarrufu sağlar. Bu yeni API'leri deneyerek web uygulamalarınızı daha akıllı hale getirin.