Writer API

Dipublikasikan: 20 Mei 2025

Penjelasan Web Ekstensi Status Chrome Intent
GitHub Di balik tanda Uji coba Origin Di balik bendera Uji coba Origin View Intent to Experiment

Writer API membantu Anda membuat konten baru yang sesuai dengan tugas menulis 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

Tulis konten baru, berdasarkan ide awal dan konteks opsional Anda. Hal ini dapat digunakan untuk:

  • Dukung pengguna menulis konten apa pun, seperti ulasan, postingan blog, atau email.
  • Membantu pengguna menulis permintaan dukungan yang lebih baik.
  • Buat draf pengantar untuk serangkaian contoh pekerjaan, untuk lebih mencerminkan 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

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.

Mendaftar untuk uji coba origin

Writer API tersedia dalam uji coba origin bersama dengan Rewriter API. Untuk mulai menggunakan API ini:

  1. Konfirmasi Kebijakan Penggunaan Terlarang untuk AI Generatif Google.
  2. Buka Uji coba origin Writer API.
  3. Klik Daftar dan isi formulir. Di kolom Asal web, berikan asal atau ID ekstensi Anda, chrome-extension://YOUR_EXTENSION_ID.
  4. Untuk mengirim, klik Daftar.
  5. Salin token yang diberikan, lalu tambahkan ke setiap halaman web yang berpartisipasi di origin Anda atau sertakan dalam manifes Ekstensi.
  6. Mulai gunakan Writer dan Rewriter API.

Pelajari lebih lanjut cara memulai 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:

  1. Buka chrome://flags/#writer-api-for-gemini-nano.
  2. Pilih Enabled.
  3. 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 API AI 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 Writer.availability() asinkron. Metode ini menampilkan string yang dapat mengambil empat kemungkinan nilai:

  • unavailable: Browser mendukung Writer API, tetapi tidak dapat digunakan saat ini. Hal ini dapat terjadi karena beberapa alasan, seperti kapasitas disk yang tidak memadai untuk mendownload model.
  • available: Browser mendukung Writer API, dan dapat langsung digunakan.
  • downloadable: Browser mendukung Writer API, tetapi harus mendownload model terlebih dahulu.
  • downloading: Browser mendukung Writer API, dan saat ini mendownload model.

Untuk memicu download model dan memulai penulis, panggil fungsi Writer.create(). Jika respons untuk availability() adalah downloadable, dengarkan progres download dan beri tahu pengguna, karena download mungkin memerlukan waktu.

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 memerlukan objek options opsional dengan parameter berikut:

  • tone: Nada penulisan dapat merujuk pada gaya, karakter, atau sikap konten. Nilainya dapat ditetapkan ke formal, neutral (default), atau casual.
  • format: Pemformatan output, dengan nilai yang diizinkan markdown (default) dan plain-text.
  • length: Panjang output, dengan nilai yang diizinkan short, medium (default), dan long.
  • sharedContext: Saat menulis beberapa output, konteks bersama dapat membantu model membuat konten yang lebih selaras 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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

Mulai menulis

Ada dua cara untuk menghasilkan output penulisan 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 write() asinkron. Anda harus menyertakan perintah untuk konten yang ingin ditulis. Anda dapat menambahkan context opsional untuk memberikan informasi latar belakang model, yang dapat membantu model lebih memenuhi ekspektasi Anda untuk output.

// 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",
  },
);

Output penulisan streaming

Streaming menawarkan hasil secara real time. Output diperbarui secara terus-menerus saat input ditambahkan dan disesuaikan.

Untuk mendapatkan penulis streaming, panggil fungsi writeStreaming() dan lakukan iterasi pada segmen teks yang tersedia di streaming. Anda dapat menambahkan context opsional untuk memberikan informasi latar belakang model, yang dapat membantu model lebih memenuhi ekspektasi Anda untuk output.

// 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

Sebaiknya gunakan writer untuk membuat beberapa konten. Dalam hal ini, sebaiknya tambahkan sharedContext. Misalnya, Anda dapat 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 hancurkan 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

Berinteraksi dan memberikan masukan

Writer dan Rewriter API sedang dalam pembahasan aktif dan dapat berubah sewaktu-waktu. Jika Anda mencoba API ini dan memiliki masukan, kami ingin mendengarnya.

Temukan semua API AI bawaan yang menggunakan model, termasuk Gemini Nano dan model pakar lainnya, di browser.