Yayınlanma tarihi: 11 Kasım 2024, Son güncelleme: 20 Mayıs 2025
Açıklayıcı | Web | Uzantılar | Chrome Durumu | Amaç |
---|---|---|---|---|
GitHub | Görünüm | Deneme yapma niyeti |
Prompt API ile tarayıcıda Gemini Nano'ya doğal dil isteklerini gönderebilirsiniz.
Chrome uzantılarında Prompt API'yi kullanmanın birçok yolu vardır. Örneğin:
- Anında takvim etkinlikleri. Kullanıcıların birkaç adımda takvim girişleri oluşturabilmesi için web sayfalarından etkinlik ayrıntılarını otomatik olarak ayıklayan bir Chrome uzantısı geliştirin.
- Sorunsuz kişi ayıklama. Web sitelerinden iletişim bilgilerini ayıklayan bir uzantı oluşturarak kullanıcıların bir işletmeyle iletişim kurmasını veya iletişim listesi ayrıntılarını eklemesini kolaylaştırın.
- Dinamik içerik filtreleme. Haber makalelerini analiz eden ve kullanıcı tanımlı konulara göre içeriği otomatik olarak bulanıklaştıran veya gizleyen bir Chrome uzantısı oluşturun.
Bunlar, kullanabileceğiniz seçeneklerden yalnızca birkaçıdır. Neler oluşturacağınızı görmek için sabırsızlanıyoruz.
Donanım gereksinimlerini inceleyin
Dil Tanımlayıcı ve Çevirmen API'leri, masaüstünde yalnızca Chrome'da çalışır.
Prompt API, Summarizer API, Writer API ve Rewriter API, aşağıdaki koşullar karşılandığında Chrome'da çalışır:
- İşletim sistemi: Windows 10 veya 11; macOS 13 veya üzeri (Ventura ve sonraki sürümler) ya da Linux. Android, iOS ve ChromeOS için Chrome, Gemini Nano tarafından desteklenen API'lerimiz tarafından henüz desteklenmiyor.
- Depolama alanı: Chrome profilinizi içeren birimde en az 22 GB.
- GPU: 4 GB'tan fazla VRAM
- Ağ: Sınırsız veri veya sınırsız bağlantı.
Bu şartlar, geliştirme süreciniz ve oluşturduğunuz özellikleri kullanan kullanıcılarınız için geçerlidir.
Uzantıların Prompt API'yi kullanması
Bu API'yi kullanmadan önce Google'ın Üretken Yapay Zeka Yasaklanan Kullanım Politikası'nı kabul edin.
LanguageModel
ad alanında iki uzantı işlevi kullanabilirsiniz:
availability()
tıklayın.create()
simgesini tıklayarak dil modeli oturumu başlatın.
Model indirme
Prompt API, Chrome'da Gemini Nano modelini kullanır. API, Chrome'a yerleştirilmiş olsa da bir uzantı API'yi ilk kez kullandığında model ayrı olarak indirilir.
Modelin kullanıma hazır olup olmadığını belirlemek için asenkron LanguageModel.availability()
işlevini çağırın. Bu işlem, aşağıdaki yanıtlardan birini döndürür:
"unavailable"
, uygulamanın istenen seçenekleri desteklemediği veya hiç dil modeli istemde bulunmadığı anlamına gelir."downloadable"
, uygulamanın istenen seçenekleri desteklediği ancak bu seçenekleri kullanarak oturum oluşturabilmek için bir şey (ör. dil modelinin kendisi veya hassas ayar) indirmesi gerektiği anlamına gelir."downloading"
, uygulamanın istenen seçenekleri desteklediği ancak bu seçenekleri kullanarak oturum oluşturmadan önce devam eden bir indirme işleminin tamamlanması gerektiği anlamına gelir."available"
, uygulamanın yeni indirme gerektirmeden istenen seçenekleri desteklediği anlamına gelir.
Model indirme işlemini tetiklemek ve dil modeli oturumunu oluşturmak için asenkron LanguageModel.availability()
işlevini çağırın. availability()
için verilen yanıt 'downloadable'
ise indirme işleminin ilerleme durumunu dinlemeniz önerilir. Bu sayede, indirme işleminin uzun sürmesi durumunda kullanıcıyı bilgilendirebilirsiniz.
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
Model özellikleri
params()
işlevi, dil modelinin parametreleri hakkında bilgi verir. Nesnede aşağıdaki alanlar bulunur:
defaultTopK
: Varsayılan üst-K değeri (varsayılan:3
).maxTopK
: En yüksek K değeri (8
).defaultTemperature
: Varsayılan sıcaklık (1.0
). Sıcaklık değeri0.0
ile2.0
arasında olmalıdır.maxTemperature
: Maksimum sıcaklık.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}
Oturum oluşturma
Prompt API çalıştırılabilir hale geldiğinde create()
işleviyle bir oturum oluşturursunuz.
Modeli prompt()
veya promptStreaming()
işlevleriyle isteyebilirsiniz.
Oturumunuzu özelleştirme
Her oturum, isteğe bağlı bir seçenekler nesnesi kullanılarak topK
ve temperature
ile özelleştirilebilir. Bu parametrelerin varsayılan değerleri LanguageModel.params()
kaynağından döndürülür.
const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
topK: params.defaultTopK,
});
create()
işlevinin isteğe bağlı options nesnesi, oturumu yok etmek için bir AbortSignal
iletmenize olanak tanıyan bir signal
alanı da alır.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const session = await LanguageModel.create({
signal: controller.signal,
})
İlk istemler
İlk istemlerle dil modeline önceki etkileşimlerle ilgili bağlam bilgisi sağlayabilirsiniz. Örneğin, kullanıcının tarayıcı yeniden başlatıldıktan sonra kayıtlı bir oturumu devam ettirmesine izin vermek için bu yöntemi kullanabilirsiniz.
const session = await LanguageModel.create({
initialPrompts: [
{ role: 'system', content: 'You are a helpful and friendly assistant.' },
{ role: 'user', content: 'What is the capital of Italy?' },
{ role: 'assistant', content: 'The capital of Italy is Rome.'},
{ role: 'user', content: 'What language is spoken there?' },
{ role: 'assistant', content: 'The official language of Italy is Italian. [...]' }
]
});
Oturum sınırları
Belirli bir dil modeli oturumunun işleyebileceği maksimum jeton sayısı vardır. Oturum nesnesinde aşağıdaki özellikleri kullanarak kullanımı ve bu sınıra ulaşma yolunda ilerleme durumunu kontrol edebilirsiniz:
console.log(`${session.inputUsage}/${session.inputQuota}`);
Oturum devamlılığı
Her oturum, sohbetin bağlamını izler. Önceki etkileşimler, oturumun bağlam penceresi dolana kadar gelecekteki etkileşimler için dikkate alınır.
const session = await LanguageModel.create({
initialPrompts: [{
role: "system",
content: "You are a friendly, helpful assistant specialized in clothing choices."
}]
});
const result1 = await session.prompt(
"What should I wear today? It is sunny. I am unsure between a t-shirt and a polo."
);
console.log(result1);
const result2 = await session.prompt(
"That sounds great, but oh no, it is actually going to rain! New advice?"
);
console.log(result2);
Oturumları kopyalama
Kaynakları korumak için clone()
işlevini kullanarak mevcut bir oturumu kopyalayabilirsiniz. Görüşme bağlamı sıfırlanır ancak ilk istem değişmeden kalır. clone()
işlevi, signal
alanı içeren isteğe bağlı bir options nesnesi alır. Bu nesne, klonlanmış oturumu yok etmek için bir AbortSignal
iletmenize olanak tanır.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const clonedSession = await session.clone({
signal: controller.signal,
});
Modele istem gönderme
Modeli prompt()
veya promptStreaming()
işlevleriyle isteyebilirsiniz.
Akış dışı çıkış
Kısa bir sonuç bekliyorsanız yanıt mevcut olduğunda yanıtı döndüren prompt()
işlevini kullanabilirsiniz.
// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and wait for the whole result to come back.
const result = await session.prompt("Write me a poem!");
console.log(result);
}
Akışla yayınlanan çıkış
Daha uzun bir yanıt bekliyorsanız modelden gelen kısmi sonuçları göstermenize olanak tanıyan promptStreaming()
işlevini kullanmanız gerekir. promptStreaming()
işlevi bir ReadableStream
döndürür.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and stream the result:
const stream = session.promptStreaming('Write me an extra-long poem!');
for await (const chunk of stream) {
console.log(chunk);
}
}
İstemleri durdurma
Hem prompt()
hem de promptStreaming()
, istemleri çalıştırmayı durdurmanıza olanak tanıyan bir signal
alanıyla isteğe bağlı ikinci bir parametreyi kabul eder.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const result = await session.prompt(
'Write me a poem!',
{ signal: controller.signal }
);
Oturumları sonlandırma
Artık oturuma ihtiyacınız yoksa kaynakları boşaltmak için destroy()
'ü arayın. Bir oturum yok edildiğinde artık kullanılamaz ve devam eden yürütme işlemi iptal edilir. Oturum oluşturmak biraz zaman alabileceğinden, modelden sık sık istemde bulunmak istiyorsanız oturumu açık tutabilirsiniz.
await session.prompt(
"You are a friendly, helpful assistant specialized in clothing choices."
);
session.destroy();
// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
"What should I wear today? It is sunny, and I am unsure between a
t-shirt and a polo."
);
Demo
Chrome uzantılarında Prompt API'yi test etmek için demo uzantısını yükleyin. Uzantı kaynak kodu GitHub'da mevcuttur.
Katılma ve geri bildirim paylaşma
Geri bildiriminiz, bu API'nin ve tüm yerleşik yapay zeka API'lerinin gelecekteki sürümlerini nasıl oluşturacağımızı ve uygulayacağımızı doğrudan etkileyebilir.
- Chrome'un uygulanmasıyla ilgili geri bildirim için hata raporu veya özellik isteği gönderin.
- Mevcut bir soruna yorum yaparak veya Prompt API GitHub deposunda yeni bir sorun açarak API şekliyle ilgili geri bildiriminizi paylaşın.
- GitHub'daki Prompt API örnek uzantısını indirin.
- Web Incubator Topluluk Grubu'na katılarak standartlar çalışmalarına katılın.