Salta el contingut

Pràctica PR5071/01: Chatbot en Català amb Rasa i Docker

Objectius

En acabar aquesta pràctica sereu capaços de:

  • Configurar un entorn Rasa complet utilitzant Docker
  • Crear intents i entitats en català per a un domini d'ús real
  • Definir stories i rules per gestionar fluxos de conversa
  • Entrenar i avaluar la qualitat del chatbot
  • Desplegar el chatbot i interactuar-hi via API REST
  • Personalitzar el chatbot amb el vostre nom com a identificador únic

Prerequisits

Requisit Detalls
Temps estimat 6 hores (3 sessions de 2h)
Docker Desktop Versió 24.x o superior instal·lada i en execució
RAM mínima 4 GB disponibles per a Docker
Espai en disc 3 GB lliures (imatge Rasa + dades)
Coneixements YAML bàsic, terminal de comandes, conceptes de chatbot
Sistema operatiu Windows 10/11 amb WSL2, macOS o Linux

Docker Desktop a Windows

Assegureu-vos que WSL2 estigui activat a Windows i que Docker Desktop tingui accés a WSL2. Si treballeu a l'aula, comproveu que el proxy no bloqueja el registre de Docker (registry-1.docker.io).


Introducció

Rasa: el framework de chatbots de codi obert

Rasa és el framework de codi obert més estès per a la construcció de chatbots i assistents virtuals conversacionals. Creat el 2016, és usat per empreses com Adobe, Allianz, Deutsche Telekom i centenars d'organitzacions que necessiten desplegaments on-premise o en núvol privat sense dependre d'APIs de tercers.

A diferència dels models de llenguatge grans (LLMs) com GPT-4 o Claude, Rasa no és un model generatiu: és un framework d'enteniment del llenguatge natural (NLU) + gestió del diàleg. Funciona reconeixent intents i entitats a les frases de l'usuari i executant accions predefinides basant-se en regles i stories d'entrenament.

Quan usar Rasa en lloc d'un LLM?

Criteri Rasa LLM (GPT-4, Claude...)
Privadesa de dades Alt: tot on-premise Baix: dades enviades al núvol
Control del comportament Alt: determinista Mig: pot al·lucinar
Cost operacional Baix: servidor propi Alt: cost per token
Flexibilitat Limitada al domini definit Alta: qualsevol tema
Integració amb BBDD Molt bona: accions Python Possible però complex
Temps d'entrenament Minuts No requereix (inferència)
Regulació (AI Act) Fàcilment auditable Requereix esforç extra
Casos d'us ideals FAQ, formularis, processos estructurats Consultes obertes, creativitat

Rasa continua sent la millor elecció per a chatbots d'atenció al client amb fluxos de conversa ben definits, especialment en entorns regulats (sanitat, banca, administració pública) on la previsibilitat i l'auditabilitat del comportament són crítics.

El cas d'ús: Assistent d'Institut

En aquesta pràctica construirem un chatbot que actuï com a assistent virtual d'un institut de formació professional. Respondrà preguntes sobre horaris, assignatures, professorat i tràmits administratius. Es tracta d'un cas d'ús ideal per a Rasa: domini ben definit, respostes estructurades i necessitat de privadesa (no volem enviar dades dels alumnes a APIs externes).


Part 1: Configuració de l'entorn

1.1. Creació del directori de treball

Substituïu joan-garcia pel vostre nom real (en minúscules i amb guions):

# Crear i entrar al directori del projecte
mkdir chatbot-joan-garcia
cd chatbot-joan-garcia

# Verificar que Docker esta en execucio
docker version

1.2. Descàrrega de la imatge Rasa

# Descarregar la imatge oficial de Rasa
# Nota: la versio 3.6.20 es estable i ben documentada
docker pull rasa/rasa:3.6.20

# Verificar que la imatge s'ha descarregat correctament
docker images | grep rasa

La descàrrega pot trigar 5-10 minuts (la imatge ocupa aproximadament 1,2 GB).

1.3. Inicialització del projecte

# Inicialitzar un projecte Rasa buit al directori actual
# --user root: necessari per crear fitxers dins del volum muntat
# --no-prompt: no fa preguntes interactives
docker run --name rasa-init-joan-garcia \
  --user root \
  -v $(pwd):/app \
  rasa/rasa:3.6.20 \
  init --no-prompt

# Netejar el contenidor d'inicialitzacio (ja no el necessitem)
docker rm rasa-init-joan-garcia

Alternativa a Windows PowerShell

Si useu PowerShell en lloc de Git Bash, substituïu $(pwd) per ${PWD}. Si useu el Símbol del Sistema (cmd.exe), useu %cd%.

1.4. Verificació de l'estructura creada

ls -la

Hauria de mostrar:

./
├── actions/
│   └── actions.py
├── data/
│   ├── nlu.yml
│   ├── rules.yml
│   └── stories.yml
├── models/
├── tests/
├── config.yml
├── credentials.yml
├── domain.yml
└── endpoints.yml

Part 2: Estructura del Projecte Rasa

Abans de crear el contingut en català, enteneu la funció de cada fitxer:

domain.yml

Defineix el domini del chatbot: els intents que pot reconèixer, les entitats que pot extreure, els slots (memòria), les respostes que pot donar i les accions que pot executar. És el "cervell" de la configuració.

data/nlu.yml

Conté els exemples d'entrenament NLU: parelles (text, intent) i exemples d'entitats. El model NLU aprèn d'aquests exemples a classificar frases noves en intents i a extreure entitats.

data/stories.yml

Defineix fluxos de conversa complets: seqüències d'intents i accions que el bot ha après a seguir. Les stories permeten al model aprendre com conduir converses de múltiples torns.

data/rules.yml

Defineix regles deterministes: respostes que han de produir-se sempre, sense variació, quan es detecta un intent determinat. Ideals per a salutacions, comiats i accions crítiques.

config.yml

Configura el pipeline NLU (com es processen les frases) i les políticas de diàleg (com el bot decideix l'acció següent). Inclou la selecció del model de llengua.

credentials.yml

Configura les connexions amb canals externs: Slack, Telegram, Facebook Messenger, i el canal REST (que usarem per a les proves).

endpoints.yml

Configura les URL dels serveis externs: servidor d'accions personalitzades, tracker store, event broker...


Part 3: Crear el Chatbot en Català

3.1. Fitxer config.yml

Substituïu el contingut de config.yml per la configuració optimitzada per al català:

# config.yml
# Configuració del pipeline NLU per a català
# Alumne: Joan Garcia - Institut Sa Palomera

recipe: default.v1

language: ca  # Catala

pipeline:
  # Tokenitzacio: divideix el text en paraules
  - name: WhitespaceTokenizer

  # Extractor de subparaules (captura variants morfologiques)
  - name: CountVectorsFeaturizer
    analyzer: char_wb
    min_ngram: 1
    max_ngram: 4

  # Vectors de paraules per capturar semantica
  - name: CountVectorsFeaturizer

  # Classificador d'intents (DIET: Dual Intent Entity Transformer)
  - name: DIETClassifier
    epochs: 150
    constrain_similarities: true
    entity_recognition: true

  # Extractor d'entitats basades en expressions regulars
  - name: RegexEntityExtractor
    use_lookup_tables: true

  # Detector de frases fora de domini
  - name: FallbackClassifier
    threshold: 0.65
    ambiguity_threshold: 0.1

policies:
  # Politica de memoritzacio: recorda stories exactes
  - name: MemoizationPolicy
    max_history: 5

  # Politica de regles: segueix les rules.yml
  - name: RulePolicy
    core_fallback_threshold: 0.4
    core_fallback_action_name: "action_default_fallback"
    enable_fallback_prediction: true

  # Politica TED: aprèn de les stories
  - name: TEDPolicy
    max_history: 8
    epochs: 100
    constrain_similarities: true

3.2. Fitxer domain.yml

# domain.yml
# Domini del chatbot de l'Institut Sa Palomera
# Nom del bot: Assistent_Joan_Garcia

version: "3.1"

intents:
  - salutacio
  - comiat
  - horaris
  - assignatures
  - professorat
  - matricula
  - aules
  - fora_de_domini

entities:
  - dia_setmana
  - nom_assignatura
  - nom_professor

slots:
  dia_consultat:
    type: text
    mappings:
      - type: from_entity
        entity: dia_setmana

responses:
  utter_salutacio:
    - text: "Hola! Sóc l'Assistent_Joan_Garcia, el chatbot de l'Institut Sa Palomera. En què et puc ajudar?"
    - text: "Benvingut a l'Institut Sa Palomera! Sóc l'Assistent_Joan_Garcia. Estic aquí per ajudar-te."

  utter_comiat:
    - text: "Fins aviat! Si tens més preguntes, estaré aquí. Bon dia!"
    - text: "Adéu! Ha estat un plaer ajudar-te. Fins la propera!"

  utter_horaris:
    - text: |
        L'institut obre de dilluns a divendres:
        - **Matí**: 8:00 - 14:30
        - **Tarda**: 15:00 - 21:00 (alguns dies)
        - **Secretaria**: 9:00 - 14:00 i dimarts de 16:00 - 18:00
        Pots consultar l'horari complet al tauler d'anuncis o a la web de l'institut.

  utter_assignatures:
    - text: |
        Les assignatures del curs d'IA i Big Data (IABD) són:
        - **Mòdul 5071**: Models d'Intel·ligència Artificial (66h)
        - **Mòdul 5072**: Sistemes d'Aprenentatge Automàtic (66h)
        - **Mòdul 5073**: Programació d'Intel·ligència Artificial (165h)
        - **Mòdul 5074**: Sistemes de Big Data (99h)
        - **Mòdul 5075**: Big Data Aplicat (99h)
        - **C088**: Projecte d'IA i Big Data (105h)
        Vols saber més sobre alguna assignatura en concret?

  utter_professorat:
    - text: |
        El professorat del cicle IABD és:
        - **Francesc Barragán**: Models IA, Programació IA, Sistemes ML
        - **Departament de Informàtica**: Big Data i Projecte
        Per a tutories, consulta el tauler d'anuncis o al correu de secretaria.

  utter_matricula:
    - text: |
        Per a informació sobre matrícula:
        📋 **Secretaria** de l'institut: planta baixa
        🕘 **Horari**: dilluns a divendres de 9:00 a 14:00
        📧 **Correu**: secretaria@insapalomera.cat
        📞 **Telèfon**: 972 33 00 XX
        Porta el DNI i la documentació acadèmica requerida.

  utter_aules:
    - text: |
        Les aules del cicle IABD es troben a la primera planta:
        - **Aula 1.1**: Classes teòriques i pràctiques
        - **Aula 1.2**: Laboratori d'ordinadors (36 PC)
        - **Sala de servidors**: accés restringit al professorat
        Consulta el tauler per si hi ha canvis d'aula puntuals.

  utter_fora_de_domini:
    - text: "Ho sento, no tinc informació sobre aquest tema. Pots preguntar sobre horaris, assignatures, professorat, matrícula o aules."
    - text: "Aquesta pregunta va més enllà del que sé. Et recomano consultar directament amb la secretaria de l'institut."

  utter_default:
    - text: "No he entès  la teva pregunta. Pots reformular-la? Puc ajudar-te amb horaris, assignatures, professorat, matrícula i aules."

actions:
  - utter_salutacio
  - utter_comiat
  - utter_horaris
  - utter_assignatures
  - utter_professorat
  - utter_matricula
  - utter_aules
  - utter_fora_de_domini
  - utter_default

session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: true

3.3. Fitxer data/nlu.yml

# data/nlu.yml
# Exemples d'entrenament NLU en català
# Alumne: Joan Garcia

version: "3.1"

nlu:
  - intent: salutacio
    examples: |
      - Hola
      - Bon dia
      - Bona tarda
      - Bona nit
      - Hola, com estàs?
      - Ola!
      - Ei, hola
      - Buenas
      - Salut
      - Hola, necessito ajuda
      - Hola bot
      - Benvingut
      - Hey

  - intent: comiat
    examples: |
      - Adéu
      - Fins aviat
      - A reveure
      - Gràcies, adéu
      - Fins demà
      - Fins la propera
      - Ens veiem
      - Gràcies per l'ajuda, adéu
      - Fins aviat, gràcies
      - Bye
      - Fins!
      - Moltes gràcies, fins aviat

  - intent: horaris
    examples: |
      - Quins són els horaris de l'institut?
      - A quina hora obre la secretaria?
      - Quan tanca l'institut?
      - Horari de l'escola
      - A quina hora comencen les classes?
      - Fins quina hora hi ha classes a la tarda?
      - L'institut obre dissabtes?
      - Quin és l'horari d'atenció al públic?
      - A quina hora obre el centre?
      - Quan obre secretaria?
      - Horaris d'atenció
      - Fins quan puc anar a secretaria?
      - Horari de dilluns
      - Classes al matí o a la tarda?

  - intent: assignatures
    examples: |
      - Quines assignatures hi ha al curs d'IA?
      - Quins mòduls té el cicle d'IABD?
      - Quantes assignatures té el curs?
      - Informació sobre el mòdul de Big Data
      - Que s'estudia al cicle d'intel·ligència artificial?
      - Quines matèries té el curs?
      - Em pots dir els mòduls del cicle?
      - Continguts del cicle IABD
      - Que aprendré al curs?
      - Descripció de les assignatures
      - Quantes hores té el curs?
      - Temari del cicle
      - Que és el mòdul 5073?

  - intent: professorat
    examples: |
      - Qui és el professor del cicle d'IA?
      - Quin professorat té el curs?
      - Qui ensenya Big Data?
      - Professors de l'IABD
      - Com es diu el tutor del curs?
      - Qui imparteix la part de programació?
      - Tutors del cicle
      - Informació sobre els professors
      - Qui és el professor de models IA?
      - Professorat responsable del curs
      - Com puc contactar amb el tutor?
      - Qui fa les classes de machine learning?

  - intent: matricula
    examples: |
      - Com em puc matricular?
      - Informació sobre la matrícula
      - On he d'anar per matricular-me?
      - Documentació necessaria per matricular-se
      - On és secretaria?
      - Termini de matrícula
      - Preu del curs
      - Cost de la matrícula
      - Quan s'obre la matrícula?
      - Requisits per accedir al cicle
      - Com puc sol·licitar plaça?
      - On puc informar-me sobre l'admissió?
      - Quina documentació necessito?

  - intent: aules
    examples: |
      - On és l'aula d'informàtica?
      - On es fan les classes d'IA?
      - On queda el laboratori d'ordinadors?
      - Quines aules fan servir per al cicle IABD?
      - Planta on hi ha les classes?
      - On és l'aula del curs?
      - Hi ha laboratori d'ordinadors?
      - Equipament de les aules
      - On es fan les pràctiques?
      - Instal·lacions del centre

  - intent: fora_de_domini
    examples: |
      - Quantes estrelles té el sol?
      - Recomanació de restaurants a Blanes
      - Quin temps farà demà?
      - Preus de l'autobús
      - Historia de Catalunya
      - Ajuda'm amb els deures de matemàtiques
      - Digues-me un acudit
      - Com puc aprendre a cuinar?
      - Compra en línia

3.4. Fitxer data/stories.yml

# data/stories.yml
# Fluxos de conversa per al chatbot de l'Institut Sa Palomera

version: "3.1"

stories:
  - story: Conversa basica de salutacio i comiat
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: comiat
      - action: utter_comiat

  - story: Consulta d horaris despres de salutacio
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: horaris
      - action: utter_horaris
      - intent: comiat
      - action: utter_comiat

  - story: Consulta d assignatures despres de salutacio
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: assignatures
      - action: utter_assignatures

  - story: Consulta combinada assignatures i professorat
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: assignatures
      - action: utter_assignatures
      - intent: professorat
      - action: utter_professorat
      - intent: comiat
      - action: utter_comiat

  - story: Consulta de matricula
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: matricula
      - action: utter_matricula
      - intent: horaris
      - action: utter_horaris
      - intent: comiat
      - action: utter_comiat

  - story: Consulta d aules
    steps:
      - intent: aules
      - action: utter_aules

  - story: Pregunta fora del domini
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: fora_de_domini
      - action: utter_fora_de_domini
      - intent: horaris
      - action: utter_horaris

  - story: Conversa completa d informacio del curs
    steps:
      - intent: salutacio
      - action: utter_salutacio
      - intent: assignatures
      - action: utter_assignatures
      - intent: professorat
      - action: utter_professorat
      - intent: aules
      - action: utter_aules
      - intent: matricula
      - action: utter_matricula
      - intent: comiat
      - action: utter_comiat

3.5. Fitxer data/rules.yml

# data/rules.yml
# Regles deterministes - s'apliquen sempre que es detecta l'intent

version: "3.1"

rules:
  - rule: Respondre sempre a la salutacio
    steps:
      - intent: salutacio
      - action: utter_salutacio

  - rule: Respondre sempre al comiat
    steps:
      - intent: comiat
      - action: utter_comiat

  - rule: Gestionar preguntes fora del domini
    steps:
      - intent: fora_de_domini
      - action: utter_fora_de_domini

  - rule: Fallback quan no s entén la pregunta
    steps:
      - intent: nlu_fallback
      - action: utter_default

Part 4: Entrenament i Prova

4.1. Entrenament del model

# Entrenar el model NLU i el gestor de dialeg
# El model es guardara a la carpeta models/
docker run --name rasa-train-joan-garcia \
  --user root \
  -v $(pwd):/app \
  rasa/rasa:3.6.20 \
  train \
  --domain domain.yml \
  --data data/ \
  --out models/ \
  --fixed-model-name chatbot_joan_garcia

# Eliminar el contenidor un cop acabat
docker rm rasa-train-joan-garcia

L'entrenament pot trigar entre 3 i 10 minuts depenent del maquinari. Hauries de veure missatges com:

Finished training policies.
NLU model trained successfully.
Your Rasa model is trained and saved at 'models/chatbot_joan_garcia.tar.gz'

4.2. Prova en mode shell (consola interactiva)

# Iniciar el chatbot en mode shell interactiu
docker run --name rasa-shell-joan-garcia \
  --user root \
  -v $(pwd):/app \
  -p 5005:5005 \
  -it \
  rasa/rasa:3.6.20 \
  shell \
  --model models/chatbot_joan_garcia.tar.gz

Provar les frases següents per verificar el comportament:

Tu: Hola
Bot: Hola! Sóc l'Assistent_Joan_Garcia...

Tu: Quins horaris teniu?
Bot: L'institut obre de dilluns a divendres...

Tu: I les assignatures del curs?
Bot: Les assignatures del curs d'IA i Big Data...

Tu: Qui fa les classes?
Bot: El professorat del cicle IABD...

Tu: Adéu!
Bot: Fins aviat! Si tens més preguntes...

Per sortir del shell: escriu /stop o prem Ctrl+C.

4.3. Avaluació del model

# Avaluar el model amb les stories de test
docker run --name rasa-eval-joan-garcia \
  --user root \
  -v $(pwd):/app \
  rasa/rasa:3.6.20 \
  test \
  --model models/chatbot_joan_garcia.tar.gz \
  --stories data/stories.yml \
  --out results/

docker rm rasa-eval-joan-garcia

Part 5: Prova de l'API REST

5.1. Iniciar el servidor REST

# Iniciar el servidor Rasa en segon pla
docker run --name rasa-server-joan-garcia \
  --user root \
  -v $(pwd):/app \
  -p 5005:5005 \
  -d \
  rasa/rasa:3.6.20 \
  run \
  --model models/chatbot_joan_garcia.tar.gz \
  --enable-api \
  --cors "*" \
  --debug

Espereu uns 10 segons perquè el servidor arrenqui completament.

5.2. Provar l'API amb curl

# Prova 1: Salutació
curl -X POST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-Type: application/json" \
  -d '{"sender": "joan_garcia", "message": "Hola!"}'

# Resposta esperada:
# [{"recipient_id":"joan_garcia","text":"Hola! Sóc l'Assistent_Joan_Garcia..."}]

# Prova 2: Horaris
curl -X POST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-Type: application/json" \
  -d '{"sender": "joan_garcia", "message": "Quins horaris teniu?"}'

# Prova 3: Assignatures
curl -X POST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-Type: application/json" \
  -d '{"sender": "joan_garcia", "message": "Quines assignatures té el cicle IABD?"}'

# Prova 4: Pregunta fora del domini
curl -X POST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-Type: application/json" \
  -d '{"sender": "joan_garcia", "message": "Quin temps farà demà?"}'

# Prova 5: Comiat
curl -X POST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-Type: application/json" \
  -d '{"sender": "joan_garcia", "message": "Gràcies, fins aviat!"}'

Visualitzar la resposta formatada

Instal·la jq per veure les respostes JSON formatades: curl ... | jq . A Windows, pots instal·lar jq via winget install jqlang.jq.

5.3. Consultar el tracker (memòria de la conversa)

# Consultar l'historial de la conversa de l'usuari joan_garcia
curl http://localhost:5005/conversations/joan_garcia/tracker | jq .

5.4. Aturar el servidor

docker stop rasa-server-joan-garcia
docker rm rasa-server-joan-garcia

Part 6: Ampliació Opcional (Puntuació Extra)

6.1. Afegir un nou intent: consulta de notes

Afegiu a domain.yml un nou intent consulta_notes i la seva resposta, afegiu exemples a nlu.yml, i afegiu una story i una rule corresponents. Reentreneu el model i proveu el nou intent.

6.2. Acció personalitzada amb lògica Python

Rasa permet crear accions personalitzades en Python que poden consultar bases de dades, fer càlculs o integrar-se amb APIs externes. Exemple bàsic:

# actions/actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
import datetime

class AccioHorariActual(Action):
    """Informa de l'horari de secretaria en funcio del dia i hora actual."""

    def name(self) -> Text:
        return "action_horari_actual"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        ara = datetime.datetime.now()
        dia_setmana = ara.weekday()  # 0=dilluns, 6=diumenge
        hora = ara.hour

        if dia_setmana >= 5:
            missatge = "Avui és cap de setmana. La secretaria és tancada."
        elif 9 <= hora < 14:
            missatge = f"Ara és les {ara.strftime('%H:%M')}. La secretaria és OBERTA ara mateix!"
        else:
            missatge = (f"Ara és les {ara.strftime('%H:%M')}. "
                       f"La secretaria és tancada ara. Obre de 9:00 a 14:00.")

        dispatcher.utter_message(text=missatge)
        return []

Preguntes de Reflexió

Reflexió final

  1. Comparativa de paradigmes: Quines limitacions concretes té Rasa en comparació amb un LLM com GPT-4 per a un chatbot d'institut? Pensa en casos on Rasa fallaria però GPT-4 respondria bé, i viceversa.

  2. Casos d'ús òptims: Per a quins 3 casos d'ús reals (en empreses, administracions o serveis) Rasa seria clarament millor que un LLM? Justifica la resposta considerant: cost, privadesa, predictibilitat, regulació.

  3. Escalabilitat: Com caldria modificar l'arquitectura d'aquest chatbot per a donar servei a 10.000 usuaris simultanis? Quins components caldria afegir o modificar? (Pensa en load balancers, múltiples instàncies Docker, Kubernetes, bases de dades per al tracker...)

  4. Qualitat del NLU: Com afecta el nombre d'exemples per intent a la qualitat de les prediccions? Quants exemples mínims recomana la documentació oficial de Rasa? Quin és l'impacte de la variació lingüística (dialectes, incorreccions ortogràfiques)?

  5. Ètica del chatbot: El vostre chatbot ha de ser honest sobre el fet que és una IA. Com heu implementat aquesta transparència? Quins problemes ètics podria causar un chatbot d'institut que no s'identifiqués com a tal?


Lliurament

Estructura del fitxer a lliurar

Comprimiu tot el directori del projecte en un fitxer amb el vostre nom:

# Des del directori pare del projecte
zip -r PR5071/01_joan_garcia.zip chatbot-joan-garcia/ \
  --exclude "chatbot-joan-garcia/.rasa/*" \
  --exclude "chatbot-joan-garcia/models/*"

El fitxer comprimit ha de dir-se PR5071/01_[nom]_[cognoms].zip (exemple: PR5071/01_joan_garcia.zip).

Contingut mínim

  • Tots els fitxers de configuració Rasa (domain.yml, config.yml, credentials.yml, endpoints.yml)
  • Tots els fitxers de dades (nlu.yml, stories.yml, rules.yml)
  • Evidència de l'entrenament (captura de pantalla o log)
  • Evidència de les proves (captures de les 5 trucades curl o del shell interactiu)
  • Fitxer README_joan_garcia.md amb: instruccions per executar el projecte, decisions de disseny preses i respostes a les preguntes de reflexió

Criteris de qualitat

  • El nom del bot ha de ser exactament Assistent_[Nom]_[Cognoms] (exemple: Assistent_Joan_Garcia)
  • Mínim 5 intents, tots en català
  • Mínim 10 exemples per intent
  • Mínim 5 stories
  • Totes les comandes Docker han d'incloure el nom de l'alumne (--name rasa-joan-garcia)
  • Les proves API han de mostrar l'sender amb el nom de l'alumne

Rúbrica

Consulteu la rúbrica completa a Rúbrica PR5071/01 per als criteris detallats d'avaluació.