Prompt API

पब्लिश किया गया: 20 मई, 2025

जानकारी देने वाला चिप वेब एक्सटेंशन Chrome का स्टेटस प्रयोजन
GitHub एक्सपेरिमेंट के तौर पर उपलब्ध EPP में Chrome बीटा Chrome 137 बीटा देखें एक्सपेरिमेंट करने का इंटेंट

Prompt API की मदद से, ब्राउज़र में Gemini Nano को आम भाषा में अनुरोध भेजे जा सकते हैं.

Prompt API का इस्तेमाल कई तरीकों से किया जा सकता है. किसी वेब ऐप्लिकेशन या वेबसाइट में, ये चीज़ें बनाई जा सकती हैं:

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

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

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

भाषा का पता लगाने वाला टूल और Translator API, सिर्फ़ Chrome के डेस्कटॉप वर्शन पर काम करते हैं.

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

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

ये ज़रूरी शर्तें, ऐप्लिकेशन बनाने की प्रोसेस के दौरान आपके लिए और उन उपयोगकर्ताओं के लिए होती हैं जो आपके बनाए गए ऐप्लिकेशन का इस्तेमाल करते हैं.

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

LanguageModel नेमस्पेस में आपके लिए दो फ़ंक्शन उपलब्ध हैं:

  • availability() पर जाएं.
  • create() का इस्तेमाल करके, भाषा मॉडल सेशन शुरू करें.

मॉडल डाउनलोड

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

यह पता लगाने के लिए कि मॉडल इस्तेमाल के लिए तैयार है या नहीं, असाइनोक्रोनस LanguageModel.availability() फ़ंक्शन को कॉल करें. इससे इनमें से कोई एक जवाब मिलना चाहिए:

  • "unavailable" का मतलब है कि लागू करने की सुविधा, अनुरोध किए गए विकल्पों के साथ काम नहीं करती या भाषा मॉडल को प्रॉम्प्ट करने की सुविधा के साथ काम नहीं करती.
  • "downloadable" का मतलब है कि लागू करने की सुविधा, अनुरोध किए गए विकल्पों के साथ काम करती है. हालांकि, उन विकल्पों का इस्तेमाल करके सेशन बनाने से पहले, उसे कुछ डाउनलोड करना होगा. उदाहरण के लिए, भाषा मॉडल या फ़ाइन-ट्यूनिंग.
  • "downloading" का मतलब है कि लागू करने की सुविधा, अनुरोध किए गए विकल्पों के साथ काम करती है. हालांकि, उन विकल्पों का इस्तेमाल करके सेशन बनाने से पहले, डाउनलोड की जा रही प्रोसेस को पूरा करना होगा.
  • "available" का मतलब है कि लागू करने की प्रोसेस में, अनुरोध किए गए विकल्पों का इस्तेमाल किया जा सकता है. इसके लिए, आपको कोई नया डाउनलोड करने की ज़रूरत नहीं है.

मॉडल डाउनलोड करने और भाषा मॉडल सेशन बनाने के लिए, एक साथ काम न करने वाले LanguageModel.availability() फ़ंक्शन को कॉल करें. अगर availability() का जवाब 'downloadable' था, तो डाउनलोड की प्रोग्रेस सुनना सबसे सही तरीका है. इस तरह, अगर डाउनलोड में समय लगता है, तो उपयोगकर्ता को इसकी सूचना दी जा सकती है.

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

मॉडल की सुविधाएं

params() फ़ंक्शन, आपको भाषा मॉडल के पैरामीटर के बारे में बताता है. ऑब्जेक्ट में ये फ़ील्ड होते हैं:

  • defaultTopK: डिफ़ॉल्ट top-K वैल्यू (डिफ़ॉल्ट: 3).
  • maxTopK: सबसे ज़्यादा टॉप-K वैल्यू (8).
  • defaultTemperature: डिफ़ॉल्ट तापमान (1.0). तापमान की वैल्यू, 0.0 से 2.0 के बीच होनी चाहिए.
  • maxTemperature: ज़्यादा से ज़्यादा तापमान.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}

सेशन बनाना

Prompt API के चलने के बाद, create() फ़ंक्शन की मदद से सेशन बनाया जाता है. prompt() या promptStreaming() फ़ंक्शन का इस्तेमाल करके, मॉडल को प्रॉम्प्ट किया जा सकता है.

अपने सेशन को पसंद के मुताबिक बनाना

हर सेशन को topK और temperature के साथ पसंद के मुताबिक बनाया जा सकता है. इसके लिए, वैकल्पिक ऑप्टेशन ऑब्जेक्ट का इस्तेमाल करें. इन पैरामीटर की डिफ़ॉल्ट वैल्यू, LanguageModel.params() से रिटर्न की जाती हैं.

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

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

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

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

शुरुआती प्रॉम्प्ट

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

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. [...]' }
  ]
});

सत्र की सीमाएं

किसी भाषा मॉडल के सेशन में, ज़्यादा से ज़्यादा उतने ही टोकन प्रोसेस किए जा सकते हैं जितने उसमें सेट किए गए हैं. सेशन ऑब्जेक्ट पर इन प्रॉपर्टी का इस्तेमाल करके, इस्तेमाल की गई संख्या और उस सीमा तक पहुंचने की प्रोग्रेस देखी जा सकती है:

console.log(`${session.inputUsage}/${session.inputQuota}`);

सेशन का जारी रहना

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

const session = await LanguageModel.create({
  initialPrompts: [{
    role: "system",
    content: "You are a friendly, helpful assistant specialized in clothing choices."
  }]
});

const result1 = await session.prompt(
  "What should I wear today? It is sunny. I am unsure between a t-shirt and a polo."
);
console.log(result1);

const result2 = await session.prompt(
  "That sounds great, but oh no, it is actually going to rain! New advice?"
);
console.log(result2);

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

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

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

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

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

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 {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
  await LanguageModel.params();

const available = await LanguageModel.availability();

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 {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
  await LanguageModel.params();

const available = await LanguageModel.availability();
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 }
);

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

अगर आपको अब सेशन की ज़रूरत नहीं है, तो मुफ़्त संसाधनों के लिए 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 unsure between a
  t-shirt and a polo."
);

मल्टीमोडल सुविधाएं

Prompt API, Chrome 138 Canary में ऑडियो और इमेज इनपुट के साथ काम करता है. ऐसा, स्थानीय तौर पर एक्सपेरिमेंट करने के लिए किया जाता है. एपीआई, टेक्स्ट आउटपुट दिखाता है.

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

  • उपयोगकर्ताओं को चैट ऐप्लिकेशन में भेजे गए ऑडियो मैसेज को लिखाई में बदलने की अनुमति दें.
  • कैप्शन या वैकल्पिक टेक्स्ट में इस्तेमाल करने के लिए, अपनी वेबसाइट पर अपलोड की गई इमेज के बारे में बताएं.
const session = await LanguageModel.create({
  // { type: "text" } is not necessary to include explicitly, unless
  // you also want to include expected input languages for text.
  expectedInputs: [
    { type: "audio" },
    { type: "image" }
  ]
});

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 audioBlob = await captureMicrophoneInput({ seconds: 10 });

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

मल्टीमोडल डेमो

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

सुझाव/राय दें या शिकायत करें

आपके सुझाव, शिकायत या राय से हमें इस एपीआई के आने वाले समय के बारे में जानकारी मिलती है. साथ ही, Gemini Nano को बेहतर बनाने में भी मदद मिलती है. इससे, खास टास्क के लिए एपीआई भी बन सकते हैं. जैसे, ऑडियो को टेक्स्ट में बदलने या इमेज की जानकारी देने के लिए एपीआई. इससे, हम आपकी और आपके उपयोगकर्ताओं की ज़रूरतों को पूरा कर पाएंगे.

हिस्सा लेना और सुझाव/राय देना या शिकायत करना

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