النص منطقي. ومع ذلك لا يستطيع التطبيق أن يتسلّمه، لأن الكمية تظهر مرة بصيغة «ستة»، ومرة بصيغة 6، ومرة في جملة ضمن التعليق. تمنح المخرجات المنظَّمة عملية التسليم هذه عقدًا. أما الجزء الأكثر إثارة للاهتمام فيبدأ حيث يمكن أن يكون JSON الصحيح خاطئًا في مضمونه.
لدى Mistral، تعتمد ميزة Custom Structured Outputs لهذا الغرض على مخطط JSON محدد مسبقًا. وتُوصف فيه الحقول وأنواع البيانات بشكل صريح. هذا ينظّم الواجهة بين النموذج والتطبيق، لكنه لا يغني عن التحقق مما إذا كانت قيمة ما مدعومة فعلًا بالنص المصدر.
المجهول حالة قائمة بذاتها
تذكر ملاحظتنا الخيالية مجلدات لكنها لا تذكر أي كمية. ينبغي أن تحافظ المخرجات على هذه القيمة الناقصة. وإذا أدرجت بدلًا من ذلك كمية افتراضية، فسيبدو سجل البيانات أكثر اكتمالًا، لكنه يفقد في أثناء ذلك معلومة مهمة.
يمكن أن يبدو مخطط صغير محايد تجاه المزوّدين على هذا النحو. أما الكلمات المفتاحية للمخطط التي تدعمها واجهة بعينها، فيجب التحقق منها في وثائقها الحالية قبل الاستخدام:
{
"type": "object",
"required": ["artikel", "menge", "klaerung"],
"additionalProperties": false,
"properties": {
"artikel": {"type": "string"},
"menge": {"type": ["integer", "null"], "minimum": 0},
"klaerung": {"type": "string"}
}
}
تشترط required وجود الحقل. ومع ذلك تسمح null بقيمة مجهولة بشكل صريح. ويسري الحد الأدنى على الكميات العددية. أما ما إذا كانت الكمية مسموحًا بها في عملية الطلب الفعلية، فقد يتطلب ذلك قواعد عمل إضافية. وقبل كل شيء، يجيب المخطط عن سؤال الشكل الذي يمكن للتطبيق اللاحق أن يتوقعه.
معاينة بلا نموذج وبلا طلب
يمكنك منذ الآن فحص المعالجة باستخدام بيانات نموذجية ثابتة. احفظ مقتطف HTML التالي، الذي كتبناه بأنفسنا، بوصفه ملفًا نموذجيًا محليًا وافتحه في المتصفح. إنه يعرض سجل بيانات، لكنه لا يرسل أي طلب API ولا يحفظ أي طلب شراء.
<!doctype html>
<meta charset="utf-8">
<p id="ausgabe"></p>
<script>
const daten = { artikel: "Folders", menge: null, klaerung: "Quantity missing" };
function pruefe(d) {
if (!d || typeof d !== "object" || Array.isArray(d)) throw Error("Object expected");
const keys = Object.keys(d).sort().join(",");
if (keys !== "artikel,klaerung,menge") throw Error("Check fields");
if (typeof d.artikel !== "string" || typeof d.klaerung !== "string")
throw Error("Text expected");
if (d.menge !== null && (!Number.isInteger(d.menge) || d.menge < 0))
throw Error("Check quantity");
}
pruefe(daten);
const menge = daten.menge === null ? "not yet known" : String(daten.menge);
document.querySelector("#ausgabe").textContent =
daten.artikel + ": " + menge + ". " + daten.klaerung;
</script>
الدالة أداة تحقق محدودة من إعدادنا لهذا المخطط التعليمي تحديدًا، وليست مكتبة JSON Schema كاملة. غيّر الكمية بالتتابع إلى 6، ثم إلى -1، ثم إلى السلسلة النصية «ستة». بعد ذلك أضف حقلًا غير متوقع. وفي كل مرة، راقب العرض أو رسالة الخطأ في أدوات المطوّر.
يتيح لك هذا اختبار مرحلة انتقالية قبل أن يدخل أي نموذج على الخط. فأنت تعرف كيف يتعامل التطبيق مع القيم المعروفة والمجهولة وغير الصالحة. ولا يمكن لإجابة نموذج لاحقة أن تصل إلى هذا المقتطف إلا بعد اجتياز القواعد نفسها.
التحقق من الشكل والمعنى كلٌّ على حدة
قد يكون 6 المسموح به شكليًا خاطئًا مع ذلك إذا كانت الملاحظة تذكر أربعة. لذلك أضف في التطبيق الحقيقي، عند الحاجة، إحالة إلى المصدر، وتحقق من القيم المهمة مقارنةً بالمدخلات. وفي حال وجود ملاحظات متناقضة، ينبغي أن تُنتج العملية نقطة تحتاج إلى توضيح بدلًا من اختيار رقم عشوائي.
تستخدم المخرجات textContent. وبذلك يُدرج النص الخارجي بوصفه نصًا بدلًا من تفسيره على أنه HTML دون أي فحص. ولا مكان لمفاتيح المزوّدين في مقتطف متصفح كهذا. فاستدعاء النموذج سيكون خطوة معالجة منفصلة لها صلاحيات وصول خاصة بها ومعالجة أخطاء خاصة بها.
عرض المقتطف على موقع إلكتروني
إذا أردت عرض هذه الواجهة الصغيرة تحديدًا على موقع إلكتروني قائم، فإن وضع المطوّر في KENJTEC WebSiteBuilder ai هو أيضًا أحد الأماكن الممكنة لشيفرة HTML/JavaScript الخاصة بك. يُنقل المقتطف الذي جرى فحصه يدويًا، وتدعم معاينة الشيفرة وإصدارات الشيفرة الخاصة بك المراجعة اللاحقة. ولا يُنشئ ذلك أي اتصال أصلي مع Mistral.
تبقى الفكرة الجوهرية مستقلة عن مكان الاستخدام: فلكلٍّ من صيغة النموذج، وأداة التحقق الخاصة بك، والعرض الآمن، والقرار بشأن المضمون مهمة مختلفة. ومن يُبقِ هذه العناصر منفصلة يستطيع أن يتسلّم مخرجات الذكاء الاصطناعي بطريقة مقصودة، دون أن يحوّل إجابة معقولة بصمت إلى إجراء.
المصادر والحالة
المصادر بتاريخ 25 أكتوبر 2026. Custom Structured Outputs.

