تاريخ النشر: 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 Schema للحصول على وصف كامل لإمكانات التنسيق.
في الواقع، تتفوّق النماذج اللغوية الكبيرة في إنشاء JSON Schema. ما عليك سوى وصف القيود بلغة طبيعية في طلبك وتقديم مثال صالح على عنصر JSON، وبذلك تكون قد قطعت نصف الطريق. يمكنك بعد ذلك التحقّق من صحة عناصر JSON باستخدام مخطط JSON الذي تم إنشاؤه باستخدام إحدى أدوات التحقّق من صحة مخطط JSON، مثل أداة التحقّق من صحة مخطط JSON من Newtonsoft على الإنترنت.

تمرير مخطّط JSON إلى Prompt API
للتأكّد من أنّ النموذج يلتزم بمخطّط JSON المطلوب، عليك تمرير مخطط JSON كمعلَمة إلى الكائن prompt() أو promptStreaming() الخاص بطرق العرض كقيمة للحقل responseConstraint.
إليك مثال بسيط جدًا على مخطط JSON يضمن أن يردّ النموذج إما بـ 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 صالح.
ويقرّب هذا التغيير الذكاء الاصطناعي المضمّن خطوة واحدة من واجهات برمجة التطبيقات المستندة إلى السحابة الإلكترونية، مع جميع مزايا تشغيل الذكاء الاصطناعي المحلي من جهة العميل.