Prompt API के लिए, स्ट्रक्चर्ड आउटपुट की सुविधा

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

लार्ज लैंग्वेज मॉडल (एलएलएम) कभी-कभी लंबे जवाब देते हैं. अगर मॉडल को सिर्फ़ "सही" या "गलत" में जवाब देने के लिए कहा जाए, तब भी वह दोस्ताना जवाब दे सकता है. साथ ही, वह आपसे ज़्यादा जानकारी दे सकता है. जैसे: "ज़रूर, जवाब है: सही."

इस समस्या को हल करने के लिए, Prompt API की मदद से, मॉडल के जवाब का JSON आउटपुट फ़ॉर्मैट तय किया जा सकता है. इसके लिए, JSON स्कीमा को LanguageModel.prompt() और LanguageModel.promptStreaming() तरीकों में पास किया जाता है. स्ट्रक्चर्ड आउटपुट की सुविधा, Chrome के वर्शन 137 से उपलब्ध है.

JSON स्कीमा क्या है

JSON स्कीमा, एक शब्दावली है. इसकी मदद से, बड़े पैमाने पर JSON डेटा की सुसंगतता, वैधता, और इंटरऑपरेबिलिटी पक्की की जा सकती है. डेटा के आदान-प्रदान के मामले में, JSON स्कीमा, JSON डेटा की संरचना और नियमों को तय करने के लिए एक दमदार स्टैंडर्ड है. यह आपके डेटा की प्रॉपर्टी तय करने के लिए, कीवर्ड के सेट का इस्तेमाल करता है.

JSON स्कीमा, स्ट्रक्चर्ड आउटपुट पक्का करने के लिए इंडस्ट्री स्टैंडर्ड है. इसका इस्तेमाल, अन्य एपीआई के अलावा OpenAI API और Gemini API भी करते हैं.

उदाहरण के लिए, आपने मॉडल को निर्देश दिया कि वह किसी ऑनलाइन सोशल नेटवर्क, जैसे कि मैस्टॉडॉन पर पोस्ट के लिए ज़्यादा से ज़्यादा तीन हैशटैग असाइन करे. इसका सही आउटपुट, इस JSON की तरह दिख सकता है:

{
  "hashtags": [
    "#pottery",
    "#dyi"
  ] 
}

इसके बाद, अनुरोध किए गए आउटपुट ऑब्जेक्ट के आकार के लिए, JSON स्कीमा इस तरह दिखेगा:

{
  "type": "object",
  "properties": {
    "hashtags": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "pattern": "^#[^\\s#]+$"
      }
    }
  },
  "required": ["hashtags"],
  "additionalProperties": false
}

यह JSON स्कीमा, किसी ऑब्जेक्ट के लिए एक स्ट्रक्चर तय करता है. इसमें, इन पाबंदियों के साथ hashtags फ़ील्ड होना चाहिए:

  • "type": "object": रूट वैल्यू, JSON ऑब्जेक्ट होनी चाहिए.
  • "properties": { "hashtags": ... }: ऑब्जेक्ट में hashtags नाम की प्रॉपर्टी हो सकती है. इस मामले में, यह प्रॉपर्टी होनी चाहिए.
  • "hashtags":

    • "type": "array": वैल्यू, एक कलेक्शन होना चाहिए.
    • "maxItems": 3: कलेक्शन में ज़्यादा से ज़्यादा तीन आइटम हो सकते हैं.
    • "items": { "type": "string", "pattern": "^#[^\\s#]+$" }: कलेक्शन में मौजूद हर आइटम, एक स्ट्रिंग होनी चाहिए. यह स्ट्रिंग, दिए गए रेगुलर एक्सप्रेशन पैटर्न ^#[^\\s#]+$ से मेल खानी चाहिए:
      • ^# → इसकी शुरुआत # से होनी चाहिए.
      • [^\\s#]+ → इसके बाद, एक या उससे ज़्यादा ऐसे वर्ण होने चाहिए जो स्पेस (\s) या दूसरा # न हों.
      • $ → इसका अंत यहीं होना चाहिए.
  • "required": ["hashtags"]: ऑब्जेक्ट में hashtags प्रॉपर्टी होनी चाहिए.

  • "additionalProperties": false: हैशटैग के अलावा, कोई अन्य प्रॉपर्टी इस्तेमाल नहीं की जा सकती है.

फ़ॉर्मैट की क्षमताओं के बारे में पूरी जानकारी पाने के लिए, JSON स्कीमा की बुनियादी बातें से जुड़ा दस्तावेज़ पढ़ें.

असल में, एलएलएम, JSON स्कीमा बनाने में बहुत अच्छे होते हैं. अपने प्रॉम्प्ट में, पाबंदियों के बारे में सामान्य भाषा में बताएं. साथ ही, JSON ऑब्जेक्ट का कोई मान्य उदाहरण दें. इससे आपका काम आधा हो जाएगा. इसके बाद, जनरेट किए गए JSON स्कीमा के हिसाब से, JSON ऑब्जेक्ट की पुष्टि की जा सकती है. इसके लिए, JSON स्कीमा वैलिडेटर का इस्तेमाल करें. जैसे, ऑनलाइन Newtonsoft JSON Schema Validator.

JSON स्कीमा की पुष्टि करने वाले टूल में, JSON स्कीमा के हिसाब से JSON ऑब्जेक्ट की पुष्टि करना.

Prompt API में JSON स्कीमा पास करना

यह पक्का करने के लिए कि मॉडल, अनुरोध किए गए JSON स्कीमा का पालन करे, आपको JSON स्कीमा को prompt() या promptStreaming() तरीकों के विकल्पों वाले ऑब्जेक्ट में, responseConstraint फ़ील्ड की वैल्यू के तौर पर पास करना होगा.

यहां 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's
how it goes 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

अनुमान के मुताबिक आउटपुट की सुविधा

Prompt API के लिए स्ट्रक्चर्ड आउटपुट की सुविधा की मदद से, एलएलएम के जवाबों का अनुमान लगाना आसान हो जाता है. डेवलपर अब यह मान सकते हैं कि मॉडल का जवाब, मान्य JSON है. इसके लिए, उन्हें Markdown के जवाब या अन्य पोस्ट-प्रोसेसिंग से कोई ऑब्जेक्ट निकालने की ज़रूरत नहीं है.

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