पब्लिश होने की तारीख: 22 अक्टूबर, 2025
| ज़्यादा जानकारी | वेब | एक्सटेंशन | Chrome स्टेटस | मकसद |
|---|---|---|---|---|
| GitHub | देखें | एक्सपेरिमेंट करने का इरादा |
Writer API की मदद से, ऐसा नया कॉन्टेंट बनाया जा सकता है जो लिखने से जुड़े किसी टास्क के मुताबिक हो. Writer API और Rewriter API, Writing Assistance APIs proposal का हिस्सा हैं.
ये पार्टनर एपीआई, उपयोगकर्ताओं के बनाए गए कॉन्टेंट को बेहतर बनाने में आपकी मदद कर सकते हैं.
उपयोग के उदाहरण
अपने शुरुआती आइडिया और कॉन्टेक्स्ट के आधार पर नया कॉन्टेंट लिखें. इसका इस्तेमाल इन कामों के लिए किया जा सकता है:
- उपयोगकर्ताओं को किसी भी तरह का कॉन्टेंट लिखने में मदद करना. जैसे, समीक्षाएं, ब्लॉग पोस्ट या ईमेल.
- उपयोगकर्ताओं को सहायता पाने के लिए बेहतर अनुरोध लिखने में मदद करना.
- काम के सैंपल की सीरीज़ के लिए एक शुरुआती ड्राफ़्ट तैयार करो, ताकि कुछ खास कौशल को बेहतर तरीके से दिखाया जा सके.
क्या आपको इस्तेमाल का उदाहरण नहीं मिल रहा है? अपने सुझाव, शिकायत या राय देने के लिए, अर्ली प्रीव्यू प्रोग्राम में शामिल हों.
अपनी प्रोफ़ाइल बनाना शुरू करें
Chrome 137 से 148 में चल रहे Writer API के ऑरिजिन ट्रायल में शामिल हों.
हार्डवेयर से जुड़ी ज़रूरी शर्तें देखें
Chrome में इन एपीआई का इस्तेमाल करके सुविधाएं चलाने वाले डेवलपर और उपयोगकर्ताओं के लिए, ये ज़रूरी शर्तें लागू होती हैं. अन्य ब्राउज़र के लिए, ऑपरेटिंग सिस्टम की ज़रूरी शर्तें अलग-अलग हो सकती हैं.
Language Detector और Translator API, डेस्कटॉप पर Chrome में काम करते हैं. ये एपीआई, फ़ोन या टैबलेट पर काम नहीं करते. Prompt API, Summarizer API, Writer API, Rewriter API, और Proofreader API, Chrome में तब काम करते हैं, जब ये शर्तें पूरी होती हैं:
- ऑपरेटिंग सिस्टम: Windows 10 या 11; macOS 13+ (Ventura और इसके बाद के वर्शन); Linux; या Chromebook Plus डिवाइसों पर ChromeOS (Platform 16389.0.0 और इसके बाद के वर्शन). Gemini Nano का इस्तेमाल करने वाले एपीआई, फ़िलहाल Android, iOS, और Chromebook Plus के अलावा अन्य डिवाइसों पर ChromeOS के साथ काम नहीं करते.
- स्टोरेज: जिस वॉल्यूम में आपकी Chrome प्रोफ़ाइल है उसमें कम से कम 22 जीबी खाली जगह होनी चाहिए.
- जीपीयू या सीपीयू: बिल्ट-इन मॉडल, जीपीयू या सीपीयू के साथ काम कर सकते हैं.
- जीपीयू: इसमें कम से कम 4 जीबी वीआरएएम होना चाहिए.
- सीपीयू: 16 जीबी या इससे ज़्यादा रैम और चार या इससे ज़्यादा सीपीयू कोर.
- नेटवर्क: अनलिमिटेड डेटा या ऐसा कनेक्शन जिस पर डेटा से जुड़ी पाबंदी न हो.
ब्राउज़र के मॉडल को अपडेट करने पर, Gemini Nano का साइज़ बदल सकता है. मौजूदा साइज़ जानने के लिए, chrome://on-device-internals पर जाएं.
ऑरिजिन ट्रायल के लिए साइन अप करना
Writer API, Rewriter API के साथ मिलकर ऑरिजिन ट्रायल में उपलब्ध है. इन एपीआई का इस्तेमाल शुरू करने के लिए:
- Google के जनरेटिव एआई के इस्तेमाल से जुड़ी पाबंदी की नीति को स्वीकार करें.
- Writer API के ऑरिजिन ट्रायल पर जाएं.
- रजिस्टर करें पर क्लिक करें और फ़ॉर्म भरें. वेब ऑरिजिन फ़ील्ड में, अपना ऑरिजिन या एक्सटेंशन आईडी डालें
chrome-extension://YOUR_EXTENSION_ID. - सबमिट करने के लिए, रजिस्टर करें पर क्लिक करें.
- दिए गए टोकन को कॉपी करें और इसे अपने ऑरिजिन के हर वेब पेज पर जोड़ें. इसके अलावा, इसे अपने एक्सटेंशन मेनिफ़ेस्ट में भी शामिल किया जा सकता है.
- Writer और Rewriter API का इस्तेमाल शुरू करें.
ऑरिजिन ट्रायल का इस्तेमाल शुरू करने के बारे में ज़्यादा जानें.
लोकल होस्ट के लिए सहायता जोड़ें
लोकल होस्ट पर Writer API को ऐक्सेस करने के लिए, Chrome फ़्लैग का इस्तेमाल करें:
chrome://flags/#optimization-guide-on-device-modelको चालू है पर सेट करें.- इन फ़्लैग को चालू है या एक से ज़्यादा भाषाओं में उपलब्ध है पर सेट करें:
chrome://flags/#prompt-api-for-gemini-nano-multimodal-inputchrome://flags/#writer-api-for-gemini-nano
- फिर से लॉन्च करें पर क्लिक करें या 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() फ़ंक्शन की मदद से, नया Writer ऑब्जेक्ट कॉन्फ़िगर किया जा सकता है. यह इन पैरामीटर के साथ, एक वैकल्पिक 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.
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 के लिए उपलब्ध होता है. एपीआई का ऐक्सेस, क्रॉस-ऑरिजिन iframe को सौंपा जा सकता है. इसके लिए, अनुमति से जुड़ी नीति allow="" एट्रिब्यूट का इस्तेमाल करें:
<!--
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 पर फ़िलहाल चर्चा चल रही है. इसलिए, आने वाले समय में इनमें बदलाव हो सकता है. अगर आपने इस एपीआई को आज़माया है और आपको कोई सुझाव/राय देनी है या शिकायत करनी है, तो हमें ज़रूर बताएं.
- एक्सप्लेनर पढ़ें, सवाल पूछें, और चर्चा में हिस्सा लें.
- Chrome में एपीआई को लागू करने से जुड़े अपडेट के लिए, Chrome की स्थिति देखें.
- अगर आपको Chrome में इस सुविधा को लागू करने के बारे में कोई सुझाव, शिकायत या राय देनी है, तो Chromium में गड़बड़ी की रिपोर्ट सबमिट करें.
- नए एपीआई की झलक पाने और हमारी मेलिंग लिस्ट का ऐक्सेस पाने के लिए, अर्ली प्रीव्यू प्रोग्राम में शामिल हों.
ब्राउज़र में, पहले से मौजूद एआई एपीआई के बारे में जानें. ये एपीआई, मॉडल का इस्तेमाल करते हैं. इनमें Gemini Nano और अन्य एक्सपर्ट मॉडल शामिल हैं.