Writer API

Yayınlanma tarihi: 20 Mayıs 2025

Açıklayıcı Web Uzantılar Chrome Durumu Amaç
GitHub Bayrak arkasında Origin deneme sürümü Bayrak arkasında Origin deneme sürümü Görünüm Deneme yapma niyeti

Writer API, belirtilen bir yazma görevine uygun yeni içerikler oluşturmanıza yardımcı olur. Writer API ve Rewriter API, Yazım Yardımı API'leri önerisinin bir parçasıdır.

Bu iş ortağı API'leri, kullanıcılar tarafından oluşturulan içerikleri iyileştirmenize yardımcı olabilir.

Kullanım alanları

İlk fikrinize ve isteğe bağlı bağlama göre yeni içerikler yazın. Bu raporlar aşağıdakiler için kullanılabilir:

  • Kullanıcıların yorum, blog yayını veya e-posta gibi her türlü içeriği yazmasına izin verin.
  • Kullanıcıların daha iyi destek istekleri yazmasına yardımcı olun.
  • Belirli becerileri daha iyi yansıtmak için bir dizi çalışma örneği için giriş taslağı oluşturun.

Kullanım alanınız eksik mi? Geri bildiriminizi paylaşmak için erken önizleme programına katılın.

Başlayın

Chrome 137 ile 142 arasında çalışan Writer API kaynak denemesine katılın.

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
  • : 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.

Kaynak denemesine kaydolma

Writer API, Rewriter API ile ortak bir kaynak denemesinde kullanılabilir. Bu API'leri kullanmaya başlamak için:

  1. Google Üretken Yapay Zeka Yasaklanan Kullanım Politikası'nı kabul edin.
  2. Writer API kaynak denemesi sayfasına gidin.
  3. Kaydol'u tıklayıp formu doldurun. Web kaynağı alanına kaynağınızı veya uzantı kimliğinizi (chrome-extension://YOUR_EXTENSION_ID) girin.
  4. Göndermek için Kaydol'u tıklayın.
  5. Sağlanan jetonu kopyalayıp kaynağınızdaki her katılımcı web sayfasına ekleyin veya uzantı manifestinize dahil edin.
  6. Writer ve Rewriter API'lerini kullanmaya başlayın.

Kaynak denemelerini kullanmaya başlama hakkında daha fazla bilgi edinin.

localhost için destek ekleme

Kaynak denemesi sırasında localhost'teki Writer ve Rewriter API'lerine erişmek için Chrome'u en son sürüme güncellemeniz gerekir. Ardından, aşağıdaki adımları uygulayın:

  1. Şuraya git: chrome://flags/#writer-api-for-gemini-nano.
  2. Etkin'i seçin.
  3. Yeniden başlat'ı tıklayın veya Chrome'u yeniden başlatın.

Writer API'yi kullanma

Öncelikle, tarayıcının bu API'leri destekleyip desteklemediğini görmek için özellik algılama işlemini çalıştırın.

if ('Writer' in self) {
  // The Writer API is supported.
}

Writer API ve diğer tüm yerleşik yapay zeka API'leri tarayıcıya entegre edilmiştir. Gemini Nano, herhangi bir web sitesi yerleşik bir yapay zeka API'si kullandığında ilk kez ayrı olarak indirilir. Kullanıcılar yerleşik bir API ile daha önce etkileşime geçtiyse modeli tarayıcılarına indirmiştir.

Modelin kullanıma hazır olup olmadığını belirlemek için asenkron Writer.availability() işlevini çağırın. Dört olası değer alabilen bir dize döndürür:

  • unavailable: Tarayıcı Writer API'yi destekler ancak şu anda kullanılamaz. Bu durum, modeli indirmek için yeterli disk alanı olmaması gibi çeşitli nedenlerden kaynaklanabilir.
  • available: Tarayıcı, Writer API'yi destekler ve hemen kullanılabilir.
  • downloadable: Tarayıcı, Writer API'yi destekler ancak önce modeli indirmesi gerekir.
  • downloading: Tarayıcı, Writer API'yi destekliyor ve şu anda modeli indiriyor.

Model indirme işlemini tetiklemek ve yazıcıyı başlatmak için Writer.create() işlevini çağırın. availability() için yanıt downloadable ise indirme işlemi zaman alabileceği için indirme işleminin ilerleme durumunu dinleyin ve kullanıcıyı bilgilendirin.

const writer = await Writer.create({
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

API işlevleri

create() işlevi, yeni bir yazar nesnesi yapılandırmanıza olanak tanır. Aşağıdaki parametreleri içeren isteğe bağlı bir options nesnesi alır:

  • tone: Yazı üslubu, içeriğin stilini, karakterini veya tavrını ifade edebilir. Değer formal, neutral (varsayılan) veya casual olarak ayarlanabilir.
  • format: İzin verilen markdown (varsayılan) ve plain-text değerleriyle çıkış biçimlendirmesi.
  • length: short, medium (varsayılan) ve long izin verilen değerlerle çıkışın uzunluğu.
  • sharedContext: Birden fazla çıkış yazarken paylaşılan bir bağlam, modelin beklentilerinize daha uygun içerikler oluşturmasına yardımcı olabilir.

Aşağıdaki örnekte, bir writer nesnesinin nasıl başlatılacağı gösterilmektedir:

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);
  });
}

Yazmaya başlama

Yazıları modelden iki şekilde yayınlayabilirsiniz: akış dışı ve akışlı.

Akış dışı çıkış

Akış dışı yazmada model, girişi bir bütün olarak işler ve ardından çıkışı oluşturur.

Akış olmayan bir çıkış almak için eşzamansız write() işlevini çağırın. Yazılmasını istediğiniz içerik için bir istem eklemeniz gerekir. Model arka plan bilgilerini sağlamak için isteğe bağlı bir context ekleyebilirsiniz. Bu, modelin çıktıyla ilgili beklentilerinizi daha iyi karşılamasına yardımcı olabilir.

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

Akış yazma çıkışı

Akış, teklif sonuçlarını gerçek zamanlı olarak gösterir. Giriş eklenip ayarlandıkça çıkış sürekli olarak güncellenir.

Akış yazma aracısı almak için writeStreaming() işlevini çağırın ve akıştaki mevcut metin segmentleri üzerinde iterasyon yapın. Model arka plan bilgilerini sağlamak için isteğe bağlı bir context ekleyebilirsiniz. Bu, modelin çıktıyla ilgili beklentilerinizi daha iyi karşılamasına yardımcı olabilir.

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

Birden fazla görevle ilgili bağlamı paylaşma

Birden fazla içerik oluşturmak için writer kullanabilirsiniz. Bu durumda sharedContext eklemek faydalı olur. Örneğin, yorumlarda daha iyi geri bildirim vermeleri için yorumcuları destekleyebilirsiniz.

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

Yazarları yeniden kullanma

Birden fazla içerik oluşturmak için aynı yazarı kullanabilirsiniz.

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

Yazar

Yazma işlemini sonlandırmak için denetleyiciyi iptal edin ve yazıcıyı imha edin.

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

Etkileşim kurma ve geri bildirim paylaşma

Writer ve Rewriter API aktif olarak tartışılmakta olup gelecekte değiştirilebilir. Bu API'yi denedikten sonra geri bildiriminiz olursa bizimle paylaşın.

Tarayıcıda Gemini Nano ve diğer uzman modeller dahil olmak üzere model kullanan tüm yerleşik yapay zeka API'lerini keşfedin.