ওয়েব অ্যাপে হাইব্রিড অভিজ্ঞতার জন্য কাঠামোগত আউটপুট তৈরি করুন

জেমিনি মডেলগুলো ডিফল্টরূপে প্রতিক্রিয়াগুলো অসংগঠিত টেক্সট হিসেবে ফেরত দেয়। তবে, কিছু ব্যবহারের ক্ষেত্রে JSON-এর মতো সংগঠিত টেক্সটের প্রয়োজন হয়। উদাহরণস্বরূপ, আপনি হয়তো প্রতিক্রিয়াটি এমন অন্যান্য পরবর্তী কাজের জন্য ব্যবহার করছেন, যেগুলোর জন্য একটি প্রতিষ্ঠিত ডেটা স্কিমা প্রয়োজন।

মডেলের তৈরি করা আউটপুট যেন সর্বদা একটি নির্দিষ্ট স্কিমা মেনে চলে, তা নিশ্চিত করার জন্য আপনি একটি স্কিমা নির্ধারণ করতে পারেন, যা মডেলের প্রতিক্রিয়ার জন্য একটি নকশার মতো কাজ করে। এরপর আপনি কম পোস্ট-প্রসেসিংয়ের মাধ্যমে সরাসরি মডেলের আউটপুট থেকে ডেটা বের করে নিতে পারবেন।

এখানে কয়েকটি উদাহরণ দেওয়া হলো:

  • নিশ্চিত করুন যে মডেলের প্রতিক্রিয়া বৈধ JSON তৈরি করে এবং আপনার প্রদত্ত স্কিমার সাথে সঙ্গতিপূর্ণ।
    উদাহরণস্বরূপ, মডেলটি রেসিপিগুলোর জন্য এমন সুসংগঠিত এন্ট্রি তৈরি করতে পারে, যাতে সবসময় রেসিপির নাম, উপকরণের তালিকা এবং ধাপগুলো অন্তর্ভুক্ত থাকে। এর ফলে আপনি আপনার অ্যাপের UI-তে এই তথ্য আরও সহজে পার্স এবং প্রদর্শন করতে পারবেন।

  • শ্রেণীবিভাগ কার্য সম্পাদনের সময় একটি মডেলের প্রতিক্রিয়াকে সীমাবদ্ধ করুন।
    উদাহরণস্বরূপ, আপনি মডেলকে দিয়ে টেক্সটকে একটি নির্দিষ্ট সেট লেবেল (যেমন, positive , negative বা bad positive good মতো বিভিন্ন মাত্রার পরিবর্তনশীল লেবেল) দিয়ে negative করাতে পারেন।

এই পৃষ্ঠায় বর্ণনা করা হয়েছে কীভাবে আপনার ওয়েব অ্যাপের হাইব্রিড অভিজ্ঞতায় স্ট্রাকচার্ড আউটপুট (যেমন JSON এবং enum) তৈরি করতে হয়।

শুরু করার আগে

হাইব্রিড অভিজ্ঞতা তৈরির জন্য প্রারম্ভিক নির্দেশিকাটি আপনি সম্পূর্ণ করেছেন কিনা, তা নিশ্চিত করুন।

কাঠামোগত আউটপুটের জন্য কনফিগারেশন সেট করুন।

ক্লাউড-হোস্টেড এবং অন-ডিভাইস উভয় মডেলেই ইনফারেন্সের জন্য স্ট্রাকচার্ড আউটপুট (যেমন JSON এবং enum) তৈরি করা সমর্থিত।

হাইব্রিড ইনফারেন্সের ক্ষেত্রে, মডেলকে স্ট্রাকচার্ড আউটপুট প্রদানে কনফিগার করতে inCloudParams এবং onDeviceParams উভয়ই ব্যবহার করুন। অন্যান্য মোডগুলোর জন্য, শুধুমাত্র প্রযোজ্য কনফিগারেশনটি ব্যবহার করুন।

  • inCloudParams জন্য : উপযুক্ত responseMimeType (উদাহরণস্বরূপ, application/json ) এবং সেইসাথে আপনি মডেলটির জন্য যে responseSchema ব্যবহার করতে চান, তা উল্লেখ করুন।

  • onDeviceParams জন্য : মডেলটি যে responseConstraint ব্যবহার করবে, তা নির্দিষ্ট করুন।

JSON আউটপুট

নিম্নলিখিত উদাহরণগুলি হাইব্রিড ইনফারেন্স (এই উদাহরণে, PREFER_ON_DEVICE ) সমর্থন করার জন্য সাধারণ JSON আউটপুট উদাহরণটিকে অভিযোজিত করে:

উদাহরণ ১: ফায়ারবেস 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 আউটপুট

নিম্নলিখিত উদাহরণটি হাইব্রিড ইনফারেন্স (এই উদাহরণে, PREFER_ON_DEVICE ) সমর্থন করার জন্য সাধারণ enum আউটপুট উদাহরণটিকে অভিযোজিত করে:

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

// ...