يرسل التوجيه كل طلب إلى أرخص نموذج قادر على الإجابة عليه بشكل صحيح، ويتحوّل احتياطيًّا إلى نموذج آخر عندما يفشل الأول أو يتراجع أداؤه. يصعّد التدرّج (cascade) بناءً على الجودة: يجيب نموذج صغير، ولا تنتقل إلى نموذج أكبر إلا الحالات منخفضة الثقة. أمّا التحوّل الاحتياطي (fallback) فيعالج الفشل التشغيلي: يعيد انتهاء المهلة أو تجاوز حد المعدّل توجيه الطلب إلى مزوّد سليم. ومعظم أعباء العمل المالية تحتاج إلى كليهما.
عندما ينطلق عبء العمل إلى الإنتاج، تكون الغريزة الأولى هي اختيار أقوى نموذج وتوجيه كل شيء إليه. فهذا ينجح في العرض التجريبي وسهل التفكير فيه. لكنه أيضًا أغلى تصميم وأقلّه موثوقية يمكنك إطلاقه. فالنموذج القوي بطيء، ويفرض حدود معدّل تحت ذروة إقفال الربع المالي، وأنت تدفع أسعار الطبقة الحدودية (frontier) لتصنيف ما إذا كان مستند ما فاتورة أم إشعار حوالة. تلك المهمة الأخيرة يؤديها نموذج أصغر بكثير بشكل صحيح، وأسرع.
الغاية من التوجيه هي الكفّ عن معاملة تيار متباين من الطلبات كأن كل واحد منها يستحق القدر ذاته من الحوسبة. في العمليات المالية يكون التيار متباينًا فعلًا. فاستخراج الحقول من كشف مُنظَّم ونظيف ليس المشكلة ذاتها كتسوية ثلاثة مصادر متعارضة، وليس أيٌّ منهما كصياغة سرد يوقّع عليه جهة معتمِدة.
صنّف الطلب قبل أن تختار النموذج
يبدأ التوجيه بقرار رخيص حول الطلب، يُتّخذ قبل تشغيل أي نموذج مكلف. أنت تجيب عن سؤالين: ما مدى صعوبة هذا الطلب، وكم تكلّف الإجابة الخاطئة هنا.
الصعوبة يمكنك غالبًا قراءتها من المدخلات دون نموذج على الإطلاق. الطول، والبنية، ووجود جداول، وعدد الأنظمة المصدرية التي يتعيّن على الإجابة الوصول إليها. فملف PDF وحيد جيّد التنسيق ليس المهمة ذاتها كحزمة من الملاحق الممسوحة ضوئيًّا. وحيث لا تكفي القاعدة، يمنحك مصنّف (classifier) صغير أو نموذج محلّي قصير درجة صعوبة مقابل جزء من السنت.
تكلفة الخطأ هي حيث يختلف العمل المالي عن توجيه المحادثات العامة. فبعض المخرجات تُقرأ مرة واحدة ثم تُهمَل. وأخرى تدخل في ملف مدفوعات، أو دفتر أستاذ عام، أو تقرير نشاط مشبوه، ورقمٌ خاطئ هناك تترتّب عليه عواقب تتجاوز بكثير فاتورة واجهة البرمجة (API). تلك توجّهها إلى نموذج أقوى وإلى مسار تحقّق أثقل بغضّ النظر عن مدى بساطة المدخلات ظاهريًّا. وجّه على المحورين معًا:
- صعوبة منخفضة، مخاطر منخفضة: أصغر نموذج، دون تحقّق. استخراج الحقول من المستندات النظيفة، والتصنيفات البديهية.
- صعوبة عالية، مخاطر منخفضة: نموذج متوسط أو كبير. الملخّصات والمسودّات التي يراجعها إنسان قبل أن يحدث أي شيء.
- أي صعوبة، مخاطر عالية: أقوى نموذج مع تحقّق مستقلّ من الأرقام. أي شيء يكتب في دفتر أستاذ، أو يحرّك أموالًا، أو يغذّي إفصاحًا تنظيميًّا.
أبقِ الموجّه نفسه مملًّا. قواعد حيثما تستطيع صياغتها، ونموذج صغير حيثما تعذّر ذلك، وكل قرار مسجَّل مع بصمة (hash) للمدخلات كي تتمكّن من إعادة تشغيل سبب توجيه طلب إلى حيث ذهب. الموجّه يقع على المسار الحرج لكل طلب، لذا لا يمكن أن يكون الجزء البطيء أو المتقلّب.
صعّد من أجل الجودة، واعرف متى يتوقّف التصعيد عن الجدوى
يشغّل التصعيد المتدرّج (cascade) النموذج الرخيص أولًا، ولا يصعّد إلا عندما لا تكون الإجابة جيدة بما يكفي. والهندسة كلها في كلمة “يكفي”. أنت بحاجة إلى إشارة تدلّ على أن نموذجًا صغيرًا أخطأ، محسوبة دون النموذج الكبير الذي تحاول تجنّبه.
الإشارات المفيدة في السياق المالي ملموسة لا انطباعية. هل يطابق الإجمالي المستخرَج مجموع بنود السطور. هل يتوافق الرصيد المذكور مع المستند المصدري. هل أعاد النموذج JSON صالحًا مقابل المخطط (schema). هل الثقة المُبلَّغة، أو الاحتمال على مستوى الرمز (token) للحقول المهمّة، دون عتبة حدّدتها من مجموعة تقييم (eval set) بدل تخمينها. حين تجتاز الإجابة الرخيصة هذه الفحوص، تبقيها. وحين لا تجتازها، تصعّد.
الرقم الذي يخبرك ما إذا كان التصعيد المتدرّج يستحق مكانه هو معدّل التصعيد على حركة المرور الحقيقية. فإذا استقرّت تسع مكالمات من كل عشر عند الطبقة الرخيصة، تكون الاقتصاديات ممتازة. أمّا إذا صعد نصفها إلى النموذج الأغلى، فأنت تدفع ثمن استدلالَين إضافةً إلى الفحص للحصول على إجابة واحدة، وكان الأفضل لك توجيه هذا الصنف من المدخلات مباشرةً إلى النموذج القوي. قِس هذا لكل نوع من المدخلات، لا في المجمل، لأن معدّلًا إجماليًّا سليمًا قد يخفي نوع مستند يصعّد في كل مرة تقريبًا. ذلك النوع من المستندات ينتمي إلى مسار مباشر.
اضبط عتبات التصعيد مقابل مجموعة تقييم (eval set) موسومة، مع ميزانية إيجابيات كاذبة (false-positive) اتفقت عليها مع جانب الأعمال، بالطريقة ذاتها التي تضبط بها درجة احتيال. فالتصعيد بحماسة مفرطة يحرق الوفورات. والتصعيد النادر يسمح بمرور الإجابات الخاطئة. وليس أيٌّ منهما إعدادًا تجده بالحدس.
يبقي التحوّل الاحتياطي عبء العمل يعمل حين يفشل المزوّد
يغطّي التحوّل الاحتياطي (fallback) النموذج الذي كان سيجيب بشكل جيد لكنه لم يحظَ بالفرصة قط. فالمزوّد يفرض عليك حدود معدّل، أو منطقة معطّلة، أو زمن الاستجابة تجاوز ميزانيتك، أو نشرٌ من جانبهم غيّر السلوك بين ليلة وضحاها. لا شيء من هذا يتعلّق بأي إجابة أفضل. بل يتعلّق بالبقاء قيد التشغيل.
صمّمه بوصفه سباكة:
- حدّد مهلة صارمة وميزانية إعادة محاولة لكل طلب. وحين تُستنفدان، تابِع بدل تعليق الطابور.
- احتفظ بنموذج ثانٍ، من مزوّد مختلف مثاليًّا، قادر على خدمة الطلب ذاته بعقد التلقين (prompt contract) والمخطط (schema) ذاتهما. فإذا احتاج التبديل إلى جراحة في التلقين، فليس تحوّلًا احتياطيًّا يمكنك الوثوق به في الثالثة صباحًا.
- استخدم قاطع دائرة (circuit breaker). بعد سلسلة من الإخفاقات، توقّف عن مطاردة النموذج الأساسي، ووجّه حركة المرور إلى الثانوي، واستجوب الأساسي بهدوء قبل العودة إليه.
- تراجَع بشكل متعمّد في المسار عالي المخاطر. فإذا تعذّر الوصول إلى كلا النموذجين، ينبغي لأي طلب يمسّ مدفوعات أن ينتظر في طابور المعالجة البشرية، لا أن يخمّن. فالبذل الصامت لأفضل مجهود هو الإعداد الخاطئ حين تتحرّك الأموال.
يتكامل التصميمان. يقرّر الموجّه أين ينبغي أن يذهب الطلب، ويقرّر التصعيد المتدرّج (cascade) ما إذا كانت الإجابة الرخيصة تصمد، ويقرّر التحوّل الاحتياطي (fallback) ما العمل حين لا يستجيب النموذج المقصود. أبقِها طبقات منفصلة كي تتمكّن من التفكير في كل منها على حدة. وسجّل المسار بأكمله لكل طلب، لأنه حين يُطعَن في رقم مالي بعد أسابيع، فإن الإجابة عن “أي نموذج أنتج هذا ولماذا” يجب أن تأتي من سجلّ، لا من إعادة بناء. وفي عبء عمل يمسّ دفاتر الأستاذ والإفصاحات، يكون هذا الأثر التدقيقي جزءًا من المنتَج، لا عبئًا تقتطعه لاحقًا.
الأسئلة الشائعة
هل يضرّ التصعيد المتدرّج (cascade) بزمن الاستجابة إذا كان النموذج الرخيص يفشل عادةً؟
فقط إذا كان معدّل التصعيد لديك مرتفعًا. قِس نسبة الطلبات التي تنتقل إلى الطبقة الأغلى على حركة المرور الحقيقية؛ فإذا تجاوزت هذه النسبة نحو 20 إلى 30 بالمئة، فإن الطبقة الرخيصة لا تستحق مكانها ويجدر بك توجيه تلك المدخلات مباشرةً.
كيف يختلف التحوّل الاحتياطي (fallback) عن التصعيد المتدرّج (cascade)؟
يصعّد التدرّج (cascade) بناءً على الجودة، فينتقل إلى نموذج أقوى عندما لا يكون النموذج الأرخص واثقًا بما يكفي. أمّا التحوّل الاحتياطي (fallback) فيبدّل المزوّدين أو النماذج عندما يتعطّل النموذج الأساسي تشغيليًّا: انتهاء المهلة، أو تجاوز حدود المعدّل، أو انقطاع الخدمة. كلٌّ منهما يعالج مشكلة مختلفة، وأنت بحاجة إلى كليهما.
كيف أمنع الموجّه نفسه من أن يصبح نقطة فشل؟
اجعل قرارات التوجيه حتمية ورخيصة: قواعد بدل المصنّف (classifier) حيثما أمكن، ونموذج محلّي صغير حيثما تعذّر ذلك. سجّل كل مسار مع بصمة (hash) المدخلات كي يمكن إعادة تشغيل أي قرار، واجعل المسار الافتراضي هو الآمن حين لا يكون الموجّه متيقّنًا.