Dipublikasikan: 11 November 2024, Terakhir diperbarui: 20 Mei 2025
Penjelasan | Web | Ekstensi | Status Chrome | Intent |
---|---|---|---|---|
GitHub | View | Intent to Experiment |
Dengan Prompt API, Anda dapat mengirim permintaan bahasa alami ke Gemini Nano di browser.
Ada banyak cara untuk menggunakan Prompt API di Ekstensi Chrome. Contoh:
- Acara kalender instan. Kembangkan Ekstensi Chrome yang otomatis mengekstrak detail acara dari halaman web, sehingga pengguna dapat membuat entri kalender hanya dalam beberapa langkah.
- Ekstraksi kontak yang lancar. Buat ekstensi yang mengekstrak informasi kontak dari situs, sehingga memudahkan pengguna untuk menghubungi bisnis atau menambahkan detail ke daftar kontak mereka.
- Pemfilteran konten dinamis. Buat Ekstensi Chrome yang menganalisis artikel berita dan secara otomatis memburamkan atau menyembunyikan konten berdasarkan topik yang ditentukan pengguna.
Ini hanyalah beberapa kemungkinan, dan kami tidak sabar ingin melihat karya Anda.
Meninjau persyaratan hardware
Language Detector dan Translator API hanya berfungsi di desktop di Chrome.
Prompt API, Summarizer API, Writer API, dan Rewriter API berfungsi di Chrome jika kondisi berikut terpenuhi:
- Sistem operasi: Windows 10 atau 11; macOS 13+ (Ventura dan seterusnya); atau Linux. Chrome untuk Android, iOS, dan ChromeOS belum didukung oleh API kami yang didukung oleh Gemini Nano.
- Penyimpanan: Minimal 22 GB di volume yang berisi profil Chrome Anda.
- GPU: VRAM minimal 4 GB.
- Jaringan: Data tanpa batas atau koneksi tanpa kuota.
Persyaratan ini ada untuk Anda dalam proses pengembangan dan pengguna yang menggunakan fitur yang Anda buat.
Menggunakan Prompt API di Ekstensi
Sebelum menggunakan API ini, konfirmasi Kebijakan Penggunaan Terlarang untuk AI Generatif Google.
Ada dua fungsi ekstensi yang tersedia untuk Anda di
namespace LanguageModel
:
availability()
untuk memeriksa kemampuan model dan apakah tersedia.create()
untuk memulai sesi model bahasa.
Download model
Prompt API menggunakan model Gemini Nano di Chrome. Meskipun API di-build ke dalam Chrome, model didownload secara terpisah saat pertama kali ekstensi menggunakan API.
Untuk menentukan apakah model siap digunakan, panggil fungsi LanguageModel.availability()
asinkron. Tindakan ini akan menampilkan salah satu
respons berikut:
"unavailable"
berarti penerapan tidak mendukung opsi yang diminta, atau tidak mendukung perintah model bahasa sama sekali."downloadable"
berarti implementasi mendukung opsi yang diminta, tetapi harus mendownload sesuatu (misalnya, model bahasa itu sendiri, atau penyesuaian) sebelum dapat membuat sesi menggunakan opsi tersebut."downloading"
berarti bahwa penerapan mendukung opsi yang diminta, tetapi harus menyelesaikan operasi download yang sedang berlangsung sebelum dapat membuat sesi menggunakan opsi tersebut."available"
berarti implementasi mendukung opsi yang diminta tanpa memerlukan download baru.
Untuk memicu download model dan membuat sesi model bahasa, panggil
fungsi LanguageModel.availability()
asinkron. Jika
respons terhadap availability()
adalah 'downloadable'
, praktik terbaiknya adalah
memproses progres download. Dengan cara ini, Anda dapat memberi tahu pengguna jika
download memerlukan waktu.
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
Kemampuan model
Fungsi params()
memberi tahu Anda parameter
model bahasa. Objek memiliki kolom berikut:
defaultTopK
: Nilai top-K default (default:3
).maxTopK
: Nilai top-K maksimum (8
).defaultTemperature
: Suhu default (1.0
). Nilai suhu harus antara0.0
dan2.0
.maxTemperature
: Suhu maksimum.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}
Membuat sesi
Setelah Prompt API dapat berjalan, Anda membuat sesi dengan fungsi create()
.
Anda dapat meminta model dengan fungsi prompt()
atau promptStreaming()
.
Menyesuaikan sesi
Setiap sesi dapat disesuaikan dengan topK
dan temperature
menggunakan objek opsi opsional. Nilai default untuk parameter ini ditampilkan dari
LanguageModel.params()
.
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,
});
Objek opsi opsional fungsi create()
juga menggunakan kolom signal
,
yang memungkinkan Anda meneruskan AbortSignal
untuk menghancurkan sesi.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const session = await LanguageModel.create({
signal: controller.signal,
})
Perintah awal
Dengan perintah awal, Anda dapat memberikan konteks tentang interaksi sebelumnya kepada model bahasa, misalnya, untuk memungkinkan pengguna melanjutkan sesi yang disimpan setelah browser dimulai ulang.
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. [...]' }
]
});
Batas sesi
Sesi model bahasa tertentu memiliki jumlah maksimum token yang dapat diproses. Anda dapat memeriksa penggunaan dan progres menuju batas tersebut menggunakan properti berikut di objek sesi:
console.log(`${session.inputUsage}/${session.inputQuota}`);
Persistensi sesi
Setiap sesi melacak konteks percakapan. Interaksi sebelumnya diperhitungkan untuk interaksi mendatang hingga jendela konteks sesi penuh.
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);
Meng-clone sesi
Untuk mempertahankan resource, Anda dapat meng-clone sesi yang ada dengan fungsi
clone()
. Konteks percakapan direset, tetapi perintah awal tetap
utuh. Fungsi clone()
menggunakan objek opsi
opsional dengan kolom signal
, yang memungkinkan Anda meneruskan AbortSignal
untuk
menghancurkan sesi yang di-clone.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const clonedSession = await session.clone({
signal: controller.signal,
});
Meminta model
Anda dapat meminta model dengan fungsi prompt()
atau promptStreaming()
.
Output non-streaming
Jika mengharapkan hasil singkat, Anda dapat menggunakan fungsi prompt()
yang menampilkan respons setelah tersedia.
// 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);
}
Output yang di-streaming
Jika mengharapkan respons yang lebih lama, Anda harus menggunakan fungsi promptStreaming()
yang memungkinkan Anda menampilkan hasil parsial saat masuk dari model. Fungsi
promptStreaming()
menampilkan ReadableStream
.
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);
}
}
Menghentikan perintah yang berjalan
prompt()
dan promptStreaming()
menerima parameter kedua opsional dengan
kolom signal
, yang memungkinkan Anda berhenti menjalankan perintah.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const result = await session.prompt(
'Write me a poem!',
{ signal: controller.signal }
);
Menghentikan sesi
Panggil destroy()
untuk mengosongkan resource jika Anda tidak lagi memerlukan sesi. Jika
dihancurkan, sesi tidak dapat digunakan lagi, dan eksekusi yang sedang berlangsung
akan dibatalkan. Sebaiknya simpan sesi jika Anda ingin sering meminta
model karena pembuatan sesi dapat memerlukan waktu.
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
Untuk menguji Prompt API di Ekstensi Chrome, instal ekstensi demo. Kode sumber ekstensi tersedia di GitHub.
Berpartisipasi dan memberikan masukan
Masukan Anda dapat secara langsung memengaruhi cara kami mem-build dan menerapkan versi mendatang API ini, dan semua API AI bawaan.
- Untuk memberikan masukan tentang penerapan Chrome, ajukan laporan bug atau permintaan fitur.
- Berikan masukan Anda tentang bentuk API dengan memberikan komentar pada Masalah yang ada atau dengan membuka masalah baru di repositori GitHub Prompt API.
- Download ekstensi contoh Prompt API di GitHub.
- Berpartisipasilah dalam upaya standar dengan bergabung ke Grup Komunitas Inkubator Web.