سؤال جيد — لقد عملت على هذا مع Ollama و n8n كثيراً. إليك ما يعمل بشكل موثوق فعلاً في عام 2026:
**1. استخدم معامل `format: json` الأصلي في Ollama (الطبقة الأكثر موثوقية)**
عند تكوين عقدة Ollama Chat Model، أضف `format: json` في الحقول الإضافية / معاملات النموذج. هذا يجبر Ollama على تقييد أخذ العينات من الرموز إلى رموز JSON صالحة فقط — إنها ليست هندسة فوريات، بل هي مفروضة على مستوى النموذج. نماذج مثل `llama3` و `mistral` و `qwen2.5` تدعم هذا جيداً. هذا وحده يزيل حوالي ~80٪ من الإخراج غير المشكل بشكل صحيح.
**2. اقرنها مع محلل الإخراج المنظم في n8n**
أكدم Ollama format:json + محلل الإخراج المنظم (مع مخطط JSON). يخبر المخطط النموذج بالحقول التي تتوقعها؛ يتحقق المحلل من صحتها واستخراجها. إذا كنت تقوم بالتوجيه، قد يكون المخطط الخاص بك بسيطاً مثل `{ “route”: { “type”: “string”, “enum”: [“billing”, “support”, “sales”] } }`.
**3. عقدة Code كشبكة أمان لك**
بعد المحلل، أضف عقدة Code تفعل:
```js
const out = $input.first().json;
if (!out.route || ![‘billing’,‘support’,‘sales’].includes(out.route)) {
throw new Error('Invalid route: ’ + JSON.stringify(out));
}
return [{ json: out }];
```
هذا يحمي العقد التالعة بحيث لا توجهها أبداً بشكل خاطئ بصمت.
**4. بشكل خاص لنية SQL**
لا تطلب من النموذج إخراج SQL. اطلب منه إخراج النية المنظمة: `{ “table”: “orders”, “filters”: [{“field”: “status”, “op”: “eq”, “value”: “pending”}], “limit”: 10 }`. بعد ذلك، تعين عقدة Code هذا إلى استعلام معامل. أكثر أماناً وأكثر موثوقية من SQL الحر.
**5. حلقة إصلاح من محاولة واحدة إذا لزم الأمر**
بالنسبة للمخططات المعقدة حيث قد يفشل النموذج أحياناً بشكل متكرر، قم بتوصيل عقدة IF للتحقق من أخطاء التحليل → إعادة الإرسال إلى Ollama مع رسالة الخطأ المرفقة بالفورية. إعادة محاولة واحدة تلتقط معظم المتأخرين. إذا فشلت مرتين، قم بتوجيه إلى بديل / مراجعة بشرية بدلاً من التخمين.
مزيج format:json + schema + التحقق من الكود هو ما أستخدمه في سير العمل بأسلوب الإنتاج. يعمل بدون أي عقد مدفوعة.