Bot Telegram agentico che gira in locale con Qwen 3.5 9B via Ollama. Supporta tool calling nativo: ricerca web, lettura pagine, file system sandboxato, note persistenti e calcolatrice.
Funziona in chat private e nei gruppi (rispondendo solo quando menzionato o in reply).
- Python 3.12+
- uv
- Ollama con il modello
qwen3.5-9b - Un bot Telegram (crealo con @BotFather)
- Una API key Tavily per la ricerca web
git clone https://github.com/asiletto/dumbbot.git
cd dumbbot
uv syncScarica il modello:
ollama pull qwen3.5-9bexport TELEGRAM_BOT_TOKEN="il-tuo-token"
export TAVILY_API_KEY="la-tua-chiave"
uv run main.py| Variabile | Obbligatoria | Descrizione |
|---|---|---|
TELEGRAM_BOT_TOKEN |
si | Token del bot da BotFather |
TAVILY_API_KEY |
si | API key per la ricerca web |
DUMBBOT_SANDBOX |
no | Path della sandbox (default: ./sandbox) |
| Tool | Descrizione |
|---|---|
calculate |
Calcola espressioni matematiche |
web_search |
Cerca sul web via Tavily |
url_fetch |
Scarica e legge pagine web |
fs_read |
Legge file nella sandbox |
fs_write |
Scrive file nella sandbox |
fs_list |
Elenca file nella sandbox |
fs_delete |
Elimina file nella sandbox |
note_save |
Salva nota con chiave |
note_get |
Recupera nota |
note_list |
Elenca tutte le note |
note_delete |
Elimina nota |
/start— messaggio di benvenuto e reset history/reset— cancella la history della conversazione
- Disabilita la privacy mode in BotFather:
/setprivacy> Disable - Aggiungi il bot al gruppo
- Menzionalo con
@nome_del_bot messaggiooppure rispondi a un suo messaggio
src/dumbbot/
main.py — entry point, bot Telegram (polling)
agent.py — loop agentico: OpenAI SDK -> Ollama -> Qwen 3.5
tools.py — definizioni + esecuzione dei tool
tests/ — test suite (100% coverage)
sandbox/ — directory sandboxata per i file (gitignored)
Se preferisci caricare il modello da un file GGUF locale invece di usare ollama pull, puoi usare il Modelfile incluso nella directory qwen3.5-9b/:
cd qwen3.5-9b/
ollama create qwen3.5-9b -f ModelfileIl Modelfile configura:
- Modello base:
Qwen3.5-9B-Q4_K_M.gguf(quantizzazione Q4_K_M, ~5.7 GB) - Template: supporto nativo per tool calling via tag
<tool_call>e thinking mode via<think> - Parametri ottimizzati per CPU:
temperature 0.6,top_k 20,top_p 0.95,num_ctx 8192
Per usare un context window diverso, modifica PARAMETER num_ctx nel Modelfile (max 262144, ma su CPU valori alti rallentano molto).