वेब ऐप्लिकेशन में हाइब्रिड अनुभवों के लिए स्ट्रक्चर्ड आउटपुट जनरेट करना

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

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

यहां कुछ उदाहरण दिए गए हैं:

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

  • यह तय करना कि क्लासिफ़िकेशन के टास्क के दौरान मॉडल कैसे जवाब दे सकता है.
    उदाहरण के लिए, मॉडल को टेक्स्ट की व्याख्या करने के लिए, लेबल का कोई खास सेट दिया जा सकता है. जैसे, एनम का कोई खास सेट, जैसे कि positive और negative. ऐसा करने से, मॉडल के जनरेट किए गए लेबल के बजाय, आपके दिए गए लेबल का इस्तेमाल किया जाएगा. मॉडल के जनरेट किए गए लेबल में अलग-अलग तरह के लेबल शामिल हो सकते हैं, जैसे कि good, positive, negative या bad.

इस पेज पर, वेब ऐप्लिकेशन के लिए हाइब्रिड अनुभवों में स्ट्रक्चर्ड आउटपुट (जैसे कि JSON और enum) जनरेट करने का तरीका बताया गया है.

शुरू करने से पहले

पक्का करें कि आपने हाइब्रिड अनुभव बनाने के लिए, शुरू करने से जुड़ी गाइड पढ़ ली हो.

स्ट्रक्चर्ड आउटपुट के लिए कॉन्फ़िगरेशन सेट करना

स्ट्रक्चर्ड आउटपुट (जैसे, JSON और enum) जनरेट करने की सुविधा, क्लाउड पर होस्ट किए गए और डिवाइस पर मौजूद, दोनों तरह के मॉडल के साथ काम करती है.

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

  • inCloudParams के लिए: सही responseMimeType (उदाहरण के लिए, application/json) के साथ-साथ वह responseSchema भी तय करें जिसका इस्तेमाल मॉडल को करना है.

  • onDeviceParams के लिए: वह responseConstraint तय करें जिसका इस्तेमाल मॉडल को करना है.

JSON फ़ॉर्मैट में आउटपुट

यहां दिए गए उदाहरणों में, JSON फ़ॉर्मैट में आउटपुट देने वाले सामान्य उदाहरण को हाइब्रिड इन्फ़रेंस (इस उदाहरण में, PREFER_ON_DEVICE) के हिसाब से बदला गया है:

पहला उदाहरण: Firebase Schema हेल्पर मेथड का इस्तेमाल करना

इस उदाहरण में, Firebase AI Logic SDK टूल की ओर से उपलब्ध कराए गए हेल्पर मेथड का इस्तेमाल किया गया है, ताकि स्कीमा की परिभाषा को ज़्यादा छोटा बनाया जा सके.

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

// This schema can also be defined as a plain JSON object.
// See next snippet for an example of a plain JSON schema.
const jsonSchema = Schema.object({
 properties: {
    characters: Schema.array({
      items: Schema.object({
        properties: {
          name: Schema.string(),
          accessory: Schema.string(),
          age: Schema.number(),
          species: Schema.string(),
        },
        optionalProperties: ["accessory"],
      }),
    }),
  }
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      model: "gemini-3.1-flash-lite",
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

const result = await model
  .generateContent(
    "Create profiles for some characters for a fantasy story.");

console.log(result.response.text());
console.log(JSON.parse(result.response.text()));

// ...

दूसरा उदाहरण: सामान्य JSON स्कीमा का इस्तेमाल करना

इस उदाहरण में, सिर्फ़ JSON का इस्तेमाल करके स्कीमा तय किया गया है और इसमें भी वही नतीजे मिलते हैं.

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

// The JSON schema defined as a plain JSON object.
const jsonSchema = {
    "type": "object",
    "properties": {
        "characters": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "nullable": false
                    },
                    "accessory": {
                        "type": "string",
                        "nullable": false
                    },
                    "age": {
                        "type": "number",
                        "nullable": false
                    },
                    "species": {
                        "type": "string",
                        "nullable": false
                    }
                },
                "nullable": false,
                "required": [
                    "name",
                    "age",
                    "species"
                ]
            },
            "nullable": false
        }
    },
    "nullable": false,
    "required": [
        "characters"
    ]
};

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      model: "gemini-3.1-flash-lite",
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

const result = await model
  .generateContent(
    "Create profiles for some characters for a fantasy story.");

console.log(result.response.text());
console.log(JSON.parse(result.response.text()));

Enum आउटपुट

यहां दिए गए उदाहरण में, सामान्य enum आउटपुट के उदाहरण को हाइब्रिड इन्फ़्रेंस (इस उदाहरण में, PREFER_ON_DEVICE) के हिसाब से बदला गया है:

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

// enumSchema can also be defined as a plain JSON schema instead of
// using the `Schema` helper methods, just as in the JSON output example.
const enumSchema = Schema.enumString({
  enum: ["drama", "comedy", "documentary"],
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "text/x.enum",
      responseSchema: enumSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: enumSchema
    }
  }
});

// ...