ما وراء الحلقة الوكيلية (Agentic Loop): نمط المنسق (Orchestrator Pattern) في TypeScript
يبني معظم الناس الأنظمة متعددة الوكلاء باستخدام حلقة وكيلية (agentic loop).
يعمل النموذج اللغوي الكبير (LLM) كدماغ ومسار للتحكم؛ فهو يفكر، ويستدعي أداة، ويلاحظ، ثم يكرر العملية. هذا الأسلوب فعال في مرحلة الاستكشاف، ولكنه يسبب ثلاث مشكلات كبيرة:
- عدم القدرة على التنبؤ (Unpredictability): قد تستغرق المهمة 3 استدعاءات أو 9 استدعاءات. لا يمكنك أبداً معرفة زمن الاستجابة أو التكلفة حتى يتم التشغيل.
- عدم الحتمية (Non-determinism): يتبع السؤال نفسه مسارات مختلفة في كل مرة، مما يجعل من الصعب الوثوق بالوكلاء في المهام ذات الآثار الجانبية مثل تقديم الطلبات.
- ضعف إمكانية المراقبة (Poor observability): تتطلب عملية تصحيح الأخطاء (Debugging) إعادة تشغيل سجلات غير منظمة من عمليات الاستنتاج واستدعاءات الأدوات.
إذا كنت تعرف الوكلاء الخاصين بك ووظائفهم، فاستخدم نمط المنسق (Orchestrator pattern) بدلاً من ذلك.
يقوم المنسق بفصل اتخاذ القرار عن التنفيذ، حيث يستخدم ثلاث مراحل متميزة:
- التوجيه (Route): استدعاء واحد للنموذج اللغوي (LLM) يختار الأدوات، دون أن يجيب على المستخدم.
- التنفيذ (Execute): يقوم كود TypeScript عادي بتشغيل الوكلاء، ولا يتم استخدام أي نموذج لغوي هنا.
- التوليف (Synthesize): استدعاء واحد للنموذج اللغوي يحول البيانات إلى رد طبيعي.
ينشئ هذا النمط ثلاثة أوضاع للتنفيذ:
• الفردي (Single): وكيل واحد يتعامل مع الاستعلام.
• المتوازي (Parallel): تعمل عدة وكلاء مستقلين في وقت واحد باستخدام Promise.all مما يوفر الوقت.
• المتسلسل (Sequential): يعمل الوكلاء بترتيب معين، حيث تستخدم كل خطوة نتائج الخطوة السابقة.
باستخدام هذا النهج، ستحصل على:
- خطة يمكنك الوثوق بها: يمكنك رؤية خطة التنفيذ قبل تشغيل أي كود.
- سرعة أكبر: يتعامل التنفيذ المتوازي مع عمليات بحث متعددة في وقت واحد.
- اختبار أفضل: يمكنك إجراء اختبارات الوحدة (unit test) لمرحلة التنفيذ دون الحاجة إلى مفتاح API.
- تكاليف يمكن التنبؤ بها: يستخدم كل طلب استدعاءين بالضبط للنموذج اللغوي (LLM).
استخدم الحلقة الوكيلية (agentic loop) للاستكشاف، واستخدم المنسق (orchestrator) للأنظمة الإنتاجية التي تتطلب السرعة والموثوقية.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi