Salta ai contenuti

Rasa - Cheatsheet del Framework di IA Conversazionale

Rasa - Cheatsheet del Framework di IA Conversazionale

Rasa è un framework open-source per costruire assistenti conversazionali contestuali. A differenza dei chatbot solo prompt, Rasa ti dà il controllo esplicito sul dialogo: definisci intenti, entità e flussi e l”assistente segue la logica di business che specifichi piuttosto che ciò che il modello improvvisa. Tutto viene eseguito sulla tua infrastruttura, che è importante per i domini regolamentati. Il Rasa moderno (CALM) miscela la comprensione basata su LLM con l”esecuzione del flusso deterministica — il modello interpreta, i tuoi flussi decidono.

Installation

MethodCommand
pippip install rasa
New projectrasa init
RequirementsPython 3.9–3.11 (check current support)
Verifyrasa --version

Project Structure

PathContains
domain.ymlIntenti, entità, slot, risposte, azioni
data/nlu.ymlEsempi di training per intento
data/stories.ymlPercorsi di conversazione di esempio
data/rules.ymlRegole deterministiche
data/flows.ymlFlussi di logica di business CALM
config.ymlPipeline NLU/policy
actions/actions.pyAzioni Python personalizzate

Core CLI

CommandDescription
rasa initForma una nuova scaffolding un assistente
rasa trainAllena il modello
rasa shellChatta con esso nel terminale
rasa runAvvia il server
rasa run actionsAvvia il server di azioni personalizzate
rasa testEsegui test su storie di test
rasa interactiveCorrezione/training interattivo
rasa data validateVerifica la coerenza dei dati

Defining Intents & Responses

# 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)

Flows (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
Step typeDoes
collectChiedi e riempi uno slot
actionEsegui un”azione personalizzata o utter
linkSalta a un altro flusso
set_slotsAssegna valori slot
next with ifBranching condizionale

I flussi sono deterministici: l”LLM decide quale flusso l”utente vuole, ma il flusso stesso viene eseguito esattamente come scritto.

Custom Actions

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 []

Esegui con rasa run actions (porta predefinita 5055).

Testing

rasa test                 # end-to-end tests
rasa test nlu --cross-validation
rasa data validate        # catch domain/data mismatches
Test typeChecks
NLU testsAccuratezza di intento/entità
Story testsPercorsi di conversazione completi
Cross-validationGeneralizzazione di NLU

Channels & Deployment

ChannelNote
RESTEndpoint HTTP predefinito
Web widgetChat incorporabile
Slack / Teams / TelegramConnettori integrati
VoiceVia integrazioni telefoniche
DeploymentDocker, Kubernetes/Helm, self-hosted

Rasa vs LLM-Only Chatbots

AspectRasaPrompt-only LLM bot
ControlFlussi/logica di business esplicitiEmergente, difficile da vincolare
PredictabilityAltoVariabile
CompliancePercorsi verificabiliDifficile
HostingCompletamente self-hostedDi solito dipendente da API
Best forAssistenti regolati e task-orientedConversazione aperta

Per agenti aperti vedi LangGraph o Mastra; la forza di Rasa è i flussi di task deterministici e verificabili.

Resources