إتاحة الإخراج المنظَّم لواجهة برمجة التطبيقات Prompt API

تاريخ النشر: 13 أيار (مايو) 2025

تشتهر النماذج اللغوية الكبيرة (LLM) بالردود الطويلة المفاجئة. حتى إذا طلبت من النموذج الإجابة بـ "صحيح" أو "خطأ" فقط، قد يردّ النموذج بعبارة ودية وأكثر مما طلبت، مثل: "بالتأكيد، الإجابة هي: صحيح".

لحلّ هذا التحدي، تتيح لك Prompt API تحديد تنسيق إخراج JSON للاستجابة من النموذج من خلال تمرير مخطّط JSON إلى الطريقتَين LanguageModel.prompt() و LanguageModel.promptStreaming(). أصبح التنسيق المنظَّم متاحًا بدءًا من الإصدار 137 من Chrome.

ما هو مخطّط JSON؟

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

التحقّق بنجاح من عنصر JSON مقارنةً بمخطّط JSON في أداة التحقّق من مخطّط JSON

تمرير مخطّط JSON إلى Prompt API

للتأكّد من أنّ النموذج يتوافق مع مخطّط JSON طلبات، عليك تمرير مخطّط JSON كوسيطة إلى prompt() أو promptStreaming() methods' options object كقيمة لحقل 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 صالح.

ويؤدي ذلك إلى تقريب الذكاء الاصطناعي المضمّن خطوة واحدة من واجهات برمجة التطبيقات المستندة إلى السحابة الإلكترونية، مع كل مزايا تشغيل الذكاء الاصطناعي من جهة العميل على الجهاز.