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


بالنسبة إلى 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

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

الإعداد (البيانات الوصفية)

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

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

Write a story about a magic backpack.


التحكّم في إنشاء الردود

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

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

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

الإعداد (البيانات الوصفية)

---
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.


إعدادات التفكير

حدِّد إعدادات مرتبطة بالتفكير للنماذج التي تتيح التفكير.

الإعداد (البيانات الوصفية)

---
model: 'gemini-2.5-flash'
config:
  thinkingConfig:
    thinkingBudget: 1024
    includeThoughts: true
---

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

Solve x^2 + 4x + 4 = 0


إعدادات الأمان

استخدِم إعدادات الأمان لضبط احتمالية تلقّي ردود قد تُعتبر ضارة.

الإعداد (البيانات الوصفية)

مثال على إعداد أمان واحد:

---
model: 'gemini-2.5-flash'
config:
  safetySettings:
    - category: HARM_CATEGORY_HARASSMENT
      threshold: BLOCK_ONLY_HIGH
---

مثال على إعدادات أمان متعدّدة:

---
model: 'gemini-2.5-flash'
config:
  safetySettings:
    - category: HARM_CATEGORY_HARASSMENT
      threshold: BLOCK_ONLY_HIGH
    - category: HARM_CATEGORY_HATE_SPEECH
      threshold: BLOCK_MEDIUM_AND_ABOVE
---

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

Write a story about a magic backpack.


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

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

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

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

الإعداد (البيانات الوصفية)

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

الإعداد (البيانات الوصفية)

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

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

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

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


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

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

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

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

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

الإعداد (البيانات الوصفية)

---
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. يُشار إلى العناصر والمصفوفات وقيم التعداد بين قوسَين بعد اسم الحقل.

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

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

الإعداد (البيانات الوصفية)

---
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 منظَّم. يمكنك الاطّلاع على مخطط أكثر تقدّمًا أدناه.

الإعداد (البيانات الوصفية)

---
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"}}

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

الإعداد (البيانات الوصفية)

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

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

Describe this image

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



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

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

أساسي

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

الإعداد (البيانات الوصفية)

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

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

Create an image containing {{prompt}}

متقدّم

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

الإعداد (البيانات الوصفية)

---
model: 'imagen-4.0-fast-generate-001'
config:
  sampleCount: 1
  aspectRatio: "16:9"
  personGeneration: dont_allow
  includeRaiReason: true
  safetySetting: block_medium_and_above
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}}.