ممارسة المخرجات المهيكلة في Ollama
غالبًا ما يؤدي تشغيل نماذج اللغة الكبيرة (LLMs) محليًا إلى أخطاء في تحليل JSON. تطلب من النموذج إرجاع JSON فقط، ومع ذلك فإنه لا يزال يضيف علامات markdown أو نصًا إضافيًا. هذا يؤدي إلى تعطل الكود الخاص بك.
منذ إصدار Ollama 0.3.0، يمكنك إصلاح ذلك باستخدام المعلمة format. هذا يجبر النموذج على اتباع مخطط JSON (JSON schema). وهذا يجعل من المستحيل فعليًا على النموذج إضافة نص إضافي أو markdown.
لقد اختبرت هذا باستخدام Gemma4 و Ollama 0.30.7. إليك النتائج.
المشكلة في النصوص الطبيعية
يتم تدريب النماذج على المحادثة، لذا فهي ترغب في قول "إليك ملف JSON الخاص بك". حتى مع الأوامر (prompts) الصارمة، غالبًا ما تضع الردود داخل كتل برمجية (code blocks). وتفشل دالة json.loads() في Python عندما تواجه تلك الكتل.
ميزة السرعة
استخدام معلمة format أسرع بكثير.
- بدون مخرجات مهيكلة: 32 ثانية
- مع مخرجات مهيكلة: 5 ثوانٍ
هذا يمثل تحسنًا في السرعة بمقدار 6.4 ضعفًا. لا يضيع النموذج الوقت في اتخاذ قرار بشأن كيفية تنسيق النص، بل يقوم فقط بتوليد الرموز (tokens) التي تتوافق مع المخطط الخاص بك.
استخدام Pydantic لضمان سلامة النوع (Type Safety)
لست بحاجة إلى كتابة مخططات JSON يدويًا. استخدم نماذج Pydantic لإنشائها تلقائيًا.
- عرّف نموذج Pydantic الخاص بك.
- استخدم
model_json_schema()لإنشاء المخطط. - مرر هذا المخطط إلى Ollama.
- استخدم
model_validate_json()لتحليل البيانات والتحقق من صحتها في آن واحد.
هذا النهج مثالي لوكلاء الذكاء الاصطناعي (AI agents). يمكنك استخدامه لتحديد الأداة التي يجب على الوكيل استدعاؤها بعد ذلك. إذا حاول النموذج اختراع اسم أداة غير موجودة، فسيقوم Pydantic باكتشاف ذلك فورًا.
القيود الحالية
- المخططات المتداخلة بعمق قد تعيد أحيانًا مصفوفات فارغة في النماذج الصغيرة.
- الحقول الاختيارية قد تعيد سلاسل نصية فارغة بدلاً من
null. - المخططات الكبيرة تستهلك مساحة أكبر من نافذة السياق (context window) الخاصة بك.
أفضل الممارسات
- استخدم الاستخراج البسيط للنماذج الصغيرة.
- استخدم Pydantic للتحقق من الصحة واختيار أدوات الوكيل.
- استخدم نماذج أكبر للبيانات المعقدة والمتداخلة.
- أضف منطق إعادة المحاولة (retry logic) عندما يطلق Pydantic خطأ في التحقق من الصحة.
توقف عن مجرد الأمل في أن تعمل أوامرك. استخدم المخرجات المهيكلة لجعل خطوط معالجة LLM المحلية لديك موثوقة.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi