Gemini डिफ़ॉल्ट रूप से अनस्ट्रक्चर्ड टेक्स्ट जनरेट करता है. हालांकि, कुछ ऐप्लिकेशन के लिए स्ट्रक्चर्ड टेक्स्ट की ज़रूरत होती है. इन इस्तेमाल के उदाहरणों के लिए, Gemini को जवाब देने के लिए, JSON का इस्तेमाल करने के लिए सीमित किया जा सकता है. यह स्ट्रक्चर्ड डेटा का एक फ़ॉर्मैट है, जो अपने-आप प्रोसेस होने के लिए सही है. आपके पास, एनम में बताए गए किसी एक विकल्प के साथ जवाब देने के लिए, मॉडल को सीमित करने का विकल्प भी है.
यहां कुछ ऐसे इस्तेमाल के उदाहरण दिए गए हैं जिनमें मॉडल से स्ट्रक्चर्ड आउटपुट की ज़रूरत पड़ सकती है:
- अखबार के लेखों से कंपनी की जानकारी इकट्ठा करके, कंपनियों का डेटाबेस बनाएं.
- रीज़्यूमे से स्टैंडर्ड जानकारी निकालना.
- रेसिपी से सामग्री निकालें और हर सामग्री के लिए, किराने की सामान बेचने वाली वेबसाइट का लिंक दिखाएं.
अपने प्रॉम्प्ट में, Gemini से JSON फ़ॉर्मैट में आउटपुट देने के लिए कहा जा सकता है. हालांकि, ध्यान रखें कि इस बात की कोई गारंटी नहीं है कि मॉडल सिर्फ़ JSON फ़ॉर्मैट में आउटपुट देगा.
ज़्यादा सटीक जवाब पाने के लिए, responseSchema
फ़ील्ड में कोई खास JSON स्कीमा पास किया जा सकता है, ताकि Gemini हमेशा उम्मीद के मुताबिक स्ट्रक्चर में जवाब दे. स्कीमा के साथ काम करने के बारे में ज़्यादा जानने के लिए, JSON स्कीमा के बारे में ज़्यादा जानकारी देखें.
इस गाइड में, अपनी पसंद के SDK टूल के ज़रिए generateContent
तरीके का इस्तेमाल करके या सीधे REST API का इस्तेमाल करके, JSON जनरेट करने का तरीका बताया गया है. उदाहरणों में सिर्फ़ टेक्स्ट वाला इनपुट दिखाया गया है. हालांकि, Gemini मल्टीमोडल अनुरोधों के लिए JSON रिस्पॉन्स भी जनरेट कर सकता है. इनमें इमेज, वीडियो, और ऑडियो शामिल हैं.
JSON स्कीमा के बारे में ज़्यादा जानकारी
JSON रिस्पॉन्स दिखाने के लिए मॉडल को कॉन्फ़िगर करते समय, JSON डेटा के टाइप को तय करने के लिए Schema
ऑब्जेक्ट का इस्तेमाल किया जा सकता है. Schema
, OpenAPI 3.0 स्कीमा ऑब्जेक्ट के चुने गए सबसेट को दिखाता है.
यहां सभी Schema
फ़ील्ड का सूडो-JSON वर्शन दिया गया है:
{
"type": enum (Type),
"format": string,
"description": string,
"nullable": boolean,
"enum": [
string
],
"maxItems": string,
"minItems": string,
"properties": {
string: {
object (Schema)
},
...
},
"required": [
string
],
"propertyOrdering": [
string
],
"items": {
object (Schema)
}
}
स्कीमा का Type
, OpenAPI के डेटा टाइप में से कोई एक होना चाहिए. हर Type
के लिए, फ़ील्ड का सिर्फ़ एक सबसेट मान्य होता है. यहां दी गई सूची में, हर Type
को उस टाइप के मान्य फ़ील्ड से मैप किया गया है:
string
-> enum, formatinteger
-> फ़ॉर्मैटnumber
-> फ़ॉर्मैटboolean
array
-> minItems, maxItems, itemsobject
-> properties, required, propertyOrdering, nullable
यहां टाइप और फ़ील्ड के मान्य कॉम्बिनेशन दिखाने वाले कुछ स्कीमा के उदाहरण दिए गए हैं:
{ "type": "string", "enum": ["a", "b", "c"] }
{ "type": "string", "format": "date-time" }
{ "type": "integer", "format": "int64" }
{ "type": "number", "format": "double" }
{ "type": "boolean" }
{ "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": ... } }
{ "type": "object",
"properties": {
"a": { "type": ... },
"b": { "type": ... },
"c": { "type": ... }
},
"nullable": true,
"required": ["c"],
"propertyOrdering": ["c", "b", "a"]
}
Gemini API में इस्तेमाल किए गए स्कीमा फ़ील्ड का पूरा दस्तावेज़ देखने के लिए, स्कीमा रेफ़रंस देखें.
प्रॉपर्टी ऑर्डर करना
Gemini API में JSON स्कीमा के साथ काम करते समय, प्रॉपर्टी का क्रम ज़रूरी होता है. डिफ़ॉल्ट रूप से, एपीआई प्रॉपर्टी को वर्णमाला के क्रम में लगाता है. साथ ही, वह उस क्रम को सेव नहीं करता जिसमें प्रॉपर्टी तय की गई हैं. हालांकि, Google जनरेटिव एआई SDK टूल इस क्रम को सेव कर सकते हैं. अगर कॉन्फ़िगर किए गए स्कीमा के साथ मॉडल को उदाहरण दिए जा रहे हैं और उदाहरणों की प्रॉपर्टी का क्रम, स्कीमा की प्रॉपर्टी के क्रम से मेल नहीं खाता है, तो आउटपुट गलत या अनचाहा हो सकता है.
प्रॉपर्टी की क्रम से लगाई गई सूची में कोई बदलाव न हो, इसके लिए propertyOrdering[]
फ़ील्ड का इस्तेमाल किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
"propertyOrdering": ["recipe_name", "ingredients"]
propertyOrdering[]
– यह OpenAPI स्पेसिफ़िकेशन में स्टैंडर्ड फ़ील्ड नहीं है – यह एक स्ट्रिंग कलेक्शन है. इसका इस्तेमाल, रिस्पॉन्स में प्रॉपर्टी के क्रम को तय करने के लिए किया जाता है. प्रॉपर्टी का क्रम तय करके, उसी क्रम में प्रॉपर्टी के उदाहरण देने से, नतीजों की क्वालिटी को बेहतर बनाया जा सकता है.