प्रॉम्प्ट एपीआई के लिए एक्सपेरिमेंटल पॉलीफ़िल

पब्लिश होने की तारीख: 14 मई, 2026

Chrome में मौजूद Prompt API की मदद से, window.LanguageModel पर हाई-लेवल ब्राउज़र एपीआई का इस्तेमाल करके, एलएलएम से इंटरैक्ट किया जा सकता है. हालांकि, अब भी इसके लिए सीमित सहायता उपलब्ध है और इसे लागू करना एक मुश्किल प्रोसेस है.

ब्राउज़र काम करने वाले ओएस ओएस काम नहीं कर रहा है स्थिति
Chrome Windows, macOS, Linux, ChromeOS (Chromebook Plus) Android, iOS ✅ काम करता है
Edge Windows, macOS Android, iOS ✅ काम करता है
Safari 📋 पोज़िशन तय की गई
Firefox 📋 पोज़िशन तय की गई

वहीं, अर्ली प्रीव्यू प्रोग्राम में शामिल डेवलपर ने Prompt API के लिए अपनी दिलचस्पी दिखाई है. API की उपलब्धता की वजह से, आने वाले समय में इसके साथ काम करने वाले ऐप्लिकेशन बनाने में समस्या आ सकती है.

समाधान

इसलिए, हम एक्सपेरिमेंट के तौर पर स्पेसिफ़िकेशन के मुताबिक Prompt API polyfill रिलीज़ कर रहे हैं. इसे GitHub पर सोर्स कोड में देखा जा सकता है. यह कॉन्फ़िगर किए जा सकने वाले क्लाउड बैकएंड प्रोवाइडर के साथ-साथ Transformers.js के तौर पर लोकल बैकएंड प्रोवाइडर पर भी Prompt API को सटीक तरीके से लागू करता है.

पॉलीफ़िल का इस्तेमाल करना

पॉलीफ़िल का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. npm से पॉलीफ़िल डाउनलोड करें:

    npm install prompt-api-polyfill
    
  2. चुनें कि आपको क्लाउड बैकएंड सेवा देने वाली कंपनी का इस्तेमाल करना है या लोकल बैकएंड सेवा देने वाली कंपनी का:

    • क्लाउड बैकएंड सेवा देने वाली कंपनी: उपयोगकर्ता के डेटा को रिमोट प्रोसेसिंग के लिए क्लाउड पर भेजा जाता है. हालांकि, आपको लोकल मॉडल के उपलब्ध होने का इंतज़ार नहीं करना पड़ता. आपको क्लाउड सेवा देने वाली कंपनी की कीमत से जुड़ी जानकारी के मुताबिक, शुल्क चुकाना होगा.
    • लोकल बैकएंड सेवा देने वाली कंपनी: उपयोगकर्ता का डेटा ब्राउज़र में सेव रहता है और इसे स्थानीय तौर पर प्रोसेस किया जाता है. हालांकि, आपको एक मॉडल डाउनलोड करना होगा. इसे अलग-अलग ऑरिजिन के साथ शेयर नहीं किया जा सकता. ऐसा, Prompt API के साथ किया जा सकता है. डेटा को स्थानीय तौर पर प्रोसेस करने के लिए कोई शुल्क नहीं लिया जाता.

क्लाउड बैकएंड

क्लाउड बैकएंड में से कोई एक चुनें और बैकएंड सेवा देने वाली कंपनी से एपीआई पासकोड (और कोई अन्य क्रेडेंशियल) पाएं.

एपीआई कुंजी मिलने के बाद, कॉन्फ़िगरेशन फ़ाइल .env.json में जानकारी डालें. अगर आपने modelName तय नहीं किया है, तो पॉलीफ़िल हर बैकएंड के डिफ़ॉल्ट मॉडल का इस्तेमाल करेगा. हालांकि, ऐसा करने पर हर बैकएंड के लिए, इस्तेमाल किए जा सकने वाले मॉडल में से किसी एक को चुना जा सकता है.

{
  "apiKey": "y0ur-Api-k3Y",
  "modelName": "model-name"
}

लोकल बैकएंड

अगर आपको Transformers.js पर आधारित लोकल बैकएंड प्रोवाइडर का इस्तेमाल करना है, तो आपको सिर्फ़ डमी एपीआई कुंजी की ज़रूरत होगी. हालांकि, यह कॉन्फ़िगर किया जा सकता है कि Transformers.js को किस डिवाइस का इस्तेमाल करना चाहिए. बेहतरीन परफ़ॉर्मेंस के लिए "webgpu" और ज़्यादा से ज़्यादा डिवाइसों के साथ काम करने के लिए "wasm" को चुनें. आपके पास डिफ़ॉल्ट सेटिंग बदलने का विकल्प होता है. Hugging Face के कैटलॉग में मौजूद, इस्तेमाल किए जा सकने वाले मॉडल में से कोई दूसरा मॉडल चुनें. कुछ मॉडल के लिए, dtype पैरामीटर का इस्तेमाल करके अलग-अलग क्वानटाइज़ेशन चुने जा सकते हैं.

{
  "apiKey": "dummy",
  "device": "webgpu",
  "dtype": "q4f16",
  "modelName": "onnx-community/gemma-3-1b-it-ONNX-GQA"
};

अपने पॉलीफ़िल को कॉन्फ़िगर करना

कॉन्फ़िगरेशन फ़ाइल को सही जगह पर रखने के बाद, अब अपने ऐप्लिकेशन में पॉलीफ़िल का इस्तेमाल शुरू किया जा सकता है.

  1. कॉन्फ़िगरेशन फ़ाइल इंपोर्ट करें और उसे सही नाम वाले ग्लोबल वैरिएबल को असाइन करें. यहां $BACKEND आपका चुना हुआ बैकएंड है: window.$BACKEND_CONFIG.
  2. डाइनैमिक इंपोर्ट का इस्तेमाल करके, पॉलीफ़िल को सिर्फ़ तब लोड करें, जब ब्राउज़र इसे सपोर्ट न करता हो.
  3. Prompt API फ़ंक्शन को कॉल करें.
import config from './.env.json' with { type: 'json' };

// Set $BACKEND_CONFIG to select a backend
window.$BACKEND_CONFIG = config;

if (!('LanguageModel' in window)) {
  await import('prompt-api-polyfill');
}

const session = await LanguageModel.create({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});
await session.prompt('Tell me a joke!');

पॉलीफ़िल, स्ट्रक्चर्ड आउटपुट के साथ काम करता है. हालांकि, Transformers.js बैकएंड के साथ काम नहीं करता. यह टेक्स्ट, इमेज, और वीडियो वगैरह का इस्तेमाल करके दिए गए इनपुट के साथ काम करता है. हालांकि, OpenAI बैकएंड के साथ काम नहीं करता, क्योंकि यह ऑडियो और इमेज को एक साथ इस्तेमाल करने की सुविधा नहीं देता. यह सिर्फ़ अलग-अलग इस्तेमाल किया जा सकता है. साथ ही, इसकी जांच LanguageModel के लिए, Web Platform Tests की पूरी सुइट के हिसाब से की गई है.

ज़्यादा जानकारी, इस्तेमाल करने के बारे में पूरी जानकारी, और सोर्स कोड के लिए, GitHub रिपॉज़िटरी में मौजूद README फ़ाइल देखें.

ब्राउज़र के प्रॉम्प्ट एपीआई से अंतर

अगर पॉलीफ़िल को क्लाउड मॉडल से मदद मिलती है, तो क्लाइंट-साइड पर चलने के कुछ फ़ायदे अब लागू नहीं होते. इसका मतलब है कि अब संवेदनशील डेटा को स्थानीय तौर पर प्रोसेस करने की गारंटी नहीं दी जा सकती. हालांकि, बैकएंड की सेवा देने वाली कंपनी की निजता नीतियां अब भी लागू होंगी. उपयोगकर्ता के ऑफ़लाइन होने पर, आपका ऐप्लिकेशन एआई का इस्तेमाल नहीं कर पाएगा. आपके डिवाइस के ऑनलाइन या ऑफ़लाइन होने का पता लगाने के लिए, इससे जुड़े इवेंट सुने जा सकते हैं.

window.addEventListener("offline", (e) => {
  console.log("offline");
});

window.addEventListener("online", (e) => {
  console.log("online");
});

अगर एआई इन्फ़रेंस, क्लाउड में मौजूद किसी मॉडल के हिसाब से काम करता है, तो डाउनलोड करने के लिए कोई लोकल मॉडल नहीं होता है. पॉलीफ़िल, downloadprogress इवेंट को फ़ेक करता है. इसलिए, आपके ऐप्लिकेशन को ऐसा लगेगा कि बिल्ट-इन मॉडल पहले ही डाउनलोड हो चुका है. इसका मतलब है कि दो इवेंट होंगे. एक में loaded की वैल्यू 0 होगी और दूसरे में 1 होगी. स्पेसिफ़िकेशन के मुताबिक, ऐसा होना ज़रूरी है.

उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के मुकाबले, क्लाउड पर अनुमान लगाने की सुविधा में, अपनी पसंद के बैकएंड प्रोवाइडर से एपीआई कॉल करने पर कुछ शुल्क लग सकता है. कीमत की जानकारी देखें. जैसे, Gemini API के लिए कीमत की जानकारी. अगर आपको हर टोकन की कीमत पता है, तो कीमत का हिसाब लगाने के लिए, Prompt API की contextUsage जानकारी का इस्तेमाल किया जा सकता है.

const COST_PER_TOKEN = 123;
const COST_LIMIT = 456;

let costSoFar = 0;

const session = await LanguageModel.create(options);

/…/

if (costSoFar < COST_LIMIT) {
  await session.prompt('Tell me a joke.');
  costSoFar = session.contextUsage * COST_PER_TOKEN;
} else {
  // Show premium AI plan promo.
}

जब किसी मोबाइल या वेब ऐप्लिकेशन से सीधे तौर पर क्लाउड एपीआई को कॉल किया जाता है (उदाहरण के लिए, जनरेटिव एआई मॉडल को ऐक्सेस करने की अनुमति देने वाले एपीआई), तो एपीआई पासकोड का गलत इस्तेमाल किया जा सकता है. ऐसा उन क्लाइंट के ज़रिए किया जा सकता है जिनके पास एपीआई पासकोड का ऐक्सेस नहीं है. इन एपीआई को सुरक्षित रखने के लिए, अगर Firebase AI Logic Hybrid SDK का इस्तेमाल किया जाता है, तो आपको Firebase App Check का इस्तेमाल करना चाहिए. इससे यह पुष्टि की जा सकेगी कि एपीआई के सभी अनुरोध आपके असल ऐप्लिकेशन से किए गए हैं. Google जैसे कुछ क्लाउड सेवा देने वाली कंपनियों के साथ, ओरिजिन की सख्त जांच भी लागू की जा सकती है. इससे यह पक्का किया जा सकेगा कि सिर्फ़ अनुमति वाली वेबसाइटें ही एपीआई का इस्तेमाल कर सकती हैं.

उदाहरण के लिए, सेशन के contextWindow के बारे में, Prompt API की सीमाओं के बजाय, बैकएंड सेवा देने वाली कंपनी की सीमाएं लागू होती हैं. contextWindow के लिए, ये सीमाएं आम तौर पर उपयोगकर्ता के डिवाइस पर मौजूद सीमाओं से काफ़ी ज़्यादा होती हैं. साथ ही, क्लाउड में ज़्यादा डेटा प्रोसेस किया जा सकता है. इसलिए, आपको इस अंतर के बारे में पता होना चाहिए. हालांकि, व्यवहार में आपको इससे जुड़ी समस्याओं का सामना नहीं करना पड़ेगा.

अपना बैकएंड बनाना

बैकएंड सेवा देने वाली अपनी कंपनी जोड़ने के लिए, यह तरीका अपनाएं:

बेस बैकएंड क्लास को बढ़ाना

backends/ डायरेक्ट्री में नई फ़ाइल बनाएं. उदाहरण के लिए, backends/custom-backend.js. आपको PolyfillBackend क्लास को एक्सटेंड करना होगा. साथ ही, उन मुख्य तरीकों को लागू करना होगा जो ज़रूरी इंटरफ़ेस की शर्तों को पूरा करते हैं.

import PolyfillBackend from './base.js';
import { DEFAULT_MODELS } from './defaults.js';

export default class CustomBackend extends PolyfillBackend {
  constructor(config) {
    // config typically comes from a window global (e.g., window.CUSTOM_CONFIG)
    super(config.modelName || DEFAULT_MODELS.custom.modelName);
  }

  // Check if the backend is configured (e.g., API key is present), if given
  // combinations of modelName and options are supported, or, for local model,
  // if the model is available.
  static availability(options) {
    return window.CUSTOM_CONFIG?.apiKey ? 'available' : 'unavailable';
  }

  // Initialize the underlying SDK or API client. With local models, use
  // monitorTarget to report model download progress to the polyfill.
  createSession(options, sessionParams, monitorTarget) {
    // Return the initialized session or client instance
  }

  // Non-streaming prompt execution
  async generateContent(contents) {
    // contents: Array of { role: 'user'|'model', parts: [{ text: string }] }
    // Return: { text: string, usage: number }
  }

  // Streaming prompt execution
  async generateContentStream(contents) {
    // Return: AsyncIterable yielding chunks
  }

  // Token counting for quota/usage tracking
  async countTokens(contents) {
    // Return: total token count (number)
  }
}

अपने बैकएंड को रजिस्टर करना

पॉलीफ़िल, ग्लोबल कॉन्फ़िगरेशन के आधार पर "पहली मैचिंग को प्राथमिकता" रणनीति का इस्तेमाल करता है. आपको अपने बैकएंड को prompt-api-polyfill.js फ़ाइल में रजिस्टर करना होगा. इसके लिए, आपको इसे स्टैटिक #backends ऐरे में जोड़ना होगा:

// prompt-api-polyfill.js
static #backends = [
  // ... existing backends
  {
    config: 'CUSTOM_CONFIG', // The global object to look for on `window`
    path: './backends/custom-backend.js',
  },
];

डिफ़ॉल्ट मॉडल सेट करना

backends/defaults.js में फ़ॉलबैक मॉडल की पहचान तय करें. इस कुकी का इस्तेमाल तब किया जाता है, जब कोई उपयोगकर्ता किसी सेशन को शुरू करता है, लेकिन किसी खास modelName के बारे में नहीं बताता.

// backends/defaults.js
export const DEFAULT_MODELS = {
  // ...
  custom: 'custom-model-pro-v1',
};

लोकल डेवलपमेंट और टेस्टिंग की सुविधा चालू करना

यह प्रोजेक्ट, टेस्ट मैट्रिक्स जनरेट करने के लिए डिस्कवरी स्क्रिप्ट (scripts/list-backends.js) का इस्तेमाल करता है. अपने नए बैकएंड को टेस्ट रनर में शामिल करने के लिए, रूट डायरेक्ट्री में .env-[name].json फ़ाइल बनाएं. उदाहरण के लिए, .env-custom.json:

{
  "apiKey": "your-api-key-here",
  "modelName": "custom-model-pro-v1"
}

वेब प्लैटफ़ॉर्म टेस्ट (डब्ल्यूपीटी) से पुष्टि करना

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

npm run test:wpt

पुष्टि करने के इस चरण से यह पक्का होता है कि आपका बैकएंड, AbortSignal, सिस्टम प्रॉम्प्ट, और इतिहास को फ़ॉर्मैट करने जैसी चीज़ों को ठीक उसी तरह से हैंडल करता है जिस तरह से Prompt API की खास जानकारी में बताया गया है.

नतीजा

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

Prompt API के साथ काम करने वाले डिवाइसों पर, पॉलीफ़िल लोड नहीं होता. इसलिए, आपके उपयोगकर्ताओं को ऐसा कोड डाउनलोड करने की ज़रूरत नहीं पड़ती जिसे वे एक्ज़ीक्यूट नहीं करेंगे. अगर आपको कोई सुझाव/राय देनी है या शिकायत करनी है या आपको कोई गड़बड़ी मिलती है, तो GitHub पर गड़बड़ी की शिकायत करें. प्रॉम्प्ट लिखने का आनंद लें!

इन्हें भी देखें

पहले से मौजूद एआई टास्क एपीआई के लिए एक्सपेरिमेंटल पॉलीफ़िल