تنسيق النموذج وبنيته وأمثلة عليه


بالنسبة إلى Firebase AI Logic، توفّر وحدة تحكّم Firebase واجهة مستخدم إرشادية تتيح لك تحديد محتوى النموذج.

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

في ما يلي أهم المكوّنات لطلب نموذجي موجّه إلى نموذج Gemini:

---
model: 'gemini-2.5-flash'
---

{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.

{{role "user"}}
Create an example customer invoice for a customer named {{customerName}}.
  • يحتوي القسم العلوي ضمن الشرطات الثلاث على اسم النموذج، بالإضافة إلى أي إعدادات نموذج أو عملية التحقّق من صحة الإدخال أو مخطط تريد إرساله في الطلب. تُكتب في صورة أزواج مفاتيح/قيم، ويُطلق عليها عادةً اسم البيانات الوصفية بتنسيق YAML.

  • يحتوي نص النموذج على الطلب. يمكن أن يتضمّن أيضًا بشكل اختياري تعليمات النظام وقيم الإدخال (باستخدام بنية Handlebars).


تقدّم هذه الصفحة أوصافًا مفصّلة لتنسيق النموذج وبنيته، بالإضافة إلى أمثلة على ما يلي:



Gemini

تعرض جميع الأمثلة في هذا القسم نماذج تستخدم gemini-2.5-flash، ولكن يمكنك استخدام أي نموذج Gemini متوافق مع Firebase AI Logic (باستثناء نماذج Gemini Live).

Hello world

في ما يلي مثال بسيط على نموذج طلب من الخادم:

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Write a story about a magic backpack.


إعداد النموذج

اضبط إعدادات النموذج للتحكّم في طريقة إنشاء النموذج للردود، مثل الحد الأقصى لعدد الرموز المميزة في الناتج ودرجة العشوائية وأعلى K كلمة محتملة وأعلى احتمال تراكمي.

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
config:
  candidateCount: 1
  temperature: 0.9
  topP: 0.1
  topK: 16
  maxOutputTokens: 200
  stopSequences: ["red"]
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Write a story about a magic backpack.


تعليمات النظام

اضبط تعليمات النظام لتوجيه سلوك النموذج. يمكنك تضمينها كجزء من الطلب:

  • حدِّد تعليمات النظام باستخدام بنية {{role "system"}}.

  • حدِّد الطلب النصي باستخدام البنية {{role "user"}}.

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.

{{role "user"}}
Create an example customer invoice for a customer.


متغيّرات الإدخال

بعض الطلبات ثابتة، ولكن غالبًا ما تحتاج إلى تضمين بعض البيانات من المستخدم كجزء من الطلب.

يمكنك تضمين متغيّرات إدخال ديناميكية في الطلب باستخدام تعبيرات Handlebars، والتي يتم تضمينها ضمن علامات {{ }} بالتنسيق {{variableName}} أو {{object.propertyName}} (على سبيل المثال، Hello, {{name}} from {{address.city}}).

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Create an example customer invoice for a customer named {{customerName}}.

يمكنك تقديم قيمة تلقائية في النموذج، ولكن عادةً ما يقدّم العميل قيمة لمتغيّر الإدخال كجزء من الطلب.


التحكّم في التدفق (الحلقات والشروط)

لكتابة طلبات أكثر تعقيدًا، يمكنك استخدام كتل شرطية (مثل #if وelse و#unless) وتكرار (#each).

يمكنك تقديم معلومات سياقية إضافية كمتغيّرات مع البادئة الخاصة @:

  • @first: تكون القيمة true عند تكرار العنصر الأول من كتلة #each.
  • @last: تكون القيمة صحيحة عند تكرار آخر عنصر في كتلة #each.
  • @index: تعرض موضع الفهرس (بدءًا من الصفر) للعنصر الحالي.

يمكنك الاطّلاع على مستندات Handlebars للحصول على معلومات حول جميع أدوات المساعدة المنطقية المضمّنة.

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Create an example customer invoice for a customer named {{customerName}}.

Include entries for each of the following products

{{#each productNames}}
  {{#if @first}}
  Include line items for the following purchases
  {{/if}}
  - {{this}}
{{/each}}

{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}

يُرجى العِلم أنّ العبارات الشرطية تقبل فقط مرجعًا لمتغيّر، وليس أي نوع من التعبيرات، على سبيل المثال:

  • يعمل ما يلي: {{#if isVipCustomer}} ... {{/if}}
  • لا يعمل ما يلي: {{#if customer.type == 'vip'}} ... {{/if}}

إذا كان المتغيّر قيمة منطقية، سيعمل الشرط على النحو المتوقّع. إذا لم يكن المتغيّر قيمة منطقية، يكون الشرط في الواقع عملية تحقّق من "القيمة غير فارغة". يمكن أن يكون ذلك مفيدًا للتعامل مع المدخلات الاختيارية، على سبيل المثال:

{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}


التحقّق من صحة البيانات المُدخَلة والمخطط

إذا كانت لديك بيانات واردة من العميل، ننصحك بشدة باستخدام مخطط الإدخال للمساعدة في الحماية من هجمات حقن الطلبات والتأكّد من أنّ البيانات التي يتم تمريرها في الطلب تتطابق مع توقعاتك.

  • يمكنك تقديم قيم تلقائية في حال لم يقدّم العميل قيمة.

  • يتوافق المخطط مع الأنواع العددية string وinteger وnumber وboolean وobject. يُشار إلى العناصر والمصفوفات وقيم التعداد بين قوسَين بعد اسم الحقل.

  • تُعدّ جميع السمات مطلوبة ما لم تحدّدها على أنّها اختيارية باستخدام ?. عندما يتم وضع علامة على إحدى السمات كسمة اختيارية، يتم أيضًا السماح بقيم فارغة لها لتوفير مرونة أكبر لنماذج اللغات الكبيرة في عرض قيمة فارغة بدلاً من حذف حقل.

في ما يلي مثال أساسي لتقديم مخطط الإدخال. يمكنك الاطّلاع على مخطط أكثر تقدّمًا أدناه.

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
input:
  default:
    isVipCustomer: false
  schema:
    customerName: string, the customers name  # string, number, and boolean types are defined like this
    productNames?(array, list of products to include in the invoice): string  # optional fields are marked with a ?
    isVipCustomer?: boolean, whether or not the customer is a VIP
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Create an example customer invoice for a customer named {{customerName}}.

Include entries for each of the following products

{{#each productNames}}
  {{#if @first}}
  Include line items for the following purchases
  {{/if}}
  - {{this}}
{{/each}}

{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}


مخطط الإخراج

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

  • يتوافق المخطط مع الأنواع العددية string وinteger وnumber وboolean وobject. يُشار إلى العناصر والمصفوفات وقيم التعداد بين قوسَين بعد اسم الحقل.

  • تُعدّ جميع السمات مطلوبة ما لم تحدّدها على أنّها اختيارية باستخدام ?. عندما يتم وضع علامة على إحدى السمات كسمة اختيارية، يتم أيضًا السماح بقيم فارغة لها لتوفير مرونة أكبر لنماذج اللغات الكبيرة في عرض قيمة فارغة بدلاً من حذف حقل.

إليك مثال أساسي لإنشاء ناتج JSON منظَّم. يمكنك الاطّلاع على مخطط أكثر تقدّمًا أدناه.

الإعدادات (frontmatter)

---
model: gemini-2.5-flash
output:
  format: json
  schema:
    invoiceId: string
    invoiceFile(object, an invoice file):
      url?: string
      contents: string
      mimeType: string
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Create an example customer invoice.


إدخال متعدد الوسائط

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

  • قدِّم ملفًا باستخدام عنوان URL الخاص به مع بنية {{media url}}.

  • قدِّم ملفًا مضمّنًا باستخدام {{media type="mime_type" data="contents"}} الصيغة.

في ما يلي مثال أساسي لتقديم إدخال متعدد الوسائط. يمكنك الاطّلاع على مثال أكثر تعقيدًا أدناه.

الإعدادات (frontmatter)

---
model: 'gemini-2.5-flash'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Describe this image

{{media type="mimeType" data="imageData"}}



Imagen (إنشاء الصور)

في الإصدار الأوّلي، تتيح نماذج الطلبات على الخادم إنشاء صور باستخدام نماذج Imagen وطلب نصي فقط. يُرجى معاودة التحقُّق قريبًا للاطّلاع على المزيد من الميزات، بما في ذلك تعديل الصور باستخدام Imagen (عند استخدام Vertex AI Gemini API).

أساسي

يعرض هذا المثال نموذجًا أساسيًا لإنشاء صور باستخدام Imagen، مع متغيرات الإدخال والتحقّق من صحة الإدخال بشكل مشابه Gemini.

الإعدادات (frontmatter)

---
model: 'imagen-4.0-generate-001'
input:
  schema:
    prompt: 'string'
---

الطلب وتعليمات النظام (حسب الاقتضاء)

Create an image containing {{prompt}}

متقدّم

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

الإعدادات (frontmatter)

---
model: 'imagen-4.0-fast-generate-001'
config:
  sampleCount: 1
  aspectRatio: "16:9"
  personGeneration: dont_allow
  includeRaiReason: true
input:
  schema:
    style(enum, The style of image): [photo, sketch, painting]
    subject: string, The object or animal or scenery to generate.
    context?: string, Optional background or context description.
  default:
    style: photo
---

الطلب وتعليمات النظام (حسب الاقتضاء)

A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.