تخطَّ إلى المحتوى

Rasa - إطار عمل المساعد الحواري

Rasa - إطار عمل المساعد الحواري

Rasa هو إطار عمل مفتوح المصدر لبناء مساعدين حواريين سياقيين. على عكس الشاتبوتات التي تعتمد على الأوامر فقط، يعطيك Rasa التحكم الصريح في الحوار: تحدد القصود و الكيانات و السير، والمساعد يتبع منطق عملك المحدد بدلاً من أي شيء يرتجله النموذج. كل شيء يعمل على بنيتك التحتية الخاصة، وهو مهم للمجالات الخاضعة للتنظيم. Rasa الحديثة (CALM) تمزج الفهم القائم على LLM مع تنفيذ الجريان الحتمي — يفسر النموذج، وسير العمل الخاص بك يقرر.

التثبيت

الطريقةالأمر
pippip 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 هي سير العمل الحتمي والقابل للتدقيق.

الموارد