تلقيت مؤخرًا رسالة بريد إلكتروني من باحث موهوب يسأل عن كيفية تواصل Botpress مع نماذج اللغة الكبيرة (LLMs).
كان يكتب ورقة بحثية حول تجنب الاعتماد على مزود واحد، وأراد معرفة ما إذا كنا نستخدم إطار عمل مثل LangChain أو Haystack.
سعدت جدًا بإخباره أننا أنشأنا تجريداتنا الخاصة التي تتيح لمطوري Botpress التواصل مع نماذج اللغة الكبيرة.
ونظرًا للاهتمام الواسع بالموضوع، رغبت في نشر هذه المعلومات. قد تكون مفيدة لمطورين آخرين أو لمستخدمي منصتنا. آمل أن تجدوا الموضوع ممتعًا كما استمتعت بتطويره.
طريقتان لتكامل Botpress مع نماذج اللغة الكبيرة
أنشأ Botpress تجريداته الخاصة التي تعمل بطريقتين:
1. التكاملات
تحتوي التكاملات على مفهوم الإجراءات التي لها أنواع إدخال وإخراج محددة.
لدينا مكونات مفتوحة المصدر على المنصة، بحيث يمكن للمجتمع إنشاء تكاملاتهم الخاصة التي يمكن أن تكون خاصة أو متاحة للاستخدام العام.
لذا فإن مزودي نماذج اللغة الكبيرة – مثل OpenAI وAnthropic وGroq وغيرهم – لكل منهم تكامل خاص به. هذه إحدى الطرق التي يمكن لمستخدمينا من خلالها التكامل معهم.
2. واجهات تكامل نماذج اللغة الكبيرة
فوق مفهوم التكاملات، أضفنا "واجهات".
هذه مجرد تعريفات مخطط قياسية يمكن للتكاملات توسيعها. لقد أنشأنا مخططًا قياسيًا لنماذج اللغة الكبيرة (LLMs).
طالما أن التكامل يمدد هذا المخطط، يُعتبر التكامل مزودًا لنموذج اللغة الكبير، وبالتالي يعمل مباشرة في Botpress.
إليكم بعض أمثلة تكاملات Botpress لمزودي نماذج اللغة الكبيرة المختلفين:
لدينا واجهات مماثلة لتحويل النص إلى صورة، والصورة إلى نص، والصوت إلى نص، والنص إلى صوت، وغيرها.
إعدادات النماذج
داخل Botpress Studio، لدينا إعدادان عامان: "أفضل نموذج" و"النموذج الأسرع". وجدنا أن معظم المهام غالبًا ما تناسب أحد هذين الوضعين بسهولة.


ولكن بالإضافة إلى اختيار النموذج فقط، وجدنا أن مزودي النماذج يختلفون كثيرًا في استدعاء الأدوات وصيغ الرسائل بحيث يصعب تبديل نموذج بآخر بسهولة مع توقع أداء جيد.
محرك الاستدلال في Botpress
وبسبب ذلك، أنشأنا محرك الاستدلال الخاص بنا المسمى LLMz، والذي يعمل مع أي نموذج دون الحاجة إلى تغيير (أو مع تغيير طفيف جدًا) في التعليمات. كما أنه يوفر استدعاء أدوات أفضل بكثير وغالبًا أداءً أفضل من حيث تكلفة الرموز وعدد مرات التفاعل مع نماذج اللغة الكبيرة.
يعمل هذا المحرك بأنواع typescript خلف الكواليس لتعريف الأدوات، وبتنسيق markdown لرسائل وإخراج الشيفرة، وبيئة تنفيذ أصلية للنموذج للاستدلال.
يوفر LLMz العديد من التحسينات وميزات التصحيح المطلوبة للحالات المتقدمة مثل:
- ضغط رموز الإدخال
- اقتطاع الرموز الذكي
- ذاكرة محسّنة للرموز ضمن السياق
- استدعاء الأدوات بشكل متوازي ومركب
- دمج رسائل متعددة مع استدعاءات الأدوات في مكالمة واحدة للنموذج
- أدوات آمنة تمامًا من حيث النوع (إدخال وإخراج)
- جلسات طويلة الأمد عبر تسلسل بيئة التنفيذ
- محاكاة الأدوات وتغليفها وتتبعها
- عزل كامل للتنفيذ ضمن بيئات V8 خفيفة الوزن (يسمح بتشغيل آلاف العمليات المتزامنة بسرعة وبتكلفة منخفضة)
- تكرارات تلقائية واسترداد تلقائي من الأخطاء
كل هذه الأمور كانت ضرورية لحالات استخدامنا. لكنها كانت مستحيلة أو صعبة جدًا مع استدعاء الأدوات التقليدي.
لماذا لم نعتمد نموذج التوجيه الخفيف
فكرنا طويلًا في بناء نموذج توجيه خفيف الوزن يجلس فوق النماذج الحالية ويختار تلقائيًا النموذج الأنسب للمهمة المطلوبة.
لكننا قررنا عدم القيام بذلك لعدة أسباب:
1. القدرة على التنبؤ
معظم عملائنا – وهذا أمر مفهوم – يريدون نتائج موثوقة ومتوقعة.
لذا فإن فكرة وجود موجه ديناميكي للنماذج قد تكون مقلقة للوكلاء ذوي المستوى العالي. فهي تضيف طبقة أخرى من عدم القدرة على التنبؤ في نماذج اللغة الكبيرة.
2. السرعة
زمن الاستجابة مهم جدًا لحالات الاستخدام لدينا. لكي يكون الموجه سريعًا، يجب أن يكون النموذج صغيرًا جدًا (وربما أقل ذكاءً) من النماذج التي سيوجه إليها – غالبًا ما يكون مصنفًا تقليديًا.
وعلى الرغم من أن أداء هذه النماذج يكون جيدًا عند تدريبها على مهام محددة، إلا أن: أ) أحجام السياق القصيرة تمثل مشكلة مع الموجهات الطويلة، و ب) تفشل في التعميم على موجهات أخرى خارج ما تم تدريبها عليه.
3. تفوق النماذج أو مساواتها
رغم أن المقاييس قد تشير إلى غير ذلك، إلا أننا نادرًا ما رأينا النماذج تتفوق على GPT-4o في الواقع العملي (حتى الآن).
لا يزال من غير الواضح ما إذا كانت النماذج ستتفوق حقًا في مهمة معينة دون غيرها مع مرور الوقت، أو إذا كانت جميع النماذج ستصبح ممتازة في معظم الأمور. وفي الحالة الثانية، لن يكون اختيار النموذج مجديًا.
تحصين نماذج اللغة الكبيرة للمستقبل من خلال الملاحظات
ستصبح نماذج اللغة الكبيرة سلعة في غضون سنوات قليلة، ولن يكون اختيار النموذج أمرًا مهمًا حقًا.
لهذه الأسباب، قررنا أن نستثمر جهدنا في توفير آلية جيدة لتزويد نماذج اللغة الكبيرة بأمثلة.
لذا أنشأنا نظامًا لالتقاط الملاحظات. يقوم بتخزين "الدروس المستفادة" للتنفيذات المستقبلية. ويوفر تلقائيًا أكثر هذه الدروس صلة في وقت الموجه للتنفيذات القادمة، لضمان تحسينات موثوقة ومستمرة مع الوقت.
ومع تطور نماذج اللغة الكبيرة نحو أداء أعلى، نحن مستعدون ومتحمسون للاستفادة القصوى منها لمستخدمي منصتنا.





.webp)
