Gemini API की मदद से स्ट्रक्चर्ड आउटपुट जनरेट करें


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

यहां कुछ ऐसे इस्तेमाल के उदाहरण दिए गए हैं जिनमें मॉडल से स्ट्रक्चर्ड आउटपुट की ज़रूरत पड़ सकती है:

  • अखबार के लेखों से कंपनी की जानकारी इकट्ठा करके, कंपनियों का डेटाबेस बनाएं.
  • रीज़्यूमे से स्टैंडर्ड जानकारी निकालना.
  • रेसिपी से सामग्री निकालें और हर सामग्री के लिए, किराने की वेबसाइट का लिंक दिखाएं.

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

इस गाइड में, अपनी पसंद के SDK टूल के ज़रिए generateContent तरीके का इस्तेमाल करके या सीधे REST API का इस्तेमाल करके, JSON जनरेट करने का तरीका बताया गया है. उदाहरणों में सिर्फ़ टेक्स्ट वाला इनपुट दिखाया गया है. हालांकि, Gemini मल्टीमोडल अनुरोधों के लिए JSON रिस्पॉन्स भी जनरेट कर सकता है. इनमें इमेज, वीडियो, और ऑडियो शामिल हैं.

शुरू करने से पहले: अपना प्रोजेक्ट और एपीआई पासकोड सेट अप करना

Gemini API को कॉल करने से पहले, आपको अपना प्रोजेक्ट सेट अप करना होगा और अपनी एपीआई पासकोड को कॉन्फ़िगर करना होगा.

JSON जेनरेट करें

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

स्कीमा की मदद से, JSON रिस्पॉन्स के स्ट्रक्चर को कंट्रोल किया जा सकता है. मॉडल में स्कीमा जोड़ने के दो तरीके हैं:

  • प्रॉम्प्ट में टेक्स्ट के तौर पर
  • मॉडल कॉन्फ़िगरेशन की मदद से दिए गए स्ट्रक्चर्ड स्कीमा के तौर पर

दोनों तरीके, Gemini 1.5 Flash और Gemini 1.5 Pro, दोनों में काम करते हैं.

प्रॉम्प्ट में टेक्स्ट के तौर पर स्कीमा दें

नीचे दिए गए उदाहरण में, मॉडल को कुकी की रेसिपी किसी खास JSON फ़ॉर्मैट में दिखाने के लिए कहा गया है.

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
});

const prompt = `List a few popular cookie recipes using this JSON schema:

Recipe = {'recipeName': string}
Return: Array<Recipe>`;

const result = await model.generateContent(prompt);
console.log(result.response.text());

आउटपुट कुछ ऐसा दिख सकता है:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]

मॉडल कॉन्फ़िगरेशन की मदद से स्कीमा उपलब्ध कराना

यहां दिए गए उदाहरण में ये काम किए गए हैं:

  1. JSON के साथ जवाब देने के लिए, स्कीमा के ज़रिए कॉन्फ़िगर किए गए मॉडल को इंस्टैंशिएट करता है.
  2. मॉडल को कुकी की रेसिपी दिखाने के लिए कहता है.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const schema = {
  description: "List of recipes",
  type: SchemaType.ARRAY,
  items: {
    type: SchemaType.OBJECT,
    properties: {
      recipeName: {
        type: SchemaType.STRING,
        description: "Name of the recipe",
        nullable: false,
      },
    },
    required: ["recipeName"],
  },
};

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  generationConfig: {
    responseMimeType: "application/json",
    responseSchema: schema,
  },
});

const result = await model.generateContent(
  "List a few popular cookie recipes.",
);
console.log(result.response.text());

आउटपुट कुछ ऐसा दिख सकता है:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]