با Gemini API خروجی ساختاریافته تولید کنید


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

به عنوان مثال، این موارد استفاده به خروجی ساختاریافته از مدل نیاز دارند:

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

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

این راهنما به شما نشان می دهد که چگونه می توانید JSON را با استفاده از روش generateContent از طریق SDK انتخابی خود تولید کنید. بر روی ورودی فقط متن تمرکز می‌کند، اگرچه Gemini همچنین می‌تواند پاسخ‌های JSON به درخواست‌های چندوجهی که شامل تصاویر ، ویدیوها و صدا می‌شود تولید کند.

قبل از شروع: پروژه و کلید API خود را تنظیم کنید

قبل از فراخوانی Gemini API، باید پروژه خود را راه اندازی کرده و کلید API خود را پیکربندی کنید.

JSON تولید کنید

هنگامی که مدل برای خروجی JSON پیکربندی می شود، به هر درخواستی با خروجی فرمت JSON پاسخ می دهد.

با ارائه یک طرح، ساختار پاسخ JSON را کنترل کنید. دو روش برای ارائه یک طرحواره به مدل وجود دارد:

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

هر دو رویکرد در Gemini 1.5 Flash و Gemini 1.5 Pro کار می کنند.

یک طرحواره را به عنوان متن در اعلان ارائه کنید

مثال زیر موارد زیر را انجام می دهد:

  1. مدلی را که برای پاسخگویی با JSON پیکربندی شده است، نمونه سازی می کند.
  2. از مدل می خواهد دستور العمل های کوکی را در قالب JSON خاص برگرداند.

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

// Using `responseMimeType` requires either a Gemini 1.5 Pro or 1.5 Flash model
let model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  // Set the `responseMimeType` to output JSON
  generationConfig: { responseMimeType: "application/json" }
});

let prompt = `
List 5 popular cookie recipes using this JSON schema:
{ "type": "object",
  "properties": {
    "recipe_name": { "type": "string" },
  }
}`;

let result = await model.generateContent(prompt)
console.log(result.response.text());

خروجی:

[{"recipe_name": "Chocolate Chip Cookies"}, {"recipe_name": "Oatmeal Raisin Cookies"}, {"recipe_name": "Snickerdoodles"}, {"recipe_name": "Sugar Cookies"}, {"recipe_name": "Peanut Butter Cookies"}]

ارائه یک طرح واره از طریق پیکربندی مدل

مثال زیر موارد زیر را انجام می دهد:

  1. مدلی را که از طریق طرحی برای پاسخگویی با JSON پیکربندی شده است، نمونه سازی می کند.
  2. از مدل می خواهد دستور العمل های کوکی را برگرداند.
// Combine this line with any other imports you have from @google/generative-ai
import { SchemaType } from '@google/generative-ai';

// Using `responseMimeType` with `responseSchema` requires a Gemini 1.5 Pro model
let model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  // Set the `responseMimeType` to output JSON
  // Pass the schema object to the `responseSchema` field
  generationConfig: {
    responseMimeType: "application/json",
    responseSchema: {
      type: SchemaType.ARRAY,
      items: {
        type: SchemaType.OBJECT,
        properties: {
          recipe_name: {
            type: SchemaType.STRING,
          },
        },
      },
    },
  }
});

let prompt = "List 5 popular cookie recipes";

let result = await model.generateContent(prompt)
console.log(result.response.text());

خروجی:

[{"recipe_name": "Chocolate Chip Cookies"}, {"recipe_name": "Peanut Butter Cookies"}, {"recipe_name": "Oatmeal Raisin Cookies"}, {"recipe_name": "Sugar Cookies"}, {"recipe_name": "Snickerdoodles"}]