مشكلة في محلل المخرجات + Supabase

أنا جديد جداً على n8n، لقد أنشأت 3-4 workflows حتى الآن. لقد استخدمت Output Parser من قبل لكنه يعطيني خطأ “output doesn’t fit required format” حتى عندما لا أرى أي مشكلة في المدخلات التي يرسلها وكيل الذكاء الاصطناعي. لقد حاولت استكشاف الأخطاء وإصلاحها معه claude عدة مرات، لكنها لم تُحل بعد. هل يمكن لأحد أن يخبرني ما المشكلة؟ أرفقت مثال JSON لـ Output Parser.
{
"type": "object",
"properties": {
"reply": {
"type": "string"
},
"customer_name": {
"type": "string"
},
"property_interest": {
"type": "string"
},
"budget_raw": {
"type": "string"
},
"budget_numeric": {
"type": "number"
},
"timeline": {
"type": "string"
},
"lead_score": {
"type": "string",
"enum": ["hot", "warm", "cold"]
},
"status": {
"type": "string",
"enum": ["new", "in_progress", "qualified"]
}
}
}

مرحباً @dikshxnt، بينما تنتظر الرد، إليك بعض الأشياء التي قد تساعدك:

الموارد المقترحة

تم المطابقة تلقائياً مع سؤالك.

المستندات:

المنتدى:

@Vaclav_Soukup, @mk_n8n, @Manasgupta840 - لقد ساعدتم في حل مشاكل مماثلة من قبل، هل يمكنكم إلقاء نظرة؟

تم الاقتراح تلقائياً من قبل روبوت مجتمع n8n. إنه برنامج تجريبي - يرجى مشاركة ملاحظاتك هنا.

مرحباً @dikshxnt أهلاً وسهلاً!
ما لصقته هو JSON Schema وليس مثال JSON، وخياري Schema Type في المحلل غير قابلين للتبديل. على “Generate from JSON Example” يقرأ العقدة أسماء الخصائص لأي شيء تلصقه ويجعل كل واحد إلزامياً، لذا فإنه ينشئ مخطط يتطلب مفاتيح type و properties حرفية، والتي لن يعيدها الوكيل أبداً. هذا يفشل في كل مرة بينما يبدو الإخراج الخاص به تماماً بحالة جيدة.
افتح Structured Output Parser وعيّن Schema Type إلى “Define using JSON Schema”، تاركاً المحتوى كما هو بالضبط.
إذا كان مضبوطاً بالفعل على هذا الإعداد، فإن المشتبهين التاليين هما budget_numeric من النوع number مقابل نموذج يعيد شيئاً مثل “1.2M” كنص، والعددان يرفضان Hot أو New مع الحروف الكبيرة.

مرحبا @dikshxnt

انظر إلى هذا

آمل أن يساعد هذا.

مرحباً @dikshxnt ،

هذا الخطأ يحدث عادةً لسببين رئيسيين عند استخدام محللات المخرجات مع وكلاء الذكاء الاصطناعي في n8n.

أولاً، مخطط JSON الخاص بك يفتقد المصفوفة المطلوبة على المستوى الأعلى. بدون إخبار المحلل بشكل صريح بالحقول الإلزامية، غالباً ما يفشل التحقق عندما يتخطى النموذج مفتاحاً أو يعيد قيماً فارغة.

ثانياً، لديك تعريفات enum صارمة لدرجة العميل المحتمل والحالة، بالإضافة إلى نوع رقم صارم للميزانية. يقوم نماذج اللغة الكبيرة بشكل متكرر بإخراج كلمات مكتوبة بأحرف كبيرة مثل Hot بدلاً من hot بأحرف صغيرة، أو تمرير نص نصي إلى الميزانية الرقمية عندما لا يتم ذكر أي رقم في المحادثة. أي عدم تطابق طفيف في التنسيق يؤدي إلى هذا الخطأ بالضبط.

حدّث مخططك ليشمل الحقول المطلوبة على المستوى الأعلى، وأضف تعليماً سريعاً في موجه النظام الخاص بوكيل الذكاء الاصطناعي لفرض تعريفات enum بأحرف صغيرة وقيم احتياطية.

إليك مخطط JSON المحدث للصقه في المحلل الخاص بك:

{
  "type": "object",
  "properties": {
    "reply": { "type": "string" },
    "customer_name": { "type": "string" },
    "property_interest": { "type": "string" },
    "budget_raw": { "type": "string" },
    "budget_numeric": { "type": "number" },
    "timeline": { "type": "string" },
    "lead_score": { "type": "string", "enum": ["hot", "warm", "cold"] },
    "status": { "type": "string", "enum": ["new", "in_progress", "qualified"] }
  },
  "required": [
    "reply",
    "customer_name",
    "property_interest",
    "budget_raw",
    "budget_numeric",
    "timeline",
    "lead_score",
    "status"
  ]
}

أضف أيضاً هذا السطر إلى موجه النظام الخاص بوكيل الذكاء الاصطناعي:

أخرج دائماً قيماً بأحرف صغيرة بصرامة لـ lead_score و status. إذا كانت budget_numeric غير معروفة، أخرج دائماً 0 بدلاً من النص أو null.

آمل أن يساعدك هذا!

شكراً!