Writer API

Yayınlanma tarihi: 20 Mayıs 2025

Açıklayıcı Web Uzantılar Chrome Durumu Amaç
GitHub Kaynak denemesi Origin denemesi Kaynak denemesi Origin denemesi Görünüm Deneme Amacı (Intent to Experiment)

Writer API, belirtilen bir yazma görevine uygun yeni içerikler oluşturmanıza yardımcı olur. Writer API ve Rewriter API, Writing Assistance APIs ö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 bilgiler şu amaçlarla kullanılabilir:

  • Kullanıcıların yorumlar, blog yayınları veya e-postalar gibi her türlü içeriği yazmasına yardımcı olur.
  • Kullanıcıların daha iyi destek istekleri yazmasına yardımcı olun.
  • Belirli becerileri daha iyi yansıtmak için bir dizi iş ö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-142'de çalışan Writer API kaynak denemesine katılın.

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

Deneme sürecine kaydolma

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

  1. Google'ın Üretken Yapay Zeka Yasaklanan Kullanım Politikası'nı kabul edin.
  2. Writer API kaynak denemesine gidin.
  3. Kaydol'u tıklayın ve formu doldurun. Web kaynağı alanına kaynağınızı veya uzantı kimliğinizi girin chrome-extension://YOUR_EXTENSION_ID.
  4. Göndermek için Kaydol'u tıklayın.
  5. Sağlanan jetonu kopyalayın ve 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'ta Writer ve Rewriter API'lerine erişmek için Chrome'u en yeni 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, yerleşik bir yapay zeka API'si ilk kez bir web sitesi tarafından kullanıldığında ayrı olarak indirilir. Uygulamada, bir kullanıcı yerleşik bir API ile etkileşimde bulunduysa modeli tarayıcısına indirmiş demektir.

Modelin kullanıma hazır olup olmadığını belirlemek için eşzamansız 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. Bunun nedeni, modeli indirmek için yeterli disk alanının olmaması gibi çeşitli faktörler olabilir.
  • available: Tarayıcı, Writer API'yi destekler ve hemen kullanılabilir.
  • downloadable: Tarayıcı, Writer API'yi destekliyor ancak önce modeli indirmesi gerekiyor.
  • downloading: Tarayıcı, Writer API'yi destekliyor ve şu anda modeli indiriyor.

Model indirme işlemini tetiklemek ve yazma aracını başlatmak için Writer.create() işlevini çağırın. availability() yanıtı downloadable ise indirme işleminin ilerleme durumunu dinleyin ve indirme işlemi zaman alabileceği için 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 tutumunu ifade edebilir. Değer formal, neutral (varsayılan) veya casual olarak ayarlanabilir.
  • format: İzin verilen değerler markdown (varsayılan) ve plain-text ile çıkış biçimlendirmesi.
  • length: Çıkışın uzunluğu. İzin verilen değerler short, medium (varsayılan) ve long'dir.
  • 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, 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.
  const writer = await Writer.create({
    ...options,
    monitor(m) {
      m.addEventListener("downloadprogress", e => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    }
  });
}

Yazmaya başlayın

Modelden yazma çıktısı almanın iki yolu vardır: akışsız ve akışlı.

Yayın dışı çıkış

Akışsız yazma işleminde model, girişi bir bütün olarak işler ve ardından çıkışı üretir.

Akış olmayan bir çıkış elde etmek için eşzamansız write() işlevini çağırın. Yazılmasını istediğiniz içerikle ilgili bir istem eklemeniz gerekir. Modelin arka plan bilgilerini sağlamak için isteğe bağlı bir context ekleyebilirsiniz. Bu, modelin çıktı 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ışı

Yayın, sonuçları anlık olarak gösterir. Giriş eklendikçe ve ayarlandıkça çıkış sürekli olarak güncellenir.

Akış yazarı almak için writeStreaming() işlevini çağırın ve akıştaki mevcut metin segmentlerini yineleyin. Modelin arka plan bilgilerini sağlamak için isteğe bağlı bir context ekleyebilirsiniz. Bu, modelin çıktı 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örev için 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 bildirimler vermeleri için inceleme uzmanlarına yardımcı olmak isteyebilirsiniz.

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

Yazarı yeniden kullanma

Aynı yazarı kullanarak birden fazla içerik oluşturabilirsiniz.

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

Yazma sürecini sonlandırmak için denetleyiciyi iptal edin ve yazıcıyı yok 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ışılmaktadır ve gelecekte değişebilir. Bu API'yi denerseniz geri bildiriminizi bizimle paylaşmanızı rica ederiz.

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