Rasa - إطار عمل المساعد الحواري
Rasa هو إطار عمل مفتوح المصدر لبناء مساعدين حواريين سياقيين. على عكس الشاتبوتات التي تعتمد على الأوامر فقط، يعطيك Rasa التحكم الصريح في الحوار: تحدد القصود و الكيانات و السير، والمساعد يتبع منطق عملك المحدد بدلاً من أي شيء يرتجله النموذج. كل شيء يعمل على بنيتك التحتية الخاصة، وهو مهم للمجالات الخاضعة للتنظيم. Rasa الحديثة (CALM) تمزج الفهم القائم على LLM مع تنفيذ الجريان الحتمي — يفسر النموذج، وسير العمل الخاص بك يقرر.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install rasa |
| مشروع جديد | rasa init |
| المتطلبات | Python 3.9–3.11 (تحقق من الدعم الحالي) |
| التحقق | rasa --version |
بنية المشروع
| المسار | يحتوي على |
|---|
domain.yml | القصود والكيانات والفتحات والردود والإجراءات |
data/nlu.yml | أمثلة تدريب لكل قصد |
data/stories.yml | مسارات محادثة مثال |
data/rules.yml | قواعد حتمية |
data/flows.yml | سير العمل المنطقي CALM |
config.yml | خط أنابيب NLU/السياسة |
actions/actions.py | إجراءات Python مخصصة |
أساسي CLI
| الأمر | الوصف |
|---|
rasa init | حالة مشروع جديد |
rasa train | تدريب النموذج |
rasa shell | محادثة معها في المحطة الطرفية |
rasa run | ابدأ الخادم |
rasa run actions | ابدأ خادم الإجراء المخصص |
rasa test | شغّل الاختبارات ضد سير العمل الاختباري |
rasa interactive | تدريب تفاعلي/تصحيح |
rasa data validate | التحقق من اتساق البيانات |
تحديد القصود والردود
# domain.yml
intents:
- greet
- check_balance
responses:
utter_greet:
- text: "Hi! How can I help?"
slots:
account_id:
type: text
mappings:
- type: from_entity
entity: account_id
actions:
- action_fetch_balance
# data/nlu.yml
nlu:
- intent: check_balance
examples: |
- what's my balance
- how much money do I have
- show account [12345](account_id)
سير العمل (CALM)
# data/flows.yml
flows:
check_balance:
description: Look up the user's account balance
steps:
- collect: account_id
- action: action_fetch_balance
- action: utter_balance
| نوع الخطوة | ماذا تفعل |
|---|
collect | اطلب وأملأ فتحة |
action | شغّل إجراء مخصص أو utter |
link | اقفز إلى سير عمل آخر |
set_slots | أسند قيم الفتحة |
next مع if | فروع شرطية |
سير العمل حتمي: يقرر النموذج اللغوي أي سير عمل يريده المستخدم، لكن سير العمل نفسه ينفذ بالضبط كما هو مكتوب.
الإجراءات المخصصة
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionFetchBalance(Action):
def name(self) -> str:
return "action_fetch_balance"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain):
account = tracker.get_slot("account_id")
balance = lookup_balance(account)
dispatcher.utter_message(text=f"Your balance is ${balance}")
return []
شغّل باستخدام rasa run actions (المنفذ الافتراضي 5055).
الاختبار
rasa test # اختبارات من النهاية إلى النهاية
rasa test nlu --cross-validation
rasa data validate # اكتش عدم تطابق المجال/البيانات
| نوع الاختبار | الفحوصات |
|---|
| اختبارات NLU | دقة القصد/الكيان |
| اختبارات القصة | مسارات المحادثة الكاملة |
| التحقق المتقاطع | تعميم NLU |
القنوات والنشر
| القناة | ملاحظة |
|---|
| REST | نقطة نهاية HTTP افتراضية |
| عنصر ويب | دردشة قابلة للتضمين |
| Slack / Teams / Telegram | موصلات مدمجة |
| الصوت | عبر تكاملات الهاتفية |
| النشر | Docker, Kubernetes/Helm, استضافة ذاتية |
Rasa مقابل الشاتبوتات التي تعتمد على LLM فقط
| الجانب | Rasa | شاتبوت LLM فقط |
|---|
| التحكم | سير عمل/منطق عملي صريح | ناشئ، يصعب تقييده |
| القابلية للتنبؤ | عالية | متغيرة |
| الامتثال | مسارات قابلة للتدقيق | صعب |
| الاستضافة | استضافة ذاتية بالكامل | عادة تعتمد على API |
| الأفضل لـ | مساعدون موجهون للمهام والخاضعون للتنظيم | محادثة مفتوحة النهاية |
للوكلاء المفتوحة النهاية انظر LangGraph أو Mastra؛ قوة Rasa هي سير العمل الحتمي والقابل للتدقيق.
الموارد