Questo repository contiene il codice sorgente per il Chatbot Rasa "Unconsciously Sincere Bot". Il progetto è configurato per essere eseguito su Docker ed è fortemente ottimizzato per architetture dotate di GPU NVIDIA e Apple Silicon (M-series), compatibile con Windows, macOS e Linux.
L'architettura è Ibrida (NLU + LLM) e include:
- Rasa Core/NLU: Gestione del dialogo e intenti strutturati.
- Ollama + Qwen 3 (0.6B): Integrazione con LLM locale per capacità di RAG (Retrieval Augmented Generation), ricerca web e risposte generative avanzate.
- PostgreSQL: Database relazionale per la persistenza dei dati.
- Rasa Action: Container per le custom actions (Emailing, Web Search).
- Ngrok: Tunneling automatico per esporre il bot a Telegram.
L'utilizzo di Qwen 3 (0.6B) tramite Ollama richiede risorse hardware molto contenute, rendendo il bot eseguibile anche su hardware meno potente.
| Componente | Requisiti Minimi | Requisiti Consigliati |
|---|---|---|
| CPU | 4 Core | Apple Silicon (M-Series) o >8 Core (Intel/AMD) |
| RAM | 8 GB | 16 GB o superiore |
| GPU | Integrata | Qualsiasi GPU moderna |
| Spazio Disco | 20 GB (Docker + Modelli LLM) | 128 GB SSD |
Nota per utenti Mac: Grazie all'ottimizzazione
metaldi Ollama, i chip Apple Silicon offrono prestazioni eccellenti. È raccomandato utilizzare il containerrasa_ollamaper una configurazione più semplice e integrata.
Local Ollama per supporto MPS/MLX:
export OLLAMA_HOST=0.0.0.0
export OLLAMA_ORIGINS="*"
export OLLAMA_MODELS=$(pwd)/ollama_data
ollama serveAssicurati di avere installato:
- Docker Desktop (con Docker Compose).
- Un account Telegram e un Bot creato via BotFather.
- Un account Gmail e App Password per le email.
- Un account Ngrok (gratuito).
Con la configurazione Docker fornita, Ollama verrà eseguito in un proprio container. Non è necessario installare o avviare Ollama manualmente sul tuo sistema operativo.
Dopo aver avviato i servizi Docker (vedi sezione "Avvio del Bot"), scarica il modello Qwen 3 (0.6B) direttamente nel container Ollama:
docker exec -it rasa_ollama ollama pull qwen3:0.6B(Il modello 0.6B è molto leggero e veloce. Puoi usare versioni più grandi se l'hardware lo consente, ma dovrai aggiornare la configurazione.)
Apri docker-compose.yml e inserisci il tuo Authtoken (da dashboard.ngrok.com):
environment:
NGROK_AUTHTOKEN: "INCOLLA_QUI_IL_TUO_TOKEN_NGROK"Apri credentials.yml e inserisci i dati del bot Telegram:
telegram:
access_token: "123456:ABC-DEF..."
verify: "tuo_bot_username"
webhook_url: "https://....ngrok-free.app/webhooks/telegram/webhook" # Aggiornare post-avvioCrea un file .env nella root del progetto con le seguenti variabili (vedi .env.example):
# Email Configuration
EMAIL_USER=tua_email@gmail.com
EMAIL_PASSWORD=tua_app_password
# Ollama Configuration
OLLAMA_URL=http://ollama:11434
# Postgres Configuration
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DB=rasa_db
POSTGRES_PORT=5432Per avviare l'intera infrastruttura (inclusi Rasa, Ollama e Ngrok):
docker-compose up --build- Apri il browser su:
http://localhost:4040(Dashboard Ngrok). - Copia l'URL HTTPS (es.
https://a1b2.ngrok-free.app). - Incolla l'URL in
credentials.yml:webhook_url: "https://tuo-url.ngrok-free.app/webhooks/telegram/webhook"
- Riavvia Rasa:
docker-compose restart rasa
Se modifichi i file data/ (NLU, Stories, Rules), riaddestra il modello:
docker exec -it rasa_server rasa trainLe azioni personalizzate in actions/ utilizzano Ollama per:
- Rispondere a domande complesse non previste dalle regole fisse.
- Effettuare ricerche web simulate o retrieval di informazioni universitarie.
Se il bot risponde "Non so aiutarti", assicurati che il container action_server riesca a comunicare con Ollama tramite l'URL configurato in .env.
| Azione | Comando |
|---|---|
| Avviare tutto | docker-compose up |
| Ricostruire immagini | docker-compose up --build |
| Fermare tutto | docker-compose down |
| Addestrare Rasa | docker exec -it rasa_server rasa train |
| Shell Container | docker exec -it rasa_server /bin/bash |
| Log in tempo reale | docker-compose logs -f |
| Pull modello Qwen | docker exec -it rasa_ollama ollama pull qwen3:0.6B |
data/: Dataset di training (NLU, Stories, Rules).actions/: Codice Python per le azioni custom (inclusa integrazione Ollama).models/: Modelli addestrati (.tar.gz).config.yml: Pipeline NLU e Policy.domain.yml: Definizione intent, entità, slot e risposte.
