Yayınlanma tarihi: 11 Kasım 2024, Son güncelleme tarihi: 20 Mayıs 2025
Açıklayıcı | Web | Uzantılar | Chrome Durumu | Amaç |
---|---|---|---|---|
GitHub | Görünüm | Deneme Yapma Amacı |
Prompt API ile tarayıcıda Gemini Nano'ya doğal dil istekleri 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 yalnızca birkaç adımda takvim girişleri oluşturabilmesi için web sayfalarından etkinlik ayrıntılarını otomatik olarak çıkaran 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 işletmelerle iletişim kurmasını veya iletişim listelerine ayrıntı eklemesini kolaylaştırın.
- Dinamik içerik filtreleme. Haber makalelerini analiz eden ve kullanıcı tarafından tanımlanan konulara göre içerikleri otomatik olarak bulanıklaştıran veya gizleyen bir Chrome uzantısı oluşturun.
Bunlar sadece birkaç olasılık. Üreteceğiniz içerikleri merakla bekliyoruz.
Donanım gereksinimlerini inceleyin
Geliştiriciler ve Chrome'da bu API'leri kullanarak özellikleri çalıştıran kullanıcılar için aşağıdaki şartlar geçerlidir. Diğer tarayıcıların farklı işletim gereksinimleri olabilir.
Dil Algılayıcı ve Çeviri API'leri masaüstündeki Chrome'da çalışır. Bu API'ler mobil cihazlarda çalışmaz. 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'yu kullanan API'ler tarafından henüz desteklenmemektedir.
- Depolama alanı: Chrome profilinizi içeren birimde en az 22 GB.
- GPU: Kesinlikle 4 GB'tan fazla VRAM.
- Ağ: Sınırsız veri veya ölçülmeyen bağlantı.
Gemini Nano'nun tam boyutu biraz farklılık gösterebilir. Mevcut boyutu öğrenmek için chrome://on-device-internals
adresini ziyaret edip Model durumu'na gidin.
Model boyutunu belirlemek için listelenen Dosya yolunu açın.
Uzantılarda Prompt API'yi kullanma
Bu API'yi kullanmadan önce Google'ın Üretken Yapay Zeka Yasaklanan Kullanım Politikası'nı kabul edin.
LanguageModel
ad alanında kullanabileceğiniz iki uzantı işlevi vardır:
availability()
simgesini tıklayarak modelin neler yapabileceğini ve kullanılabilir olup olmadığını kontrol edin.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şik olsa da model, bir uzantı API'yi ilk kez kullandığında ayrı olarak indirilir.
Modelin kullanıma hazır olup olmadığını belirlemek için eşzamansız LanguageModel.availability()
işlevini çağırın. Bu işlem, aşağıdaki yanıtlardan birini döndürmelidir:
"unavailable"
, uygulamanın istenen seçenekleri desteklemediği veya dil modeline hiç istem girilmesini desteklemediği anlamına gelir."downloadable"
, uygulamanın istenen seçenekleri desteklediği ancak bu seçenekleri kullanarak oturum oluşturabilmesi için bir şeyler indirmesi (örneğin, dil modelinin kendisi veya ince ayar) gerektiği anlamına gelir."downloading"
, uygulamanın istenen seçenekleri desteklediği ancak bu seçenekleri kullanarak oturum oluşturabilmesi için devam eden bir indirme işlemini tamamlaması gerektiği anlamına gelir."available"
, uygulamanın istenen seçenekleri yeni indirme gerektirmeden desteklediği anlamına gelir.
Model indirme işlemini tetiklemek ve dil modeli oturumu oluşturmak için asenkron LanguageModel.availability()
işlevini çağırın. availability()
yanıtı 'downloadable'
ise indirme ilerleme durumunu dinlemek en iyi uygulamadır. Bu şekilde, indirme işlemi uzun sürerse 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 sizi bilgilendirir. Nesnede aşağıdaki alanlar bulunur:
defaultTopK
: Varsayılan üst K değeri (varsayılan:3
).maxTopK
: Maksimum top-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ılabildiğinde create()
işleviyle bir oturum oluşturursunuz.
Modele prompt()
veya promptStreaming()
işlevleriyle istem girebilirsiniz.
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ı seçenekler nesnesi, oturumu sonlandırmak için 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 sağlayabilirsiniz. Örneğin, kullanıcının tarayıcı yeniden başlatıldıktan sonra depolanmış bir oturuma devam etmesine izin verebilirsiniz.
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 bu sınıra yönelik kullanımı ve ilerleme durumunu kontrol edebilirsiniz:
console.log(`${session.inputUsage}/${session.inputQuota}`);
Oturum kalıcılığı
Her oturumda, sohbetin bağlamı takip edilir. Oturumun bağlam penceresi dolana kadar önceki etkileşimler 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);
Oturum klonlama
Kaynakları korumak için clone()
işlevini kullanarak mevcut bir oturumu klonlayabilirsiniz. Görüşme bağlamı sıfırlanır ancak ilk istem değişmez. clone()
işlevi, signal
alanına sahip isteğe bağlı bir seçenekler nesnesi alır. Bu alan, klonlanmış oturumu yok etmek için AbortSignal
iletmenize olanak tanır.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const clonedSession = await session.clone({
signal: controller.signal,
});
Modele istem girme
Modele prompt()
veya promptStreaming()
işlevleriyle istem girebilirsiniz.
Yayın dışı çıkış
Kısa bir sonuç bekliyorsanız yanıtı kullanılabilir olduğunda 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);
}
Yayınlanan çıkış
Daha uzun bir yanıt bekliyorsanız promptStreaming()
işlevini kullanmanız gerekir. Bu işlev, modelden gelen kısmi sonuçları göstermenize olanak tanır. promptStreaming()
işlevi ReadableStream
değerini 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);
}
}
İstem çalıştırmayı durdurma
Hem prompt()
hem de promptStreaming()
, signal
alanıyla isteğe bağlı ikinci bir parametreyi kabul eder. Bu parametre, istemleri çalıştırmayı durdurmanıza olanak tanır.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const result = await session.prompt(
'Write me a poem!',
{ signal: controller.signal }
);
Oturumu sonlandırma
Bir oturuma artık ihtiyacınız yoksa kaynakları serbest bırakmak için destroy()
numaralı telefonu arayın. Bir oturum yok edildiğinde artık kullanılamaz ve devam eden yürütmeler iptal edilir. Oturum oluşturmak biraz zaman alabileceğinden, modele sık sık istem göndermeyi planlıyorsanız oturumu açık tutmak isteyebilirsiniz.
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ılın ve geri bildirim paylaşın
Geri bildiriminiz, bu API'nin ve tüm yerleşik yapay zeka API'lerinin gelecekteki sürümlerinin nasıl oluşturulacağını ve uygulanacağını doğrudan etkileyebilir.
- Chrome'un uygulaması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 Community Group'a katılarak standartlar çalışmasına dahil olun.