Skip to content

DataScience-Golddiggers/Uncounsciously-Sincere-Bot

Repository files navigation

Unconsciously Sincere Bot

Python Keras TensorFlow Docker PostgreSQL NGROK Ollama Qwen Gmail Telegram macOS License

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.

💻 Requisiti Hardware

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 metal di Ollama, i chip Apple Silicon offrono prestazioni eccellenti. È raccomandato utilizzare il container rasa_ollama per 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 serve

📋 Prerequisiti Software

Assicurati di avere installato:

  1. Docker Desktop (con Docker Compose).
  2. Un account Telegram e un Bot creato via BotFather.
  3. Un account Gmail e App Password per le email.
  4. Un account Ngrok (gratuito).

⚙️ Configurazione Iniziale

1. Configura Ollama e scarica il modello Qwen 3 (0.6B)

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

2. Configura Ngrok

Apri docker-compose.yml e inserisci il tuo Authtoken (da dashboard.ngrok.com):

environment:
  NGROK_AUTHTOKEN: "INCOLLA_QUI_IL_TUO_TOKEN_NGROK"

3. Configura Telegram

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-avvio

4. Configura Variabili d'Ambiente

Crea 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=5432

🚀 Avvio del Bot

Per avviare l'intera infrastruttura (inclusi Rasa, Ollama e Ngrok):

docker-compose up --build

Collegamento a Telegram (Primo Avvio)

  1. Apri il browser su: http://localhost:4040 (Dashboard Ngrok).
  2. Copia l'URL HTTPS (es. https://a1b2.ngrok-free.app).
  3. Incolla l'URL in credentials.yml:
    webhook_url: "https://tuo-url.ngrok-free.app/webhooks/telegram/webhook"
  4. Riavvia Rasa:
    docker-compose restart rasa

🧠 Training e Sviluppo

Addestramento Modello Rasa

Se modifichi i file data/ (NLU, Stories, Rules), riaddestra il modello:

docker exec -it rasa_server rasa train

Custom Actions & Ollama

Le 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.


🛠 Comandi Utili

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

📂 Struttura Cartelle

  • 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.

About

This project is focused on a chatbot implementation using RASA framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors