Prompt API

पब्लिश होने की तारीख़: 20 मई, 2025, पिछली बार अपडेट किए जाने की तारीख़: 21 अक्टूबर, 2026

जानकारी देने वाला चिप वेब एक्सटेंशन Chrome स्टेटस मकसद
GitHub Chrome 148 Chrome 138 देखें शिप करने का इरादा
GitHub ऑरिजिन ट्रायल सैंपलिंग पैरामीटर के लिए ऑरिजिन ट्रायल Chrome 148 देखें एक्सपेरिमेंट करने का मकसद

Prompt API की मदद से, Chrome में मौजूद फ़ाउंडेशन मॉडल को नैचुरल लैंग्वेज में अनुरोध भेजे जा सकते हैं.

Prompt API का इस्तेमाल कई तरीकों से किया जा सकता है. उदाहरण के लिए, ये ऐप्लिकेशन बनाए जा सकते हैं:

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

ये तो बस कुछ उदाहरण हैं. हमें यह देखने का बेसब्री से इंतज़ार है कि आपने क्या बनाया है.

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

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 (प्लैटफ़ॉर्म 16389.0.0 और इसके बाद के वर्शन). Android, iOS, और ChromeOS के लिए Chrome पर, Chromebook Plus के अलावा अन्य डिवाइसों पर, फ़ाउंडेशन मॉडल का इस्तेमाल करने वाले एपीआई फ़िलहाल काम नहीं करते.
  • स्टोरेज: आपकी Chrome प्रोफ़ाइल वाले वॉल्यूम में, कम से कम 22 जीबी स्टोरेज खाली होना चाहिए.
  • जीपीयू या सीपीयू: पहले से मौजूद मॉडल, जीपीयू या सीपीयू की मदद से काम कर सकते हैं.
    • जीपीयू: चार जीबी से ज़्यादा वीआरएएम.
    • सीपीयू: 16 जीबी या इससे ज़्यादा रैम और चार या इससे ज़्यादा सीपीयू कोर.
    • ध्यान दें: ऑडियो इनपुट के साथ Prompt API का इस्तेमाल करने के लिए, जीपीयू की ज़रूरत होती है.
  • नेटवर्क: अनलिमिटेड डेटा या ऐसा कनेक्शन जिस पर डेटा इस्तेमाल करने की कोई सीमा न हो.

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

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

Prompt API, Chrome में Gemini Nano मॉडल का इस्तेमाल करता है. एपीआई को Chrome में पहले से ही शामिल किया गया है. हालांकि, जब कोई ऑरिजिन पहली बार एपीआई का इस्तेमाल करता है, तो मॉडल को अलग से डाउनलोड किया जाता है.

यह पता लगाने के लिए कि मॉडल इस्तेमाल के लिए तैयार है या नहीं, LanguageModel.availability() को कॉल करें.

const availability = await LanguageModel.availability({
  // The same options in `prompt()` or `promptStreaming()`
});

डाउनलोड को ट्रिगर करने और लैंग्वेज मॉडल को इंस्टैंशिएट करने के लिए, उपयोगकर्ता गतिविधि की जांच करें. इसके बाद, create() फ़ंक्शन को कॉल करें.

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

अगर availability() का जवाब downloading था, तो डाउनलोड की प्रोग्रेस सुनें और उपयोगकर्ता को इसकी जानकारी दें. ऐसा इसलिए, क्योंकि डाउनलोड होने में समय लग सकता है.

सेशन बनाना

Prompt API के चालू होने के बाद, create() फ़ंक्शन की मदद से सेशन बनाएं.

const session = await LanguageModel.create();

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

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const session = await LanguageModel.create({
  signal: controller.signal,
});

सैंपलिंग पैरामीटर

सैंपलिंग को कंट्रोल करके, यह तय किया जा सकता है कि मॉडल के जवाब कितने अनुमानित (डिटरमिनिस्टिक) या क्रिएटिव (अलग-अलग) हों. वेब प्लैटफ़ॉर्म और Chrome एक्सटेंशन के बीच, सैंपलिंग पैरामीटर की उपलब्धता अलग-अलग होती है:

  • वेब: samplingMode विकल्प का इस्तेमाल करें. यह आउटपुट के अनुमान को अडजस्ट करने के लिए, रॉ नंबर के बजाय जानकारी देने वाली enum वैल्यू का इस्तेमाल करता है.
  • Chrome एक्सटेंशन: लेगसी न्यूमेरिकल पैरामीटर (topK, temperature) और LanguageModel.params() तरीके का इस्तेमाल किया जा सकता है.

वेब सैंपलिंग मोड

samplingMode विकल्प को LanguageModel.create() (या LanguageModel.availability()) पर पास करें.

samplingMode के लिए, ईनम की इन वैल्यू का इस्तेमाल किया जा सकता है:

  • "most-predictable": सबसे ज़्यादा डिटरमिनिस्टिक और अनुमानित.
  • "predictable": कम से कम बदलाव के साथ, ज़्यादा सटीक आउटपुट.
  • "slightly-predictable": आउटपुट का थोड़ा अनुमान लगाया जा सकता है.
  • "balanced": अनुमान लगाने की क्षमता और क्रिएटिविटी के बीच संतुलन (डिफ़ॉल्ट ऐक्शन और सेटिंग).
  • "slightly-creative": थोड़ा अलग और क्रिएटिव आउटपुट.
  • "creative": क्रिएटिव और अलग-अलग तरह का आउटपुट.
  • "most-creative": ज़्यादा से ज़्यादा वैरिएशन और क्रिएटिविटी.
// Available on the web with the Sampling Parameters Origin Trial enabled
const session = await LanguageModel.create({
  samplingMode: 'creative',
});

// The configured sampling mode is exposed on the session instance
console.log(session.samplingMode);
// "creative"

Chrome एक्सटेंशन के लिए सैंपलिंग पैरामीटर

Chrome एक्सटेंशन में Prompt API का इस्तेमाल करते समय, हर सेशन को अब भी topK और temperature के साथ पसंद के मुताबिक बनाया जा सकता है. इसके लिए, options ऑब्जेक्ट का इस्तेमाल करें.

स्टैटिक LanguageModel.params() फ़ंक्शन, आपको लैंग्वेज मॉडल के डिफ़ॉल्ट और ज़्यादा से ज़्यादा पैरामीटर की सीमाओं के बारे में जानकारी देता है:

  • defaultTopK: डिफ़ॉल्ट top-K वैल्यू.
  • maxTopK: टॉप-K की ज़्यादा से ज़्यादा वैल्यू.
  • defaultTemperature: डिफ़ॉल्ट तापमान.
  • maxTemperature: ज़्यादा से ज़्यादा तापमान.
// Only available in Chrome Extensions
const params = await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 128, defaultTemperature: 1, maxTemperature: 2}

// Initializing a new session in extensions must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
  temperature: Math.min(params.defaultTemperature * 1.2, params.maxTemperature),
  topK: params.defaultTopK,
});

console.log(slightlyHighTemperatureSession.temperature);
console.log(slightlyHighTemperatureSession.topK);

शुरुआती प्रॉम्प्ट के साथ संदर्भ जोड़ना

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

const session = await LanguageModel.create({
  initialPrompts: [
    { role: 'system', content: 'You are a helpful and friendly assistant.' },
    { role: 'user', content: 'What is the capital of Italy?' },
    { role: 'assistant', content: 'The capital of Italy is Rome.' },
    { role: 'user', content: 'What language is spoken there?' },
    {
      role: 'assistant',
      content: 'The official language of Italy is Italian. [...]',
    },
  ],
});

प्रीफ़िक्स की मदद से जवाबों को सीमित करना

मॉडल के पिछले जवाबों के बारे में ज़्यादा जानकारी देने के लिए, पिछली भूमिकाओं के अलावा "assistant" भूमिका भी जोड़ी जा सकती है. उदाहरण के लिए:

const followup = await session.prompt([
  {
    role: "user",
    content: "I'm nervous about my presentation tomorrow"
  },
  {
    role: "assistant",
    content: "Presentations are tough!"
  }
]);

कुछ मामलों में, नए जवाब का अनुरोध करने के बजाय, "assistant"-role के जवाब वाले मैसेज के कुछ हिस्से को पहले से भरा जा सकता है. इससे, लैंग्वेज मॉडल को किसी खास फ़ॉर्मैट में जवाब देने के लिए निर्देश देने में मदद मिल सकती है. इसके लिए, आखिरी "assistant"-role मैसेज में prefix: true जोड़ें. उदाहरण के लिए:

const characterSheet = await session.prompt([
  {
    role: 'user',
    content: 'Create a TOML character sheet for a gnome barbarian',
  },
  {
    role: 'assistant',
    content: '```toml\n',
    prefix: true,
  },
]);

अपेक्षित इनपुट और आउटपुट जोड़ना

Prompt API में मल्टीमोडल सुविधाएं हैं और यह कई भाषाओं में काम करता है. सेशन बनाते समय, expectedInputs और expectedOutputs मोड और भाषाएं सेट करें.

  • type: मोडैलिटी ज़रूरी है.
    • expectedInputs के लिए, यह text, image या audio हो सकता है.
    • expectedOutputs के लिए, Prompt API सिर्फ़ text की अनुमति देता है.
  • languages: संभावित भाषा या भाषाओं को सेट करने के लिए कलेक्शन. Prompt API, "en", "ja", "es", "de", और "fr" को स्वीकार करता है. अन्य भाषाओं के लिए, इस सुविधा पर काम किया जा रहा है.
    • expectedInputs के लिए, सिस्टम प्रॉम्प्ट की भाषा और उपयोगकर्ता के प्रॉम्प्ट की एक या उससे ज़्यादा भाषाएं सेट करें.
    • एक या उससे ज़्यादा expectedOutputs भाषाएं सेट करें.
const session = await LanguageModel.create({
  expectedInputs: [
    { type: "text", languages: ["en" /* system prompt */, "ja" /* user prompt */] }
  ],
  expectedOutputs: [
    { type: "text", languages: ["ja"] }
  ]
});

अगर मॉडल को कोई ऐसा इनपुट या आउटपुट मिलता है जो काम नहीं करता, तो आपको "NotSupportedError" DOMException मिल सकता है.

मल्टीमॉडल क्षमताएं

इन सुविधाओं की मदद से, ये काम किए जा सकते हैं:

  • उपयोगकर्ताओं को चैट ऐप्लिकेशन में भेजे गए ऑडियो मैसेज को ट्रांसक्राइब करने की अनुमति दें.
  • अपनी वेबसाइट पर अपलोड की गई किसी इमेज के बारे में जानकारी दें, ताकि उसका इस्तेमाल कैप्शन या वैकल्पिक टेक्स्ट में किया जा सके.

ऑडियो इनपुट के साथ Prompt API का इस्तेमाल करने के लिए, Mediarecorder Audio Prompt डेमो देखें. साथ ही, इमेज इनपुट के साथ Prompt API का इस्तेमाल करने के लिए, Canvas Image Prompt डेमो देखें.

Prompt API में, इनपुट के ये टाइप इस्तेमाल किए जा सकते हैं:

इस स्निपेट में एक मल्टीमोडल सेशन दिखाया गया है. इसमें पहले दो विज़ुअल (एक इमेज Blob और एक HTMLCanvasElement) प्रोसेस किए जाते हैं और एआई उनकी तुलना करता है. इसके बाद, उपयोगकर्ता को ऑडियो रिकॉर्डिंग (AudioBuffer के तौर पर) के साथ जवाब देने की सुविधा मिलती है.

const session = await LanguageModel.create({
  expectedInputs: [
    { type: "text", languages: ["en"] },
    { type: "audio" },
    { type: "image" },
  ],
  expectedOutputs: [{ type: "text", languages: ["en"] }],
});

const referenceImage = await (await fetch("reference-image.jpeg")).blob();
const userDrawnImage = document.querySelector("canvas");

const response1 = await session.prompt([
  {
    role: "user",
    content: [
      {
        type: "text",
        value:
          "Give a helpful artistic critique of how well the second image matches the first:",
      },
      { type: "image", value: referenceImage },
      { type: "image", value: userDrawnImage },
    ],
  },
]);
console.log(response1);

const audioBuffer = await captureMicrophoneInput({ seconds: 10 });

const response2 = await session.prompt([
  {
    role: "user",
    content: [
      { type: "text", value: "My response to your critique:" },
      { type: "audio", value: audioBuffer },
    ],
  },
]);
console.log(response2);

मैसेज जोड़ना

इनफ़्रेंस में कुछ समय लग सकता है. खास तौर पर, तब जब मल्टीमोडल इनपुट के साथ प्रॉम्प्ट दिया गया हो. सेशन में पहले से तय किए गए प्रॉम्प्ट पहले से भेजना फ़ायदेमंद हो सकता है, ताकि मॉडल को प्रोसेसिंग शुरू करने में मदद मिल सके.

सेशन बनाने के दौरान initialPrompts काफ़ी काम के होते हैं. हालांकि, सेशन बनाने के बाद, कॉन्टेक्स्ट के हिसाब से अतिरिक्त प्रॉम्प्ट देने के लिए, append() तरीके का इस्तेमाल prompt() या promptStreaming() तरीकों के साथ किया जा सकता है.

उदाहरण के लिए:

const session = await LanguageModel.create({
  initialPrompts: [
    {
      role: 'system',
      content:
        'You are a skilled analyst who correlates patterns across multiple images.',
    },
  ],
  expectedInputs: [{ type: 'image' }],
});

fileUpload.onchange = async () => {
  await session.append([
    {
      role: 'user',
      content: [
        {
          type: 'text',
          value: `Here's one image. Notes: ${fileNotesInput.value}`,
        },
        { type: 'image', value: fileUpload.files[0] },
      ],
    },
  ]);
};

analyzeButton.onclick = async (e) => {
  analysisResult.textContent = await session.prompt(userQuestionInput.value);
};

append() से मिला प्रॉमिस तब पूरा होता है, जब प्रॉम्प्ट की पुष्टि हो जाती है, उसे प्रोसेस कर लिया जाता है, और सेशन में जोड़ दिया जाता है. अगर प्रॉम्प्ट को अपेंड नहीं किया जा सकता, तो प्रॉमिस को अस्वीकार कर दिया जाता है.

JSON स्कीमा पास करना

responseConstraint फ़ील्ड को prompt() या promptStreaming() तरीके में जोड़ें, ताकि JSON स्कीमा को वैल्यू के तौर पर पास किया जा सके. इसके बाद, Prompt API के साथ स्ट्रक्चर्ड आउटपुट का इस्तेमाल किया जा सकता है.

यहां दिए गए उदाहरण में, JSON स्कीमा यह पक्का करता है कि मॉडल, true या false के साथ जवाब दे. इससे यह पता चलता है कि दिया गया मैसेज, मिट्टी के बर्तनों के बारे में है या नहीं.

const session = await LanguageModel.create();

const schema = {
  "type": "boolean"
};

const post = "Mugs and ramen bowls, both a bit smaller than intended, but that
happens with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";

const result = await session.prompt(
  `Is this post about pottery?\n\n${post}`,
  {
    responseConstraint: schema,
  }
);
console.log(JSON.parse(result));
// true

आपके लागू किए गए तरीके में, मॉडल को भेजे गए मैसेज के हिस्से के तौर पर, JSON स्कीमा या रेगुलर एक्सप्रेशन शामिल हो सकता है. इससे कॉन्टेक्स्ट विंडो का कुछ हिस्सा इस्तेमाल होता है. session.measureContextUsage() में responseConstraint विकल्प को पास करके, यह मेज़र किया जा सकता है कि यह कॉन्टेक्स्ट विंडो का कितना हिस्सा इस्तेमाल करेगा.

omitResponseConstraintInput विकल्प की मदद से, इस व्यवहार से बचा जा सकता है. अगर आपको ऐसा करना है, तो हमारा सुझाव है कि प्रॉम्प्ट में कुछ निर्देश शामिल करें:

const result = await session.prompt(`
  Summarize this feedback into a rating between 0-5. Only output a JSON
  object { rating }, with a single property whose value is a number:
  The food was delicious, service was excellent, will recommend.
`, { responseConstraint: schema, omitResponseConstraintInput: true });

मॉडल को प्रॉम्प्ट देना

मॉडल को prompt() या promptStreaming() फ़ंक्शन के साथ प्रॉम्प्ट किया जा सकता है.

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

अगर आपको छोटा जवाब चाहिए, तो prompt() फ़ंक्शन का इस्तेमाल करें. यह फ़ंक्शन, जवाब उपलब्ध होने पर उसे दिखाता है.

// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const available = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});

if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and wait for the whole result to come back.
  const result = await session.prompt('Write me a poem!');
  console.log(result);
}

स्ट्रीम किया गया आउटपुट

अगर आपको लंबे जवाब की उम्मीद है, तो promptStreaming() फ़ंक्शन का इस्तेमाल करें. इससे मॉडल से मिलने वाले जवाबों को आंशिक तौर पर दिखाया जा सकता है. promptStreaming() फ़ंक्शन, ReadableStream दिखाता है.

const available = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});
if (available !== 'unavailable') {
  const session = await LanguageModel.create();

  // Prompt the model and stream the result:
  const stream = session.promptStreaming('Write me an extra-long poem!');
  for await (const chunk of stream) {
    console.log(chunk);
  }
}

प्रॉम्प्ट देना बंद करना

prompt() और promptStreaming(), दोनों में signal फ़ील्ड के साथ एक वैकल्पिक दूसरा पैरामीटर स्वीकार किया जाता है. इससे प्रॉम्प्ट को चलाना बंद किया जा सकता है.

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const result = await session.prompt('Write me a poem!', {
  signal: controller.signal,
});

सेशन मैनेजमेंट

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

हर सेशन में, प्रोसेस किए जा सकने वाले टोकन की संख्या तय होती है. इस सीमा तक पहुंचने की अपनी प्रोग्रेस देखने के लिए, यह तरीका अपनाएं:

console.log(`${session.contextUsage}/${session.contextWindow}`);

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

इस तरह के ओवरफ़्लो का पता लगाने के लिए, सेशन पर contextoverflow इवेंट को सुनें:

session.addEventListener("contextoverflow", () => {
  console.log("We've gone past the context window, and some inputs will be dropped!");
});

अगर नए प्रॉम्प्ट को प्रोसेस करने के लिए, बातचीत के इतिहास से ज़रूरी टोकन नहीं हटाए जा सकते, तो prompt() या promptStreaming() कॉल फ़ेल हो जाएगा और QuotaExceededError अपवाद दिखेगा. साथ ही, कुछ भी नहीं हटाया जाएगा. QuotaExceededError में ये प्रॉपर्टी मौजूद होती हैं:

  • requested: इनपुट में कितने टोकन शामिल हैं
  • contextWindow: कितने टोकन उपलब्ध थे

सेशन मैनेजमेंट के बारे में ज़्यादा जानें.

किसी सेशन को क्लोन करना

संसाधनों को सुरक्षित रखने के लिए, clone() फ़ंक्शन का इस्तेमाल करके किसी मौजूदा सेशन को कॉपी किया जा सकता है. इससे बातचीत का एक फ़ोर्क बन जाता है. इसमें कॉन्टेक्स्ट और शुरुआती प्रॉम्प्ट को सेव रखा जाता है.

clone() फ़ंक्शन, signal फ़ील्ड के साथ एक वैकल्पिक विकल्प ऑब्जेक्ट लेता है. इससे, क्लोन किए गए सेशन को खत्म करने के लिए, AbortSignal को पास किया जा सकता है.

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const clonedSession = await session.clone({
  signal: controller.signal,
});

सेशन को खत्म करना

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

await session.prompt(
  "You are a friendly, helpful assistant specialized in clothing choices."
);

session.destroy();

// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
  "What should I wear today? It is sunny, and I am choosing between a t-shirt
  and a polo."
);

डेमो

हमने Prompt API के कई इस्तेमाल के उदाहरणों को एक्सप्लोर करने के लिए, कई डेमो बनाए हैं. यहां दिए गए डेमो, वेब ऐप्लिकेशन हैं:

Chrome एक्सटेंशन में Prompt API को टेस्ट करने के लिए, डेमो एक्सटेंशन इंस्टॉल करें. एक्सटेंशन का सोर्स कोड GitHub पर उपलब्ध है.

परफ़ॉर्मेंस की रणनीति

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

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

डिफ़ॉल्ट रूप से, Prompt 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 Prompt API by
  setting the `allow="language-model"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-model"></iframe>

फ़िलहाल, Prompt API की सुविधा Web Workers में उपलब्ध नहीं है. ऐसा इसलिए है, क्योंकि हर वर्कर के लिए ज़िम्मेदार दस्तावेज़ बनाना मुश्किल है. इस दस्तावेज़ की मदद से, अनुमतियों की नीति की स्थिति देखी जाती है.

प्रोग्राम में शामिल होना और सुझाव/राय देना या शिकायत करना

आपके सुझाव, राय या शिकायत से हमें इस एपीआई और पहले से मौजूद सभी एआई एपीआई के आने वाले वर्शन बनाने और उन्हें लागू करने में मदद मिल सकती है.