콘텐츠로 이동

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맞춤형 또는 utter 동작 실행
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                 # end-to-end tests
rasa test nlu --cross-validation
rasa data validate        # catch domain/data mismatches
테스트 유형확인
NLU tests의도/엔티티 정확도
Story tests전체 대화 경로
Cross-validationNLU 일반화

채널 및 배포

채널참고
REST기본 HTTP 엔드포인트
Web widget임베드 가능한 채팅
Slack / Teams / Telegram기본 제공 커넥터
Voice통신 통합을 통해
DeploymentDocker, Kubernetes/Helm, 자가호스팅

Rasa vs LLM 전용 챗봇

측면Rasa프롬프트 전용 LLM 봇
제어명시적 흐름/비즈니스 논리신흥, 제약 어려움
예측 가능성높음변수
규정 준수감사 가능한 경로어려움
호스팅완전히 자가호스팅보통 API 종속
최고의 용도규제, 작업 지향 어시스턴트오픈 엔드 대화

오픈 엔드 에이전트는 LangGraph 또는 Mastra를 참고하세요; Rasa의 강점은 결정론적이고 감사 가능한 작업 흐름입니다.

리소스