تاريخ النشر: 13 مايو 2025
تشتهر النماذج اللغوية الكبيرة (LLM) بردودها الطويلة في بعض الأحيان. حتى إذا طلبت من النموذج الإجابة بـ "صحيح" أو "خطأ" فقط، قد يردّ النموذج بإجابة ودّية تتضمّن أكثر مما طلبته، مثل: "بالتأكيد، الإجابة هي: صحيح".
لحلّ هذا التحدّي، تتيح لك Prompt API تحديد تنسيق إخراج JSON لردّ النموذج من خلال تمرير مخطط JSON إلى الطريقتَين LanguageModel.prompt() وLanguageModel.promptStreaming(). تتوفّر ميزة الإخراج المنظَّم اعتبارًا من الإصدار 137 من Chrome.
ما هو JSON Schema؟
JSON Schema هي مجموعة من المصطلحات تتيح اتساق بيانات JSON وصلاحيتها وإمكانية التشغيل التفاعلي على نطاق واسع. عندما يتعلق الأمر بتبادل البيانات، يبرز JSON Schema كمعيار قوي لتحديد بنية بيانات JSON وقواعدها. تستخدِم هذه السمة مجموعة من الكلمات الرئيسية لتحديد خصائص بياناتك.
يُعدّ JSON Schema معيارًا في المجال لضمان الحصول على ناتج منظَّم، ويتم استخدامه، من بين أمور أخرى، في OpenAI API وGemini API.
على سبيل المثال، يمكنك أن تطلب من النموذج تعيين ثلاثة وسوم كحد أقصى لمنشور على شبكة اجتماعية على الإنترنت، مثل Mastodon. قد تبدو النتيجة المثالية مشابهة لملف JSON التالي:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
سيكون مخطط JSON المقابل لشكل عنصر الإخراج المطلوب على النحو التالي:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
يحدّد مخطط JSON هذا بنية لعنصر يجب أن يحتوي على حقل
hashtags مع القيود التالية:
-
"type": "object": يجب أن تكون قيمة الجذر عنصر JSON. -
"properties": { "hashtags": ... }: يمكن أن يتضمّن العنصر (وفي هذه الحالة، يجب أن يتضمّن) سمة باسمhashtags. "hashtags":"type": "array": يجب أن تكون القيمة مصفوفة.-
"maxItems": 3: يمكن أن تحتوي المصفوفة على 3 عناصر بحدّ أقصى. "items": { "type": "string", "pattern": "^#[^\\s#]+$" }: يجب أن يكون كل عنصر في المصفوفة سلسلة تطابق نمط التعبير العادي المحدّد:^#[^\\s#]+$:- يجب أن يبدأ
^#→ بـ#. -
[^\\s#]+→ متبوعًا بحرف واحد أو أكثر ليس مسافة (\s) أو#آخر - يجب أن ينتهي النص عند
$.
- يجب أن يبدأ
"required": ["hashtags"]: يجب أن يحتوي العنصر على السمةhashtags."additionalProperties": false: لا يُسمح باستخدام أي سمات أخرى غير علامات الهاشتاغ.
يمكنك الاطّلاع على مستندات أساسيات مخطط JSON للحصول على وصف كامل لإمكانات التنسيق.
في الواقع، تتفوّق النماذج اللغوية الكبيرة في إنشاء JSON Schema. ما عليك سوى وصف القيود باللغة الطبيعية في طلبك وتقديم مثال صالح على عنصر JSON، وستكون قد قطعت نصف الطريق. يمكنك بعد ذلك التحقّق من صحة عناصر JSON باستخدام مخطط JSON الذي تم إنشاؤه باستخدام إحدى أدوات التحقّق من صحة مخطط JSON، مثل أداة التحقّق من صحة مخطط JSON من Newtonsoft على الإنترنت.

تمرير مخطّط JSON إلى Prompt API
للتأكّد من أنّ النموذج يلتزم بمخطط JSON المطلوب، عليك تمرير مخطط JSON كمعلَمة إلى الكائن prompt() أو promptStreaming() الخاص بطرق العرض كقيمة للحقل responseConstraint.
إليك مثال بسيط جدًا على JSON Schema يضمن أن يستجيب النموذج باستخدام true أو false عند تصنيف ما إذا كانت رسالة معيّنة، مثل منشور Mastodon، تتضمّن معلومات حول صناعة الفخار.
const session = await LanguageModel.create();
const schema = {
"type": "boolean"
};
const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";
const result = await session.prompt(
`Is this post about pottery?\n\n${post}`,
{
responseConstraint: schema,
}
);
console.log(JSON.parse(result));
// true
توفير مخرجات يمكن توقّعها
تتيح ميزة "الناتج المنظَّم" في Prompt API توقُّع ردود النموذج اللغوي الكبير بشكل أكبر. بدلاً من استخراج عنصر من ردّ بتنسيق Markdown أو إجراء معالجة لاحقة أخرى، يمكن للمطوّرين الآن افتراض أنّ ردّ النموذج هو JSON صالح.
ويقرّب هذا التغيير الذكاء الاصطناعي المضمّن خطوة واحدة من واجهات برمجة التطبيقات المستندة إلى السحابة الإلكترونية، مع الاستفادة من جميع مزايا تشغيل الذكاء الاصطناعي على الجهاز من جهة العميل.