رفض المخرجات المنظمة حالة يجب تمييزها من جواب ذي حقول، لا خانة نملؤها حتى يبدو الجدول كاملا. نقرأ مسار الرفض في مثال Chat Completions الذي تعرضه OpenAI، ثم نقارن بطاقات مؤلفة لا تتضمن طلبا حساسا أو استجابة حقيقية من نموذج.
الخلاصة السريعة
ليس بالضرورة؛ في المسار الموثق قد تظهر إشارة رفض لا تتبع مخطط البيانات المطلوب، لذلك نفصلها عن قراءة الحقول.
- توضح OpenAI أن الرفض لا يتبع بالضرورة المخطط، ويبين مثال Chat Completions فحص refusal قبل parsed. [1] لا نعمم شكل الإشارة على كل واجهة.
- في تمريننا، بطاقة بيانات تحمل عنوانا وملخصا تختلف عن بطاقة رفض؛ لا نستخرج من نص الرفض عنوانا أو نملأ القيم المفقودة بعبارات مصنوعة.
- غياب حقل اختياري في بطاقة بيانات ليس وحده إشارة رفض. وكذلك فشل قراءة نص لا يكشف سبب الرفض أو وجوده دون الإشارة المناسبة.
- ميز نوع الاستجابة أولا، ثم راجع البيانات إن وصلت. غياب الرفض لا يثبت صحة الحقول، ولا نقرر سبب حالة فعلية أو طريقة تجاوزها؛ لم نجرب النموذج.
أي فرع يبينه دليل المخرجات المنظمة؟
يذكر الدليل أن الرفض لا يتبع بالضرورة مخطط response_format. ويفحص مثال Chat Completions قيمة refusal قبل قراءة parsed. [1]
نقتصر على هذا المثال الموثق، ولا نفترض أن اسم الحقل ومكانه متطابقان في جميع المنتجات أو الطرق. المطلوب من القارئ فهم أن مسار الحصول على بيانات منظمة قد يحتاج تمييز نتيجة أخرى قبل استهلاكها كبيانات.
لا ننشئ قاعدة تقول إن أي نص لا يطابق المخطط هو رفض. الإشارة الموثقة لها دور، أما نص وصل ناقصا أو تعذر تحليله فيحتاج معلومات عن حالته. تجميع الحالات المختلفة في خانة واحدة يفقد هذا الفرق.
بطاقتان لهما وظيفتان مختلفتان
نعلن أن التطبيق التعليمي يريد حقلي «العنوان» و«الملخص» من بطاقة نشاط. نخترع حالة أ تحمل عنوان «رسم الورق» وملخص «نشاط عن طي شكل بسيط». هذه قيم مصنوعة للمقارنة، لا نتيجة استخراج راجعناها من إعلان حقيقي.
ونخترع حالة ب نعرفها صراحة بأنها فرع رفض في عقد المثال، مع رسالة عامة «لا أقدم البيانات المطلوبة». لا نضع هذه الجملة في حقل الملخص ثم نعدها ملخص النشاط. فهي تصف عدم تقديم البيانات، ولا تقدم محتواها.
كذلك لا نختلق عنوانا للحالة ب لكي يقبلها جدول العرض. يمكنك إظهار نوع الحالة للقارئ كما هو في تصميمك، دون تحويله إلى تفاصيل نشاط لم يصل وصفه.
ما الذي لا نعرفه من حقل غائب؟
نضيف بطاقة ج من نوع بيانات، ونعلن في تصميمها أن «الملاحظة» حقل اختياري. لا تتضمن البطاقة هذا الحقل. هذا الغياب في فرضنا لا يساوي الحالة ب التي سميناها رفضا؛ إنهما حالتان مختلفتان صراحة.
وفي بطاقة د لا نقدم إلا نصا تعذر على برنامج افتراضي قراءته. لم نعلن وجود إشارة رفض أو سبب تقني. نكتب أن نوع المشكلة غير محسوم من هذه المادة، ولا ننسبها إلى سياسة سلامة أو مخطط غير مدعوم بالتخمين.
يحفظ هذا التمييز معنى النقص. حقل اختياري غائب، وفرع رفض، ومشكلة قراءة ليست أسماء بديلة لحدث واحد. ولا يعني ذلك أن البطاقة ج أو محتوى أ صحيحان؛ لم نقدم مصدرهما للتحقق.
ماذا نراجع قبل استخدام الحقول؟
نقترح أن يحدد المراجع الواجهة المقصودة ونوع الاستجابة وإشارتها الموثقة، ثم يقرأ الحقول في فرع البيانات. بعد ذلك يراجع قيمها مع المادة التي يفترض أنها تمثلها؛ مجرد عدم ظهور رفض لا يمنح القيم صحة تلقائية.
إذا كانت المواد المتاحة مجرد لقطة لجدول، فقد لا تكشف كيف صنف التطبيق الاستجابة. نطلب السجل المناسب عند الحاجة، ولا نخترع تشخيصا من شكل الخانات الفارغة. يمكن وصف ما يظهر مع إبقاء مسار المعالجة مجهولا.
هذه بطاقات تعليمية مؤلفة. لم نرسل طلبا، ولم نقس معدل رفض أو نحدد سبب حالة مستخدم، ولم نقترح تجاوز أي قيود. يوضح الرسم قرار تصنيف الفرع قبل قراءة البيانات، ثم مراجعتها إذا وصلت.
المصادر ومتابعة القراءة
- OpenAI: Structured model outputs — Refusals (يفتح في نافذة جديدة)developers.openai.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
