# Il tuo primo intent

Un intent è un'intenzione dell'utente ("chiede l'orario", "saluta"). Per farne rispondere uno servono tre file YAML e un riaddestramento.

1. Gli esempi (`intents/`)

yaml
# knowledge/intents/my_intents.yaml
nlu:
  intents:
  - intent: ask_opening_hours
    examples:
    - a che ora aprite
    - quali sono i vostri orari
    - siete aperti il sabato
    - fino a che ora state aperti

Scrivi frasi diverse tra loro, con lessico e lunghezza vari. Il dataset di base usa tra 20 e 25 esempi per intent: meno esempi significano un riconoscimento più fragile.

2. La regola (`rules/`)

yaml
# knowledge/rules/my_rules.yaml
rules:
  ask_opening_hours:
    default: ask_opening_hours_response

Il nome della regola deve coincidere con quello dell'intent.

3. La risposta (`responses/`)

yaml
# knowledge/responses/my_responses.yaml
responses:
  ask_opening_hours_response:
    - "Siamo aperti dal lunedì al venerdì, dalle 9 alle 18."
    - "Gli orari sono 9-18, dal lunedì al venerdì."

Con più varianti il bot sceglie una risposta diversa a ogni turno.

4. Allena

bash
python -m pipeline

La pipeline valida i dati, riaddestra l'embedding, il classifier e la dialogue policy. Vedi [Allenare e validare i modelli](/guides/training-e-validazione).

5. Prova

bash
python -m agent.agent

Scrivi "a che ora aprite" e controlla che risponda con il testo atteso.

Errori comuni

  • Esempio già presente in un altro intent: il validatore lo segnala e blocca il training.
  • Regola senza risposta, o con nome sbagliato: il bot ricade sul fallback.
  • Pochi esempi: l'intent viene confuso con altri vicini. Aggiungi frasi.

Prossimo passo: [Raccogliere informazioni con gli slot](/guides/slot).