Dipublikasikan: 20 Mei 2025
Penjelasan | Web | Ekstensi | Status Chrome | Intent |
---|---|---|---|---|
GitHub | View | Niat untuk Bereksperimen |
Writer API membantu Anda membuat konten baru yang sesuai dengan tugas penulisan yang ditentukan. Writer API dan Rewriter API adalah bagian dari proposal Writing Assistance API.
API partner ini dapat membantu Anda meningkatkan kualitas konten yang dibuat oleh pengguna.
Kasus penggunaan
Menulis konten baru, berdasarkan ide awal dan konteks opsional Anda. Hal ini dapat digunakan untuk:
- Mendukung pengguna menulis semua jenis konten, seperti ulasan, postingan blog, atau email.
- Membantu pengguna menulis permintaan dukungan yang lebih baik.
- Buat draf pengantar untuk serangkaian contoh tugas, agar dapat lebih baik menggambarkan keterampilan tertentu.
Apakah kasus penggunaan Anda tidak ada? Bergabunglah dengan program pratinjau awal untuk memberikan masukan.
Mulai
Bergabunglah dengan uji coba origin Writer API yang berjalan di Chrome 137 hingga 142.
Meninjau persyaratan hardware
Persyaratan berikut berlaku untuk developer dan pengguna yang mengoperasikan fitur menggunakan API ini di Chrome. Browser lain mungkin memiliki persyaratan pengoperasian yang berbeda.
Language Detector API dan Translator API berfungsi di Chrome di desktop. API ini tidak berfungsi di perangkat seluler. Prompt API, Summarizer API, Writer API, dan Rewriter API berfungsi di Chrome jika persyaratan berikut terpenuhi:
- Sistem operasi: Windows 10 atau 11; macOS 13+ (Ventura dan yang lebih baru); atau Linux. Chrome untuk Android, iOS, dan ChromeOS belum didukung oleh API yang menggunakan Gemini Nano.
- Penyimpanan: Minimal 22 GB ruang kosong pada volume yang berisi profil Chrome Anda.
- GPU: Lebih dari 4 GB VRAM.
- Jaringan: Data tanpa batas atau koneksi tanpa kuota.
Ukuran pasti Gemini Nano dapat bervariasi saat browser mengupdate model. Untuk menentukan ukuran saat ini, buka chrome://on-device-internals
dan buka
Status model. Buka Jalur file yang tercantum untuk menentukan ukuran model.
Mendaftar untuk uji coba origin
Writer API tersedia dalam uji coba origin bersama dengan Rewriter API. Untuk mulai menggunakan API ini:
- Konfirmasi Kebijakan Penggunaan Terlarang untuk AI Generatif Google.
- Buka uji coba origin Writer API.
- Klik Daftar dan isi formulirnya. Di kolom Asal web, berikan asal atau ID ekstensi Anda,
chrome-extension://YOUR_EXTENSION_ID
. - Untuk mengirimkan, klik Daftar.
- Salin token yang diberikan, lalu tambahkan ke setiap halaman web yang berpartisipasi di origin Anda atau sertakan dalam manifes Ekstensi Anda.
- Mulai menggunakan Writer API dan Rewriter API.
Pelajari lebih lanjut cara mulai menggunakan uji coba origin.
Menambahkan dukungan ke localhost
Untuk mengakses Writer dan Rewriter API di localhost selama uji coba origin, Anda harus mengupdate Chrome ke versi terbaru. Selanjutnya, ikuti langkah-langkah berikut:
- Buka
chrome://flags/#writer-api-for-gemini-nano
. - Pilih Enabled.
- Klik Luncurkan kembali atau mulai ulang Chrome.
Menggunakan Writer API
Pertama, jalankan deteksi fitur untuk melihat apakah browser mendukung API ini.
if ('Writer' in self) {
// The Writer API is supported.
}
Writer API, dan semua API AI bawaan lainnya, terintegrasi di browser. Gemini Nano didownload secara terpisah saat pertama kali situs menggunakan AI API bawaan. Dalam praktiknya, jika pengguna telah berinteraksi dengan API bawaan, mereka telah mendownload model ke browser mereka.
Untuk menentukan apakah model siap digunakan, panggil fungsi asinkron
Writer.availability()
. Jika respons terhadap availability()
adalah downloadable
, dengarkan progres download dan beri tahu pengguna, karena download mungkin memerlukan waktu.
const availability = await Writer.availability();
Untuk memicu download model dan memulai penulis, periksa
aktivasi pengguna
dan panggil fungsi Writer.create()
.
const writer = await Writer.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
Fungsi API
Fungsi create()
memungkinkan Anda mengonfigurasi objek penulis baru. Metode ini menggunakan objek options
opsional dengan parameter berikut:
tone
: Nuansa penulisan dapat merujuk pada gaya, karakter, atau sikap konten. Nilai dapat ditetapkan keformal
,neutral
(default), ataucasual
.format
: Pemformatan output, dengan nilai yang diizinkanmarkdown
(default) danplain-text
.length
: Panjang output, dengan nilai yang diizinkanshort
,medium
(default), danlong
.sharedContext
: Saat menulis beberapa output, konteks bersama dapat membantu model membuat konten yang lebih sesuai dengan ekspektasi Anda.
Contoh berikut menunjukkan cara memulai objek writer
:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'casual',
format: 'plain-text',
length: 'medium',
};
const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
// The Writer API isn't usable.
return;
}
if (available === 'available') {
// The Writer API can be used immediately .
writer = await Writer.create(options);
} else {
// The Writer can be used after the model is downloaded.
const writer = await Writer.create({
...options,
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
}
Mulai menulis
Ada dua cara untuk menghasilkan tulisan dari model: non-streaming dan streaming.
Output non-streaming
Dengan penulisan non-streaming, model memproses input secara keseluruhan, lalu menghasilkan output.
Untuk mendapatkan output non-streaming, panggil fungsi asinkron write()
. Anda
harus menyertakan perintah untuk konten yang ingin Anda tulis. Anda dapat menambahkan context
opsional untuk memberikan informasi latar belakang model, yang dapat membantu model memenuhi ekspektasi Anda terhadap output dengan lebih baik.
// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
Menulis output streaming
Streaming memberikan hasil secara real-time. Output diperbarui terus-menerus saat input ditambahkan dan disesuaikan.
Untuk mendapatkan penulis streaming, panggil fungsi writeStreaming()
dan lakukan iterasi
pada segmen teks yang tersedia dalam streaming. Anda dapat menambahkan context
opsional untuk memberikan informasi latar belakang model, yang dapat membantu model memenuhi ekspektasi Anda terhadap output dengan lebih baik.
// Streaming
const writer = await Writer.create();
const stream = writer.writeStreaming(
"An inquiry to my bank about how to enable wire transfers on my account.", {
context: "I'm a longstanding customer",
},
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Membagikan konteks untuk beberapa tugas
Anda dapat menggunakan writer
untuk membuat beberapa konten. Dalam hal ini, sebaiknya tambahkan sharedContext
. Misalnya, Anda mungkin ingin membantu peninjau memberikan masukan yang lebih baik dalam komentar.
// Shared context and per writing task context
const writer = await Writer.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = writer.writeStreaming(
"Write a blog post about how I love all this work on gen AI at Google!" +
"Mention that there's so much to learn and so many new things I can do!",
{ context: " The request comes from someone working at a startup providing an e-commerce CMS solution."}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
Menggunakan kembali penulis
Anda dapat menggunakan penulis yang sama untuk membuat beberapa konten.
// Reuse a writer
const writer = await Writer.create({ tone: "formal" });
const reviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => writer.write(reviewEl.textContent)
),
);
Menghentikan penulis
Untuk mengakhiri proses penulisan, batalkan pengontrol dan hapus penulis.
// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });
// Destroying a writer
writer.destroy();
Demo
Permission Policy, iframe, dan Web Worker
Secara default, Writer API hanya tersedia untuk jendela tingkat teratas dan iframe dengan origin yang sama. Akses ke API dapat didelegasikan ke iframe lintas origin
menggunakan atribut allow=""
Kebijakan Izin:
<!--
The hosting site at https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Writer API by
setting the `allow="writer"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="writer"></iframe>
Writer API belum tersedia di Web Workers untuk saat ini, karena kompleksitas menetapkan dokumen yang bertanggung jawab untuk setiap pekerja guna memeriksa status kebijakan izin.
Berinteraksi dan memberikan masukan
Writer dan Rewriter API sedang dalam tahap pembahasan aktif dan dapat berubah di masa mendatang. Jika Anda mencoba API ini dan memiliki masukan, sampaikan kepada kami.
- Baca penjelasan, ajukan pertanyaan, dan berpartisipasi dalam diskusi.
- Tinjau penerapan untuk Chrome di Status Chrome.
- Bergabunglah dengan program pratinjau awal untuk melihat API baru lebih awal dan mendapatkan akses ke milis kami.
- Jika Anda memiliki masukan tentang penerapan Chrome, laporkan bug Chromium.
Temukan semua API AI bawaan yang menggunakan model, termasuk Gemini Nano dan model pakar lainnya, di browser.