コンテンツにスキップ

Rasa - 会話型 AI フレームワーク チートシート

Rasa - 会話型 AI フレームワーク チートシート

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.ymlCALM ビジネスロジックフロー
config.ymlNLU/ポリシーパイプライン
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カスタムまたはアクションを実行
link別のフローにジャンプ
set_slotsスロット値を割り当て
next with if条件付き分岐

フロー決定論的です: LLM がユーザーがどのフローを望むかを決定しますが、フロー自体は正確に記述どおり実行されます。

カスタムアクション

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 の強みは決定論的で監査可能なタスクフロー。

リソース