Writer API

पब्लिश होने की तारीख: 22 अक्टूबर, 2025

ज़्यादा जानकारी देने वाला वीडियो वेब एक्सटेंशन Chrome स्टेटस मकसद
GitHub डेवलपर के लिए बिना किसी शुल्क आज़माने की सुविधा डेवलपर के लिए मुफ़्त में आज़माने की सुविधा डेवलपर के लिए बिना किसी शुल्क आज़माने की सुविधा डेवलपर के लिए मुफ़्त में आज़माने की सुविधा देखें एक्सपेरिमेंट करने का मकसद

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

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

इस्तेमाल के उदाहरण

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

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

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

शुरू करें

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

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

Chrome में इन एपीआई का इस्तेमाल करके सुविधाएं चलाने वाले डेवलपर और उपयोगकर्ताओं के लिए, ये ज़रूरी शर्तें लागू होती हैं. अन्य ब्राउज़र में, ऑपरेटिंग से जुड़ी अलग-अलग ज़रूरी शर्तें हो सकती हैं.

Language Detector और Translator APIs , Chrome के डेस्कटॉप वर्शन पर काम करते हैं. ये एपीआई, फ़ोन या टैबलेट पर काम नहीं करते.

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

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

ब्राउज़र, मॉडल को अपडेट करता रहता है. इसलिए, Gemini Nano का सटीक साइज़ अलग-अलग हो सकता है. मौजूदा साइज़ जानने के लिए, chrome://on-device-internals पर जाएं.

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

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

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

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

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

लोकल होस्ट पर Writer API को ऐक्सेस करने के लिए, Chrome फ़्लैग का इस्तेमाल करें:

  1. chrome://flags/#optimization-guide-on-device-model को चालू है पर सेट करें.
  2. इन फ़्लैग को चालू है या कई भाषाओं में चालू है पर सेट करें:
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. फिर से लॉन्च करें पर क्लिक करें या Chrome को रीस्टार्ट करें.

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

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

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

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

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

const availability = await Writer.availability();

मॉडल डाउनलोड करने और राइटर को शुरू करने के लिए, उपयोगकर्ता के ऐक्टिवेशन की जांच करें और Writer.create() फ़ंक्शन को कॉल करें.

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

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

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

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

तय की गई भाषाएं असाइन करना

Writer API कई भाषाओं में उपलब्ध है. सेशन बनाते समय, तय की गई इनपुट और कॉन्टेक्स्ट की भाषाएं सेट करें. साथ ही, तय की गई आउटपुट की भाषा भी सेट करें. इससे ब्राउज़र, अनुरोध को अस्वीकार कर सकता है. ऐसा तब होता है, जब ब्राउज़र, भाषाओं के किसी खास कॉम्बिनेशन के साथ काम नहीं कर पाता.

const writer = await Writer.create({
  tone: "formal",
  expectedInputLanguages: ["en", "ja", "es"],
  expectedContextLanguages: ["en", "ja", "es"],
  outputLanguage: "es",
  sharedContext: "These are requests to write messages to teachers in a Spanish
    language program, by students who may speak Spanish, Japanese, or English.
    Staff expect questions to be written in Spanish."
});

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

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

अनुरोध के आधार पर आउटपुट

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

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

// Request-based
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(
  expectedInputLanguages: ["en"],
  expectedContextLanguages: ["en"],
  outputLanguage: "en",
);
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({
    expectedInputLanguages: ["en"],
    expectedContextLanguages: ["en"],
    outputLanguage: "en",
    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();

डेमो

अनुमति से जुड़ी नीति, iframe, और वेब वर्कर

डिफ़ॉल्ट रूप से, Writer API सिर्फ़ टॉप-लेवल विंडो और उनके सेम-ऑरिजिन iframe के लिए उपलब्ध है. अनुमति से जुड़ी नीति के allow="" एट्रिब्यूट का इस्तेमाल करके, क्रॉस-ऑरिजिन iframe को एपीआई का ऐक्सेस दिया जा सकता है:

<!--
  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, वेब वर्कर में उपलब्ध नहीं है. ऐसा इसलिए है, क्योंकि अनुमति से जुड़ी नीति की ऐप्लिकेशन की स्थिति की जांच करने के लिए, हर वर्कर के लिए ज़िम्मेदार दस्तावेज़ बनाना मुश्किल होता है.

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

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

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