पब्लिश होने की तारीख: 22 अक्टूबर, 2025
| ज़्यादा जानकारी देने वाला वीडियो | वेब | एक्सटेंशन | Chrome स्टेटस | मकसद |
|---|---|---|---|---|
| GitHub | देखें | एक्सपेरिमेंट करने का मकसद |
Rewriter API की मदद से, टेक्स्ट में बदलाव किया जा सकता है और उसे फिर से लिखा जा सकता है. यह एपीआई और the Writer API, the Writing Assistance APIs proposal का हिस्सा हैं.
इन एपीआई की मदद से, उपयोगकर्ताओं के बनाए गए कॉन्टेंट को बेहतर बनाया जा सकता है.
इस्तेमाल के उदाहरण
मौजूदा टेक्स्ट को छोटा या बड़ा करके या उसकी टोन बदलकर, उसे बेहतर बनाया जा सकता है. उदाहरण के लिए, ये काम किए जा सकते हैंः
- किसी छोटे ईमेल को फिर से लिखें, ताकि वह ज़्यादा विनम्र और औपचारिक लगे.
- ग्राहक की समीक्षाओं में बदलाव के सुझाव दें, ताकि अन्य ग्राहकों को फ़ीडबैक समझने में मदद मिले या आपत्तिजनक कॉन्टेंट हटाया जा सके.
- कॉन्टेंट को इस तरह फ़ॉर्मैट करें कि वह कुछ खास ऑडियंस की उम्मीदों पर खरा उतरे.
क्या आपके इस्तेमाल का उदाहरण यहां मौजूद नहीं है? अपना फ़ीडबैक शेयर करने के लिए, अर्ली प्रीव्यू प्रोग्राम में शामिल हों.
शुरू करें
Rewriter API के ऑरिजिन ट्रायल में शामिल हों, यह Chrome के 137 से 148 वर्शन में उपलब्ध है.
हार्डवेयर से जुड़ी ज़रूरी शर्तें देखें
डेवलपर और Chrome में इन एपीआई का इस्तेमाल करके सुविधाओं को चलाने वाले उपयोगकर्ताओं के लिए, ये ज़रूरी शर्तें लागू होती हैं. अन्य ब्राउज़र में, ऑपरेटिंग सिस्टम से जुड़ी अलग-अलग ज़रूरी शर्तें हो सकती हैं.
Language Detector और Translator APIs , Chrome के डेस्कटॉप वर्शन पर काम करते हैं. ये एपीआई, फ़ोन या टैबलेट पर काम नहीं करते.
Prompt API, Summarizer API, Writer API, Rewriter API, और Proofreader API Chrome में तब काम करते हैं, जब ये शर्तें पूरी होती हैं:
- ऑपरेटिंग सिस्टम: Windows 10 या 11; macOS 13 और इसके बाद के वर्शन (Ventura और इसके बाद के वर्शन); Linux; या Chromebook Plus डिवाइसों पर ChromeOS (प्लेटफ़ॉर्म 16389.0.0 और इसके बाद के वर्शन). Gemini Nano का इस्तेमाल करने वाले एपीआई, फ़िलहाल Android के लिए Chrome, iOS, और ChromeOS वर्शन पर काम नहीं करते ये वर्शन, Chromebook Plus डिवाइसों के अलावा अन्य डिवाइसों पर उपलब्ध हैं.
- स्टोरेज: Chrome प्रोफ़ाइल वाले वॉल्यूम पर कम से कम 22 जीबी खाली जगह.
- जीपीयू या सीपीयू: पहले से मौजूद मॉडल, जीपीयू या सीपीयू के साथ काम कर सकते हैं.
- जीपीयू: वीआरएएम चार जीबी से ज़्यादा होना चाहिए.
- सीपीयू: रैम 16 जीबी या उससे ज़्यादा होनी चाहिए. साथ ही, सीपीयू कोर चार या उससे ज़्यादा होने चाहिए.
- ध्यान दें: ऑडियो इनपुट के साथ Prompt API का इस्तेमाल करने के लिए, जीपीयू की ज़रूरत होती है.
- नेटवर्क: अनलिमिटेड डेटा या ऐसा कनेक्शन जिस पर डेटा इस्तेमाल की कोई सीमा नहीं है. आम तौर पर, वाई-फ़ाई और ईथरनेट कनेक्शन पर डेटा से जुड़ी पाबंदी नहीं लगी होती . वहीं, सेल्युलर कनेक्शन पर अक्सर डेटा से जुड़ी पाबंदी लगी होती है.
ब्राउज़र, मॉडल को अपडेट करता रहता है. इसलिए, Gemini Nano का सटीक साइज़ अलग-अलग हो सकता है. मौजूदा साइज़ जानने के लिए, chrome://on-device-internals पर जाएं.
ऑरिजिन ट्रायल के लिए साइन अप करना
Rewriter API, Writer API के साथ मिलकर ऑरिजिन ट्रायल में उपलब्ध है. इन एपीआई का इस्तेमाल शुरू करने के लिए:
- Rewriter API के ऑरिजिन ट्रायल पर जाएं.
- रजिस्टर करें पर क्लिक करें और फ़ॉर्म भरें. वेब ऑरिजिन फ़ील्ड में, अपना ऑरिजिन या एक्सटेंशन आईडी,
chrome-extension://YOUR_EXTENSION_IDडालें. - सबमिट करने के लिए, रजिस्टर करें पर क्लिक करें.
- दिए गए टोकन को कॉपी करें और इसे अपने ऑरिजिन के हर ऐसे वेब पेज में जोड़ें जो ऑरिजिन ट्रायल में शामिल है. इसके अलावा, इसे अपने एक्सटेंशन के मेनिफ़ेस्ट में शामिल करें.
- Rewriter API का इस्तेमाल शुरू करें.
ऑरिजिन ट्रायल का इस्तेमाल शुरू करने के तरीके के बारे में ज़्यादा जानें.
लोकल होस्ट के लिए सहायता जोड़ना
लोकल होस्ट पर Rewriter 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 को रीस्टार्ट करें.
Rewriter API का इस्तेमाल करना
सबसे पहले, फ़ीचर की पहचान करने की सुविधा चलाएं, ताकि यह पता चल सके कि ब्राउज़र इन एपीआई के साथ काम करता है या नहीं.
if ('Rewriter' in self) {
// The Rewriter API is supported.
}
Rewriter API और पहले से मौजूद अन्य सभी एआई एपीआई, ब्राउज़र में इंटिग्रेट किए जाते हैं. जब कोई वेबसाइट, पहले से मौजूद किसी एआई एपीआई का इस्तेमाल पहली बार करती है, तो Gemini Nano को अलग से डाउनलोड किया जाता है. अगर किसी उपयोगकर्ता ने पहले से मौजूद किसी एपीआई के साथ इंटरैक्ट किया है, तो इसका मतलब है कि उसने अपने ब्राउज़र में मॉडल डाउनलोड कर लिया है.
यह पता लगाने के लिए कि मॉडल इस्तेमाल के लिए तैयार है या नहीं, एसिंक्रोनस
Rewriter.availability() फ़ंक्शन को कॉल करें.
अगर availability() का जवाब downloadable था, तो डाउनलोड की प्रोसेस पर नज़र रखें और उपयोगकर्ता को इसकी जानकारी दें, क्योंकि डाउनलोड होने में समय लग सकता है.
const availability = await Rewriter.availability();
मॉडल डाउनलोड करने और Rewriter को शुरू करने के लिए, उपयोगकर्ता के ऐक्टिवेशन
की जांच करें और Rewriter.create() फ़ंक्शन को कॉल करें.
const rewriter = await Rewriter.create({
monitor(m) {
m.addEventListener("downloadprogress", e => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
}
});
एपीआई फ़ंक्शन
create() फ़ंक्शन की मदद से, नया Rewriter ऑब्जेक्ट कॉन्फ़िगर किया जा सकता है. यह एक वैकल्पिक options ऑब्जेक्ट लेता है, जिसमें ये पैरामीटर होते हैं:
tone: लिखने की टोन कॉन्टेंट की स्टाइल, उसके किरदार या रवैये को दिखा सकती है. इसकी वैल्यूmore-formal,as-is(डिफ़ॉल्ट) याmore-casualपर सेट की जा सकती है.format: आउटपुट का फ़ॉर्मैट, जिसकी मान्य वैल्यूas-is(डिफ़ॉल्ट),markdownऔरplain-textहैं.length: आउटपुट की लंबाई, जिसकी मान्य वैल्यूshorter,as-is(डिफ़ॉल्ट) औरlongerहैं.sharedContext: एक से ज़्यादा कॉन्टेंट को फिर से लिखते समय, शेयर किए गए कॉन्टेक्स्ट की मदद से, मॉडल ऐसा कॉन्टेंट बना सकता है जो आपकी उम्मीदों के मुताबिक हो.
यहां दिए गए उदाहरण में, rewriter ऑब्जेक्ट को शुरू करने का तरीका बताया गया है:
const options = {
sharedContext: 'This is an email to acquaintances about an upcoming event.',
tone: 'more-casual',
format: 'plain-text',
length: 'shorter',
};
const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
// The Rewriter API isn't usable.
return;
}
if (available === 'available') {
// The Rewriter API can be used immediately .
rewriter = await Rewriter.create(options);
} else {
// The Rewriter can be used after the model is downloaded.
rewriter = await Rewriter.create(options);
rewriter.addEventListener('downloadprogress', (e) => {
console.log(e.loaded, e.total);
});
}
उम्मीद के मुताबिक भाषाएं असाइन करना
Rewriter API कई भाषाओं में उपलब्ध है. अपना सेशन बनाते समय, इनपुट, आउटपुट, और कॉन्टेक्स्ट की भाषाएं सेट करें. इससे ब्राउज़र, अनुरोध को अस्वीकार कर सकता है. ऐसा तब होता है, जब ब्राउज़र, भाषाओं के किसी खास कॉम्बिनेशन के साथ काम नहीं कर पाता.
const rewriter = await Rewriter.create({
tone: "more-formal",
expectedInputLanguages: ["en", "ja", "es"],
expectedContextLanguages: ["en", "ja", "es"],
outputLanguage: "es",
sharedContext: "These are requests to rewrite 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."
});
फिर से लिखना शुरू करना
मॉडल से कॉन्टेंट का आउटपुट पाने के दो तरीके हैं: अनुरोध के आधार पर आउटपुट और स्ट्रीमिंग.
अनुरोध के आधार पर आउटपुट
अनुरोध के आधार पर आउटपुट (या "नॉन-स्ट्रीमिंग") के लिए, मॉडल पूरे इनपुट के जनरेट होने का इंतज़ार करता है. इसके बाद, उस इनपुट को एक साथ प्रोसेस करता है और फिर आउटपुट जनरेट करता है.
अनुरोध के आधार पर आउटपुट पाने के लिए, एसिंक्रोनस rewrite() फ़ंक्शन को कॉल करें. आपको वह शुरुआती टेक्स्ट शामिल करना होगा जिसे फिर से लिखना है. मॉडल को बैकग्राउंड की जानकारी देने के लिए, एक वैकल्पिक context जोड़ा जा सकता है. इससे मॉडल को आउटपुट के लिए आपकी उम्मीदों को बेहतर तरीके से पूरा करने में मदद मिल सकती है.
// Request-based
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible."
});
स्ट्रीमिंग के ज़रिए Rewriter का आउटपुट पाना
स्ट्रीमिंग से रीयल टाइम में नतीजे मिलते हैं. इनपुट जोड़ने और उसमें बदलाव करने पर, आउटपुट लगातार अपडेट होता रहता है.
स्ट्रीमिंग के ज़रिए Rewriter का आउटपुट पाने के लिए, rewriteStreaming() फ़ंक्शन को कॉल करें और स्ट्रीम में टेक्स्ट के उपलब्ध सेगमेंट पर इटरेट करें. मॉडल को बैकग्राउंड की जानकारी देने के लिए, एक वैकल्पिक context जोड़ा जा सकता है. इससे मॉडल को आउटपुट के लिए आपकी उम्मीदों को बेहतर तरीके से पूरा करने में मदद मिल सकती है.
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
});
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
एक से ज़्यादा टास्क के लिए कॉन्टेक्स्ट शेयर करना
आपके पास rewriter का इस्तेमाल करके, एक से ज़्यादा कॉन्टेंट जनरेट करने का विकल्प होता है. ऐसे में, sharedContext जोड़ना काम का हो सकता है. उदाहरण के लिए, समीक्षा करने वालों को टिप्पणियों में बेहतर फ़ीडबैक देने में मदद की जा सकती है.
// Shared context and per writing task context
const rewriter = await Rewriter.create({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});
const stream = rewriter.rewriteStreaming(
"Love all this work on generative AI at Google! 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.",
tone: "more-casual",
}
);
for await (const chunk of stream) {
composeTextbox.append(chunk);
}
किसी Rewriter का फिर से इस्तेमाल करना
एक से ज़्यादा कॉन्टेंट में बदलाव करने के लिए, एक ही Rewriter का इस्तेमाल किया जा सकता है. यह तब ज़्यादा काम का हो सकता है, जब Rewriter को फ़ीडबैक या टिप्पणी करने वाले टूल में जोड़ा जाता है. इससे लेखकों को काम का और मददगार फ़ीडबैक देने में मदद मिलती है.
// Reusing a rewriter
const rewriter = await Rewriter.create({
sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const rewrittenReviews = await Promise.all(
Array.from(
document.querySelectorAll("#reviews > .review"),
(reviewEl) => rewriter.rewrite(reviewEl.textContent, {
context: "Avoid any toxic language and be as constructive as possible.",
tone: "more-casual",
})
),
);
Rewriter को बंद करना
फिर से लिखने की प्रोसेस को खत्म करने के लिए, कंट्रोलर को रद्द करें और rewriter को बंद करें.
// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });
// Destroy a rewriter
rewriter.destroy();
डेमो
अनुमति से जुड़ी नीति, iframe, और वेब वर्कर
डिफ़ॉल्ट रूप से, Rewriter 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 Rewriter API by
setting the `allow="rewriter"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="rewriter"></iframe>
Rewriter API, वेब वर्कर में उपलब्ध नहीं है. ऐसा इसलिए है, क्योंकि अनुमति से जुड़ी नीति के स्टेटस की जांच करने के लिए, हर वर्कर के लिए ज़िम्मेदार दस्तावेज़ बनाना मुश्किल होता है.
जुड़ें और फ़ीडबैक शेयर करें
Writer और Rewriter API पर फ़िलहाल चर्चा चल रही है. आने वाले समय में, इनमें बदलाव हो सकता है. अगर आपने इस एपीआई को आज़माया है और आपके पास कोई फ़ीडबैक है, तो हम उसे ज़रूर जानना चाहेंगे.
- ज़्यादा जानकारी देने वाला वीडियो देखें, सवाल पूछें, और चर्चा में शामिल हों.
- Chrome स्टेटस में Rewriter API के लागू होने की स्थिति देखने के लिए, उसकी समीक्षा करें.
- अगर आपके पास Chrome के लागू होने की स्थिति के बारे में कोई फ़ीडबैक है, तो Chromium में गड़बड़ी की शिकायत करें.
- नए एपीआई को सबसे पहले देखने और हमारी मेलिंग सूची का ऐक्सेस पाने के लिए, अर्ली प्रीव्यू प्रोग्राम में शामिल हों.
ब्राउज़र में, पहले से मौजूद सभी एआई एपीआई के बारे में जानें. इनमें Gemini Nano और अन्य एक्सपर्ट मॉडल शामिल हैं.