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