تسيطر موجة هندسة الذكاء الاصطناعي الحالية على "التوجيه المدعوم من نماذج اللغات الكبيرة". بينما يكون هذا النهج مغرياً، إلا أنه هش بشكل معروف. الاعتماد على نموذج لغوي كبير لقرار الخطوة التالية في سير عمل معقد يقدم عدم حتمية، وتأخيراً، وتكاليف غير متوقعة. بالنسبة للأنظمة الجاهزة للإنتاج، خاصة في التمويل أو الرعاية الصحية أو اللوجستيات، فإن الحتمية ليست ميزة بل هي متطلب أساسي.
في هذا المنشور، نستكشف كيفية استبدال التوجيه الاحتمالي بتنسيق الآلة الحالة. من خلال التعامل مع الوكلاء كعقد صريحة في آلة الحالة المحدودة (FSM)، نحصل على تحكم كامل في مسارات التنفيذ، وضمان التكرار، وتبسيط عملية تصحيح الأخطاء.
لماذا تتفوق آلات الحالة على توجيه نماذج اللغات الكبيرة
عندما تستخدم نموذجاً لغياً كبيراً لتوجيه المهام، فأنت تطلب من النموذج بشكل أساسي أن يعمل كشجرة قرار. يعاني هذا النهج من عدة عيوب حرجة:
- عدم الحتمية: قد تؤدي المدخلات نفسها إلى مسارات تنفيذ مختلفة في عمليات تشغيل مختلفة.
- الحمل المعرفي: يهدر النموذج الرموز في تحليل السياق الذي لا يحتاجه لقرار الخطوة التالية.
- كوابيس تصحيح الأخطاء: يكون تتبع سبب اتخاذ فرع معين صعباً عندما يكون القرار مدفوناً في مخرج احتمالي.
يفصل تنسيق الآلة الحالة بين منطق التدفق ومنطق الوكيل. تحدد آلة الحالة قواعد المشاركة، بينما يقوم الوكلاء (سواء كانوا نماذج لغوية كبيرة، أو نصوصاً حتمية، أو واجهات برمجة تطبيقات خارجية) بأداء العمل الفعلي. يعكس هذا المعمارية أفضل ممارسات هندسة البرمجيات التقليدية، مما يجلب الهيكل إلى الأنظمة القائمة على الوكلاء.
تنفيذ سير عمل حتمي
يمكننا تنفيذ آلة حالة قوية باستخدام enum المدمج في بايثون للحالات وموزع للانتقالات. فيما يلي مثال عملي لنظام فرز دعم العملاء.
import enum
from typing import Dict, Any
class SupportState(enum.Enum):
INITIAL = "initial"
TICKET_CREATED = "ticket_created"
ESCALATED = "escalated"
RESOLVED = "resolved"
class SupportOrchestrator:
def __init__(self):
self.state = SupportState.INITIAL
self.context: Dict[str, Any] = {}
def handle_request(self, request: str) -> str:
# الخطوة 1: تحديد النية باستخدام مصنف خفيف الوزن أو مطابقة الكلمات الرئيسية
# هذا حتمي، على عكس استدعاء نموذج لغوي كبير
if "urgent" in request.lower():
self.state = SupportState.ESCALATED
return self.escalate_process()
elif "refund" in request.lower():
self.state = SupportState.TICKET_CREATED
return self.create_ticket_process()
else:
self.state = SupportState.RESOLVED
return self.resolve_process()
def escalate_process(self) -> str:
# منطق التصعيد إلى وكيل بشري
return "Escalating to senior support team."
def create_ticket_process(self) -> str:
# منطق إنشاء إدخال في قاعدة البيانات
return "Refund ticket created."
def resolve_process(self) -> str:
return "Request resolved automatically."
دمج نماذج اللغات الكبيرة كعقد حالة
لا تلغي آلات الحالة الحاجة إلى نماذج اللغات الكبيرة؛ بل تقيد استخدامها فقط. يمكن استخدام نموذج لغوي كبير داخل حالة محددة لتوليد رد أو استخراج الكيانات، لكن الانتقال إلى الحالة التالية تحكمه الشيفرة، وليس النموذج.
على سبيل المثال، بعد حالة ticket_created، قد تقوم بتفعيل نموذج لغوي كبير لصياغة رد. ومع ذلك، يجب أن يعتمد القرار للانتقال إلى RESOLVED أو ESCALATED على معايير صريحة (مثل درجة تحليل المشاعر < -0.5) بدلاً من سؤال النموذج "ما رأيك في ما يجب أن يحدث بعد ذلك؟"
الخاتمة
يتطلب بناء سير عمل حتمي متعدد الوكلاء تغييراً في العقلية. بدلاً من السماح للذكاء الاصطناعي بقرار التدفق، نحدد التدفق ونسمح للذكاء الاصطناعي بتنفيذ مهام محددة داخل ذلك التدفق. من خلال الاستفادة من تنسيق الآلة الحالة، يمكن للمطورين بناء أنظمة ليست فقط أكثر موثوقية وفعالية من حيث التكلفة، ولكن أيضاً أسهل في التدقيق والصيانة. في عصر الذكاء الاصطناعي الصناعي، الحتمية هي أساس الثقة.