إنشاء نواتج منظَّمة للتجارب المختلطة في تطبيقات الويب

تعرض نماذج Gemini الردود كنص غير منظَّم تلقائيًا. ومع ذلك، تتطلّب بعض حالات الاستخدام نصًا منظَّمًا، مثل JSON. على سبيل المثال، قد تستخدم الردّ في مهام أخرى لاحقة تتطلّب مخطط بيانات محدّدًا.

لضمان التزام الناتج الذي ينشئه النموذج دائمًا بمخطط معيّن، يمكنك تحديد مخطط يعمل كنموذج أولي لردود النموذج. يمكنك بعد ذلك استخراج البيانات مباشرةً من ناتج النموذج مع الحاجة إلى إجراء معالجة لاحقة أقل.

وإليك بعض الأمثلة:

  • تأكَّد من أنّ ردّ النموذج ينتج ملف JSON صالحًا ويتوافق مع المخطط الذي قدّمته.
    على سبيل المثال، يمكن للنموذج إنشاء إدخالات منظَّمة للوصفات تتضمّن دائمًا اسم الوصفة وقائمة المكوّنات والخطوات. يمكنك بعد ذلك تحليل هذه المعلومات وعرضها بسهولة أكبر في واجهة مستخدم تطبيقك.

  • تقييد طريقة ردّ النموذج أثناء مهام التصنيف:
    على سبيل المثال، يمكنك أن يضيف النموذج تعليقات توضيحية إلى النص باستخدام مجموعة معيّنة من التصنيفات (مثل مجموعة معيّنة من القيم الثابتة، مثل positive وnegative)، بدلاً من التصنيفات التي ينتجها النموذج (والتي يمكن أن تتضمّن درجة من التباين، مثل good أو positive أو negative أو bad).

توضّح هذه الصفحة كيفية إنشاء نواتج منظَّمة (مثل JSON والقيم التعدادية) في تجاربك المختلطة لتطبيقات الويب.

قبل البدء

تأكَّد من إكمال دليل البدء لإنشاء تجارب مختلطة.

ضبط إعدادات الناتج المنظَّم

تتوفّر إمكانية إنشاء إخراج منظَّم (مثل JSON والقيم التعدادية) للاستدلال باستخدام النماذج المستضافة على السحابة الإلكترونية والنماذج على الجهاز فقط.

بالنسبة إلى الاستنتاج المختلط، استخدِم كلاً من inCloudParams و onDeviceParams لإعداد النموذج للرد بإخراج منظَّم. بالنسبة إلى الأوضاع الأخرى، استخدِم الإعدادات المناسبة فقط.

  • بالنسبة إلى inCloudParams: حدِّد responseMimeType المناسب (على سبيل المثال، application/json) بالإضافة إلى responseSchema الذي تريد أن يستخدمه النموذج.

  • بالنسبة إلى onDeviceParams: حدِّد responseConstraint الذي تريد أن يستخدمه النموذج.

الردّ بتنسيق JSON

تعدّل الأمثلة التالية مثال الردّ العام بتنسيق JSON لاستيعاب الاستدلال المختلط (في هذا المثال، PREFER_ON_DEVICE):

المثال 1: استخدام طرق مساعدة Schema في Firebase

يستخدم هذا المثال طرقًا مساعِدة توفّرها حزمة تطوير البرامج (SDK) الخاصة بـ Firebase AI Logic لجعل تعريف المخطط أكثر إيجازًا.

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

// ...

المثال 2: استخدام مخطّط 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):

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

// ...