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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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: {
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

// ...

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

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

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

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
    }
  }
});

// ...