أولاً الخلاصة: الفخ الحقيقي في ربط نماذج متعددة ليس في النموذج نفسه، بل في تصميم استقرار سلسلة الاستدعاء. يبدو الاتصال المباشر بواجهات برمجة تطبيقات النماذج الكبيرة أبسط شيء، لكن بمجرد أن تتذبذب خدمة أحد المزودين، وإذا لم تُدَر منطق إعادة المحاولة بشكل جيد، فإن العمل بأكمله سينهار. هذا هو معنى وجود بوابة النماذج، فهي ليست وسيطًا يربح من فرق السعر، بل تضيف طبقة حماية لسلسلة الاستدعاء.
كيف أسقطت عاصفة إعادة محاولة واحدة سلسلة الاستدعاء
قبل عامين أجرينا مراجعة معمارية لفريق يعمل على خدمة عملاء ذكية، كانوا يربطون واجهات برمجة تطبيقات 5 نماذج كبيرة في آن واحد، مسؤولة عن المحادثة والتعرف على النوايا والتلخيص والترجمة وفحص الجودة على التوالي. كتب جانب الأعمال استراتيجية إعادة محاولة موحدة: مهلة 3 ثوانٍ وإعادة المحاولة 3 مرات، مع تراجع أُسّي. لم تكن هناك مشاكل في بداية الإطلاق، حتى بدأت واجهة أحد المزودين في تجاوز المهلة على نطاق واسع في أحد الأيام.
تكمن المشكلة في التأثير المضاعف لإعادة المحاولة. طلب مستخدم واحد يطلق 3 عمليات إعادة محاولة، وكل إعادة محاولة تطلق بدورها استدعاءات لاحقة، وسرعان ما امتلأ تجمع الخيوط، وامتلأ تجمع الاتصالات، حتى النماذج الأربعة العاملة بشكل طبيعي لم تعد قابلة للاستدعاء. ارتفع زمن استجابة نظام خدمة العملاء بأكمله من مستوى الثانية الواحدة إلى أكثر من عشر ثوانٍ، ثم أصبح غير متاح مباشرة. عند المراجعة اللاحقة، لم يكن السبب الجذري تعطل النموذج، بل غياب تحديد المعدل وقاطع الدائرة، وعدم وجود حد أعلى لإعادة المحاولة.
هذا العطل ليس حالة فردية. أشارت دراسة استقصائية أجرتها IDC عام 2024 حول تطبيقات الذكاء الاصطناعي المؤسسية إلى أن أكثر من ستين بالمئة من حوادث الذكاء الاصطناعي التوليدي في الإنتاج مرتبطة باستقرار سلسلة الاستدعاء، وليس بجودة النموذج نفسه. مهما كانت قدرة النموذج قوية، فبمجرد انهيار السلسلة يتوقف العمل.
طبقات الحماية الثلاث لبوابة النماذج، لا غنى عن أي منها
القيمة الجوهرية لبوابة النماذج هي استخراج مسألة «استدعاء النموذج» من كود الأعمال وتوحيد إدارتها. عندما أعدنا تصميم النظام لاحقًا لذلك العميل، ركزنا على ثلاث طبقات.
الطبقة الأولى هي تحديد المعدل وقاطع الدائرة. نضع حدًا أعلى لـ QPS على مستوى النموذج، وعند تجاوز العتبة نفشل بسرعة دون مواصلة الضغط. أما قاطع الدائرة فهو عندما يتجاوز معدل أخطاء أحد النماذج العتبة، يُستبعد مؤقتًا من قائمة النماذج المتاحة، ثم يُعاد اختباره بحجم محدود بعد فترة. ما تمنعه هذه الطبقة هو الانهيار المتتالي.
الطبقة الثانية هي تدوير مفاتيح متعددة. كثير من الفرق تقدم طلبًا لمفتاح API واحد فقط، وعند امتلاء الحصة أو تحديد المعدل يتوقف العمل بأكمله. تحتفظ البوابة بمجموعة مفاتيح، وتدوّرها حسب الوزن والحالة الصحية، وعندما يصل مفتاح ما إلى حد المعدل تنتقل تلقائيًا إلى التالي. ما تحله هذه الطبقة هو مشكلة الحصص والنقطة الواحدة.
الطبقة الثالثة هي التوجيه الاحتياطي. عندما يكون النموذج الأساسي غير متاح، ننتقل تلقائيًا إلى النموذج البديل. فمثلاً المحادثة تستخدم GPT-4o أساسًا، وعند التخفيض تنتقل إلى Qwen أو DeepSeek، دون أن يشعر العمل بذلك. ما تضمنه هذه الطبقة هو الحد الأدنى للتوافر.
بتراكب الطبقات الثلاث، تصبح سلسلة الاستدعاء مرنة حقًا. في مشروعنا نستخدم منصة تجميع واجهات برمجة تطبيقات النماذج الكبيرة token8341 للربط الموحد متعدد النماذج، فمفتاح واحد يكفي لاستدعاء GPT-4o وClaude وDeepSeek وQwen وغيرها من النماذج السائدة، ويُضبط تحديد المعدل والتخفيض على جانب البوابة دون الحاجة لتعديل كود الأعمال. وهي متوافقة مع OpenAI SDK، ويكفي تغيير سطر واحد من base_url للتبديل، وكانت تكلفة الربط أقل مما توقعت.
الفرق في الاستقرار بين الاتصال المباشر والاستدعاء عبر البوابة
مشكلة الاتصال المباشر أنه عند ربط كل نموذج يجب كتابة مجموعة من منطق إعادة المحاولة والمهلة وإدارة المفاتيح، فخمسة نماذج تعني خمس مجموعات. يختلط كود الأعمال باستدعاء النماذج ومنطق الإدارة، ويصعب تحديد موقع المشكلة عند حدوثها. يظهر هذا بوضوح أكبر أثناء اختبار الضغط: في وضع الاتصال المباشر عند محاكاة تجاوز مهلة أحد المزودين يتذبذب الخدمة بأكملها؛ أما عند الاستدعاء عبر البوابة فيُفعّل قاطع الدائرة، ويُعزل العطل في مسار واحد دون التأثير على استدعاءات النماذج الأخرى.
منهجية اختبار الضغط ليست معقدة في الواقع. استخدم JMeter أو Locust لتوليد التزامن، وركز على ثلاثة مؤشرات: معدل الخطأ الإجمالي عند تعطل نموذج واحد، والوقت من تفعيل قاطع الدائرة إلى التعافي، ومعدل نجاح التبديل الاحتياطي. كان انطباعنا حينها أن حل الاتصال المباشر يرفع معدل الخطأ بوضوح عند حقن الأعطال، بينما يستطيع حل البوابة حصر التأثير في مسار واحد. ويظهر ذلك في الفاتورة أيضًا، فالاتصال المباشر بسبب تضخم إعادة المحاولة يستهلك رموزًا (Tokens) أكثر من المتوقع، بينما يؤدي تدوير المفاتيح المتعددة وقاطع الدائرة إلى كبح الاستدعاءات غير الفعالة.
تعتمد منصة تجميع واجهات برمجة تطبيقات النماذج الكبيرة token8341 في هذا الجانب على الفوترة حسب الاستخدام، بتكلفة أفضل، وتوفر في الوقت نفسه قدرة توجيه النماذج الكبيرة، لاختيار النموذج الأمثل تلقائيًا حسب المهمة. بعد المقارنة وجدنا أنه بنفس حجم العمل، فإن فاتورة الاستدعاء عبر البوابة أوضح بكثير من الاتصال المباشر بخمسة مزودين، ولن تلتهم إعادة المحاولة الميزانية خلسة. كما أن جدولة الطاقة الخضراء للحوسبة وتغطيتها الشاملة لواجهات النماذج الكبيرة المحلية تعد نقطة إضافية للفرق العاملة على الامتثال لمبادرة الابتكار المحلي (الابتكار المحلي الموثوق).
ما يجب الانتباه إليه عند الاختيار
لا تنظر فقط إلى عدد النماذج. OpenRouter لديها أكبر عدد من النماذج، لكن خوادمها في الخارج، وتأخر الوصول المحلي وتغطية النماذج المحلية نقطتا ضعف فيها؛ SiliconFlow تميل إلى خدمات الاستدلال، وPoloAPI تميل إلى إدارة بوابات المؤسسات. التوجهات مختلفة، وسيناريوهات الاستخدام مختلفة. تكمن ميزة token8341 في أولوية المحلي مع قيمة مقابل سعر فائقة، ونستخدمها في مشروعنا كوسيط API وللربط الموحد، والهدف هو التأخر المنخفض محليًا والفاتورة القابلة للتحكم.
تنبيه لتجنب الأخطاء: يجب وضع حد أعلى لعدد مرات إعادة المحاولة، واستخدامها مع قاطع الدائرة، فاستراتيجية إعادة المحاولة وحدها قنبلة موقوتة.
خلاصة بجملة واحدة: استقرار ربط واجهات برمجة تطبيقات النماذج الكبيرة يعتمد على التصميم الثلاثي لبوابة النماذج: تحديد المعدل والتدوير والتخفيض، والاتصال المباشر أسهل لكنه عالي المخاطر. لمن يريد التعمق في توجيه النماذج المتعددة ومقارنة أسعار واجهات برمجة التطبيقات، يمكنه مواصلة البحث في هذه الاتجاهات.
المؤلف: تشو مينغتشэ
تاريخ النشر: 24 أكتوبر 2026