إنشاء نتائج منظَّمة باستخدام Gemini API


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

في ما يلي بعض حالات الاستخدام التي قد تتطلّب إخراجًا منظّمًا من النموذج:

  • أنشئ قاعدة بيانات للشركات من خلال سحب معلومات الشركات من مقالات الصحف.
  • سحب المعلومات الموحدة من السير الذاتية
  • استخراج المكونات من الوصفات وعرض رابط إلى موقع إلكتروني لبقالة لكل عنصر

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

يوضّح لك هذا الدليل كيفية إنشاء ملف JSON باستخدام generateContent من خلال حزمة SDK التي تختارها أو باستخدام واجهة برمجة التطبيقات REST API مباشرةً. تعرض الأمثلة إدخالًا يقتصر على النص، على الرغم من أنّ Gemini يمكنه أيضًا إنشاء ردود JSON للطلبات المتعدّدة الوسائط التي تشمل الصور والفيديوهات والصوت.

قبل البدء: إعداد مشروعك ومفتاح واجهة برمجة التطبيقات

قبل طلب Gemini API، عليك إعداد مشروعك وضبط مفتاح واجهة برمجة التطبيقات.

إنشاء JSON

عند ضبط النموذج لإخراج تنسيق JSON، يستجيب لأي طلب باستخدام مخرج بتنسيق JSON.

يمكنك التحكّم في بنية استجابة JSON من خلال تقديم مخطّط. هناك طريقتان لتقديم مخطّط إلى النموذج:

  • كنص في الطلب
  • كمخطّط منظَّم يتم توفيره من خلال إعدادات النموذج

يمكن استخدام كلتا الطريقتَين في كلّ من Gemini 1.5 Flash وGemini 1.5 Pro.

تقديم مخطّط كنص في الطلب

يطلب المثال التالي من النموذج عرض وصفات ملفات تعريف الارتباط بتنسيق JSON محدّد.

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
});

const prompt = `List a few popular cookie recipes using this JSON schema:

Recipe = {'recipeName': string}
Return: Array<Recipe>`;

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

قد تبدو النتيجة على النحو التالي:

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

تقديم مخطّط من خلال إعداد النموذج

ينفِّذ المثال التالي ما يلي:

  1. تنشئ مثيلًا لنموذج تم ضبطه من خلال مخطّط للردّ باستخدام تنسيق JSON.
  2. يطلب من النموذج عرض وصفات ملفات تعريف الارتباط.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const schema = {
  description: "List of recipes",
  type: SchemaType.ARRAY,
  items: {
    type: SchemaType.OBJECT,
    properties: {
      recipeName: {
        type: SchemaType.STRING,
        description: "Name of the recipe",
        nullable: false,
      },
    },
    required: ["recipeName"],
  },
};

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  generationConfig: {
    responseMimeType: "application/json",
    responseSchema: schema,
  },
});

const result = await model.generateContent(
  "List a few popular cookie recipes.",
);
console.log(result.response.text());

قد تبدو النتيجة على النحو التالي:

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