مطور يبني إطار عمل قائم على آلة الحالة المحدودة لجعل روبوتات الدردشة المبنية على نماذج اللغة الكبيرة تتبع النصوص البرمجية بشكل موثوق وبتكلفة منخفضة
يصف مطور بناء مكتبة مفتوحة المصدر مخصصة تجبر روبوتات الدردشة المبنية على نماذج اللغة الكبيرة على اتباع نص برمجي محدد مسبقًا بدقة من خلال دمج آلة حالة محدودة مع نموذج اللغة، بدلاً من الاعتماد على بنى الوكلاء متعددة الاستدعاءات المكلفة. المشروع المسمى tg-statemachine-bot يقسم المحادثات إلى مراحل محددة في ملفات YAML، ويزود النموذج فقط بالتعليمات ذات الصلة بالمرحلة الحالية للحفاظ على صغر السياق وسلوك قابل للتنبؤ.
المؤلف، أثناء عمله على روبوت محادثة للأعمال، اكتشف أن نماذج اللغة الكبيرة تواجه صعوبة في اتباع النصوص الطويلة والمفصلة بشكل موثوق، لأن نافذة السياق الواسعة لديها تتسبب في فقدان البنية على مدى التعليمات الطويلة، وأن الحلول الحالية القائمة على الوكلاء لتقسيم المهام إلى خطوات تضاعف عدد استدعاءات النماذج وبالتالي تكلفة كل حوار. لحل هذه المشكلة بتكلفة منخفضة، بنى المؤلف مكتبة مفتوحة المصدر حيث تحكم آلة الحالة المحدودة (FSM) الرسم البياني العام للمحادثة وتتحكم في تعليمات المرحلة التي يتم تمريرها إلى نموذج اللغة الكبير في أي لحظة معينة، بحيث يرى النموذج فقط التعليمات ذات الصلة بالمرحلة الحالية بدلاً من النص الكامل. تتكون البنية من ثلاث وحدات: وحدة FSM التي تتبع الرسم البياني للحوار وحالة المستخدم، ووحدة vars_memory التي تخزن متغيرات الحوار مع سجل التغييرات، ووحدة conversation_core التي تنسق استدعاءات نموذج اللغة الكبير. في كل دورة، يجب أن يستجيب النموذج بعقد ثابت من أربعة حقول — رسالة إلى المستخدم، وإشارة انتقال، ونتائج مرحلة منظمة، وملخص مرحلة — وإذا انتهك هذا العقد (JSON غير صالح، أو إشارات انتقال غير موجودة، أو نتائج مفقودة)، يرسل النظام تلقائيًا طلب متابعة تصحيحي. يتم الحفاظ على استمرارية المحادثة عبر انتقالات المرحلة باستخدام سلسلة previous_response_id الخاصة بواجهة برمجة التطبيقات Responses من OpenAI، مما يقلل التكلفة أيضًا من خلال التسعير الأرخص لقراءة الذاكرة المخبأة. يتم وصف نص الحوار العام في ملف YAML، مع تخزين تعليمات المرحلة التفصيلية في ملفات منفصلة، مما يسمح بإعادة استخدام المحرك الأساسي عبر مجالات روبوتات محادثة مختلفة دون تعديل. لإدارة تعقيد تحرير YAML يدويًا، بنى المؤلف سكربتًا يحول YAML إلى مخطط draw.io لمراجعة بشرية أسهل، بالإضافة إلى أداة عرض سجلات لفحص محادثات الاختبار بتنسيق مشابه للدردشة مع سجلات نظام قابلة للتوسيع، بما في ذلك تحديثات في الوقت الفعلي عند التصحيح محليًا. كعرض توضيحي، يتضمن المستودع مثالاً لـ 'روبوت محلل' يساعد المطورين المستقلين في تحديد نطاق متطلبات المشروع، والذي أفاد المؤلف بأنه يتطلب فقط حوالي 1.03 استدعاء نموذج لكل رسالة مستخدم مع الاستمرار في اتباع النص وجمع المعلومات المنظمة بشكل موثوق، على الرغم من أن هندسة المحفزات للروبوت التجريبي تركت غير مصقولة.
المصدر: Habr — хаб NLP —
الأصلي
