Writer API

पब्लिश किया गया: 20 मई, 2025

ज़्यादा जानकारी देने वाला वीडियो वेब एक्सटेंशन Chrome का स्टेटस प्रयोजन
GitHub झंडे के पीछे ऑरिजिन ट्रायल झंडे के पीछे ऑरिजिन ट्रायल देखें एक्सपेरिमेंट करने का मकसद

Writer API की मदद से, लिखने से जुड़े किसी खास टास्क के हिसाब से नया कॉन्टेंट बनाया जा सकता है. Writer API और Rewriter API, लिखने में मदद करने वाले एपीआई के प्रस्ताव का हिस्सा हैं.

पार्टनर के इन एपीआई की मदद से, उपयोगकर्ताओं के बनाए गए कॉन्टेंट को बेहतर बनाया जा सकता है.

उपयोग के उदाहरण

अपने शुरुआती आइडिया और वैकल्पिक कॉन्टेक्स्ट के आधार पर नया कॉन्टेंट लिखें. इसका इस्तेमाल इन कामों के लिए किया जा सकता है:

  • उपयोगकर्ताओं को किसी भी तरह का कॉन्टेंट लिखने में मदद करना. जैसे, समीक्षाएं, ब्लॉग पोस्ट या ईमेल.
  • उपयोगकर्ताओं को सहायता के लिए बेहतर अनुरोध लिखने में मदद करें.
  • कुछ खास स्किल को बेहतर तरीके से दिखाने के लिए, अपने काम के सैंपल की सीरीज़ के लिए परिचय तैयार करें.

क्या आपके ऐप्लिकेशन के इस्तेमाल का उदाहरण मौजूद नहीं है? अपने सुझाव, शिकायत या राय शेयर करने के लिए, रिलीज़ से पहले झलक देखने की सुविधा वाले प्रोग्राम में शामिल हों.

अपनी प्रोफ़ाइल बनाना शुरू करें

Writer API के ऑरिजिन ट्रायल में शामिल हों. यह ट्रायल, Chrome 137 से 142 में चल रहा है.

हार्डवेयर की ज़रूरी शर्तें देखना

भाषा का पता लगाने वाला टूल और Translator API, सिर्फ़ Chrome के डेस्कटॉप वर्शन पर काम करते हैं.

Prompt API, Summarizer API, Writer API, और Rewriter API, Chrome में तब काम करते हैं, जब ये शर्तें पूरी होती हैं:

  • ऑपरेटिंग सिस्टम: Windows 10 या 11; macOS 13+ (Ventura और उसके बाद के वर्शन); या Linux. फ़िलहाल, Gemini Nano के साथ काम करने वाले हमारे एपीआई, Chrome for Android, iOS, और ChromeOS के साथ काम नहीं करते.
  • स्टोरेज: उस वॉल्यूम में कम से कम 22 जीबी स्टोरेज होना चाहिए जिसमें आपकी Chrome प्रोफ़ाइल मौजूद है.
  • GPU: 4 जीबी से ज़्यादा वीआरएम.
  • नेटवर्क: अनलिमिटेड डेटा या बिना डेटा मीटर वाला कनेक्शन.

ये ज़रूरी शर्तें, ऐप्लिकेशन बनाने की प्रोसेस के दौरान आपके लिए और उन उपयोगकर्ताओं के लिए होती हैं जो आपके बनाए गए ऐप्लिकेशन का इस्तेमाल करते हैं.

ऑरिजिन ट्रायल के लिए साइन अप करना

Writer API, Rewriter API के साथ ऑरिजिन ट्रायल के तौर पर उपलब्ध है. इन एपीआई का इस्तेमाल शुरू करने के लिए:

  1. जनरेटिव एआई के इस्तेमाल से जुड़ी पाबंदी की Google की नीति स्वीकार करें.
  2. Writer API के ऑरिजिन ट्रायल पर जाएं.
  3. रजिस्टर करें पर क्लिक करें और फ़ॉर्म भरें. वेब ऑरिजिन फ़ील्ड में, अपना ऑरिजिन या एक्सटेंशन आईडी, chrome-extension://YOUR_EXTENSION_ID डालें.
  4. सबमिट करने के लिए, रजिस्टर करें पर क्लिक करें.
  5. दिए गए टोकन को कॉपी करें और उसे अपने ऑरिजिन पर, प्रोग्राम में हिस्सा लेने वाले हर वेब पेज पर जोड़ें या अपने एक्सटेंशन मेनिफ़ेस्ट में शामिल करें.
  6. Writer और Rewriter API का इस्तेमाल शुरू करें.

ऑरिजिन ट्रायल शुरू करने के तरीके के बारे में ज़्यादा जानें.

localhost के लिए सहायता जोड़ना

ऑरिजिन ट्रायल के दौरान, localhost पर Writer और Rewriter API को ऐक्सेस करने के लिए, आपको Chrome को सबसे नए वर्शन पर अपडेट करना होगा. फिर, इन स्तरो का पालन करें:

  1. chrome://flags/#writer-api-for-gemini-nano पर जाएं.
  2. चालू है को चुनें.
  3. फिर से लॉन्च करें पर क्लिक करें या Chrome को रीस्टार्ट करें.

Writer API का इस्तेमाल करना

सबसे पहले, सुविधा का पता लगाने की सुविधा चलाकर देखें कि ब्राउज़र इन एपीआई के साथ काम करता है या नहीं.

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

Writer API और पहले से मौजूद अन्य सभी एआई एपीआई, ब्राउज़र में इंटिग्रेट किए गए हैं. जब कोई वेबसाइट, पहले से मौजूद एआई एपीआई का इस्तेमाल करती है, तो Gemini Nano को अलग से डाउनलोड किया जाता है. आम तौर पर, अगर किसी उपयोगकर्ता ने पहले से मौजूद एपीआई के साथ पहले ही इंटरैक्ट कर लिया है, तो उसने अपने ब्राउज़र में मॉडल डाउनलोड कर लिया है.

यह पता लगाने के लिए कि मॉडल इस्तेमाल के लिए तैयार है या नहीं, असाइनोक्रोनस Writer.availability() फ़ंक्शन को कॉल करें. यह एक स्ट्रिंग दिखाता है, जिसमें चार संभावित वैल्यू हो सकती हैं:

  • unavailable: ब्राउज़र में Writer API काम करता है, लेकिन फ़िलहाल इसका इस्तेमाल नहीं किया जा सकता. ऐसा कई वजहों से हो सकता है. जैसे, मॉडल डाउनलोड करने के लिए डिस्क में जगह न होना.
  • available: ब्राउज़र, Writer API के साथ काम करता है और इसका इस्तेमाल तुरंत किया जा सकता है.
  • downloadable: ब्राउज़र, Writer API के साथ काम करता है. हालांकि, इसके लिए उसे पहले मॉडल डाउनलोड करना होगा.
  • downloading: ब्राउज़र, Writer API के साथ काम करता है और फ़िलहाल मॉडल डाउनलोड कर रहा है.

मॉडल डाउनलोड करने और लेखक को शुरू करने के लिए, Writer.create() फ़ंक्शन को कॉल करें. अगर availability() के लिए जवाब downloadable था, तो डाउनलोड की प्रोग्रेस सुनें और उपयोगकर्ता को बताएं, क्योंकि डाउनलोड में समय लग सकता है.

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

एपीआई फ़ंक्शन

create() फ़ंक्शन की मदद से, नया लेखक ऑब्जेक्ट कॉन्फ़िगर किया जा सकता है. यह इन पैरामीटर के साथ, वैकल्पिक options ऑब्जेक्ट लेता है:

  • tone: लिखने के तरीके से, कॉन्टेंट के स्टाइल, किरदार या नज़रिए का पता चलता है. वैल्यू को formal, neutral (डिफ़ॉल्ट) या casual पर सेट किया जा सकता है.
  • format: आउटपुट फ़ॉर्मैटिंग, जिसमें markdown (डिफ़ॉल्ट) और plain-text वैल्यू इस्तेमाल की जा सकती हैं.
  • length: आउटपुट की लंबाई. इसके लिए, short, medium (डिफ़ॉल्ट), और long वैल्यू का इस्तेमाल किया जा सकता है.
  • sharedContext: एक से ज़्यादा आउटपुट लिखते समय, शेयर किए गए कॉन्टेक्स्ट से मॉडल को आपकी उम्मीदों के मुताबिक कॉन्टेंट बनाने में मदद मिल सकती है.

यहां दिए गए उदाहरण में, 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);
  });
}

लिखना शुरू करें

मॉडल से लिखाई को आउटपुट करने के दो तरीके हैं: नॉन-स्ट्रीमिंग और स्ट्रीमिंग.

नॉन-स्ट्रीमिंग आउटपुट

नॉन-स्ट्रीमिंग राइटिंग में, मॉडल पूरे इनपुट को प्रोसेस करता है और फिर आउटपुट जनरेट करता है.

नॉन-स्ट्रीमिंग आउटपुट पाने के लिए, एसिंक्रोनस write() फ़ंक्शन को कॉल करें. आपको जिस कॉन्टेंट को लिखवाना है उसके लिए प्रॉम्प्ट देना ज़रूरी है. मॉडल के बैकग्राउंड की जानकारी देने के लिए, वैकल्पिक रूप से context जोड़ा जा सकता है. इससे मॉडल को आउटपुट के लिए आपकी उम्मीदों को बेहतर तरीके से पूरा करने में मदद मिल सकती है.

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

लिखने की सुविधा का आउटपुट स्ट्रीम करना

स्ट्रीमिंग की सुविधा से, रीयल-टाइम में नतीजे मिलते हैं. इनपुट जोड़ने और उसमें बदलाव करने पर, आउटपुट लगातार अपडेट होता रहता है.

स्ट्रीमिंग राइटर पाने के लिए, writeStreaming() फ़ंक्शन को कॉल करें और स्ट्रीम में टेक्स्ट के उपलब्ध सेगमेंट पर बार-बार जाएं. मॉडल के बैकग्राउंड की जानकारी देने के लिए, वैकल्पिक रूप से context जोड़ा जा सकता है. इससे मॉडल को आउटपुट के लिए आपकी उम्मीदों को बेहतर तरीके से पूरा करने में मदद मिल सकती है.

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

एक से ज़्यादा टास्क के लिए कॉन्टेक्स्ट शेयर करना

एक से ज़्यादा कॉन्टेंट जनरेट करने के लिए, writer का इस्तेमाल किया जा सकता है. इस मामले में, sharedContext जोड़ना मददगार होता है. उदाहरण के लिए, हो सकता है कि आप समीक्षकों को टिप्पणियों में बेहतर सुझाव देने में मदद करना चाहें.

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

किसी राइटर का फिर से इस्तेमाल करना

एक ही लेखक का इस्तेमाल करके, कई तरह का कॉन्टेंट बनाया जा सकता है.

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

लेखक को रोकना

लिखने की प्रोसेस खत्म करने के लिए, कंट्रोलर को बंद करें और लेखक को नष्ट करें.

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

डेमो

दर्शकों से जुड़ना और सुझाव/राय देना या शिकायत करना

Writer और Rewriter API के बारे में फ़िलहाल चर्चा की जा रही है. साथ ही, आने वाले समय में इनमें बदलाव हो सकता है. अगर आपने इस एपीआई को आज़माया है और आपका कोई सुझाव, शिकायत या राय है, तो हमें बताएं.

ब्राउज़र में पहले से मौजूद एआई एपीआई के बारे में जानें. इनमें Gemini Nano और अन्य एक्सपर्ट मॉडल शामिल हैं.