تولید خروجی ساختاریافته برای تجربیات ترکیبی در برنامه‌های وب


مدل‌های Gemini به طور پیش‌فرض پاسخ‌ها را به صورت متن بدون ساختار برمی‌گردانند. با این حال، برخی از موارد استفاده به متن ساختاریافته مانند JSON نیاز دارند. به عنوان مثال، ممکن است از پاسخ برای سایر وظایف پایین‌دستی که به یک طرح داده مشخص نیاز دارند، استفاده کنید.

برای اطمینان از اینکه خروجی تولید شده مدل همیشه از یک طرحواره خاص پیروی می‌کند، می‌توانید یک طرحواره تعریف کنید که مانند یک طرح اولیه برای پاسخ‌های مدل عمل می‌کند. سپس می‌توانید مستقیماً داده‌ها را از خروجی مدل با پردازش کمتر پس از تولید استخراج کنید.

در اینجا چند مثال آورده شده است:

  • اطمینان حاصل کنید که پاسخ مدل، JSON معتبری تولید می‌کند و با طرحواره ارائه شده شما مطابقت دارد.
    برای مثال، این مدل می‌تواند ورودی‌های ساختاریافته‌ای برای دستور پخت‌ها ایجاد کند که همیشه شامل نام دستور پخت، لیست مواد تشکیل‌دهنده و مراحل پخت باشد. سپس می‌توانید این اطلاعات را راحت‌تر تجزیه و در رابط کاربری برنامه خود نمایش دهید.

  • نحوه پاسخگویی یک مدل در طول وظایف طبقه‌بندی را محدود کنید.
    برای مثال، می‌توانید کاری کنید که مدل، متن را با مجموعه‌ای خاص از برچسب‌ها (مثلاً مجموعه‌ای خاص از enumها مانند positive و negative ) حاشیه‌نویسی کند، نه با برچسب‌هایی که مدل تولید می‌کند (که می‌توانند درجه‌ای از تغییرپذیری مانند good ، positive ، negative یا bad داشته باشند).

این صفحه نحوه تولید خروجی ساختاریافته (مانند JSON و enums) را در تجربیات ترکیبی شما برای برنامه‌های وب شرح می‌دهد.

قبل از اینکه شروع کنی

مطمئن شوید که راهنمای شروع به کار برای ساخت تجربیات ترکیبی را تکمیل کرده‌اید.

پیکربندی خروجی ساختاریافته را تنظیم کنید

تولید خروجی ساختاریافته (مانند JSON و enums) برای استنتاج با استفاده از مدل‌های میزبانی ابری و روی دستگاه پشتیبانی می‌شود.

برای استنتاج ترکیبی، از 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 را برای تطبیق با استنتاج ترکیبی (در این مثال، 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
    }
  }
});

// ...