Instructions to use dacso-ai/protocollo-4b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use dacso-ai/protocollo-4b with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf dacso-ai/protocollo-4b:Q4_K_M # Run inference directly in the terminal: llama cli -hf dacso-ai/protocollo-4b:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf dacso-ai/protocollo-4b:Q4_K_M # Run inference directly in the terminal: llama cli -hf dacso-ai/protocollo-4b:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf dacso-ai/protocollo-4b:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf dacso-ai/protocollo-4b:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf dacso-ai/protocollo-4b:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf dacso-ai/protocollo-4b:Q4_K_M
Use Docker
docker model run hf.co/dacso-ai/protocollo-4b:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use dacso-ai/protocollo-4b with Ollama:
ollama run hf.co/dacso-ai/protocollo-4b:Q4_K_M
- Unsloth Desktop
- Pi
How to use dacso-ai/protocollo-4b with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf dacso-ai/protocollo-4b:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "dacso-ai/protocollo-4b:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use dacso-ai/protocollo-4b with Docker Model Runner:
docker model run hf.co/dacso-ai/protocollo-4b:Q4_K_M
- Lemonade
How to use dacso-ai/protocollo-4b with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull dacso-ai/protocollo-4b:Q4_K_M
Run and chat with the model
lemonade run user.protocollo-4b-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use dacso-ai/protocollo-4b with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf dacso-ai/protocollo-4b:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default dacso-ai/protocollo-4b:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use dacso-ai/protocollo-4b with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf dacso-ai/protocollo-4b:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "dacso-ai/protocollo-4b:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Protocollo 4B v0.1
Un modello aperto che protocolla la posta di un'azienda italiana: PEC, fatture elettroniche, F24, avvisi del Fisco, atti, mail dei clienti, truffe. Gira in locale, anche senza GPU.
Non scrive testo: per ogni documento risponde a domande a scelta chiusa con le probabilità di ogni risposta. Che tipo di documento è? A quale ufficio va? Cosa bisogna fare? C'è una scadenza, e fra quanti giorni? Che rischio c'è? È una truffa? Contiene dati sensibili?
È Rizzo Flow 4B con un adapter LoRA addestrato sui documenti italiani di protocollo-dati. Codice, dati e prove: github.com/dacso-ai/protocollo.
Smista e segnala, non sostituisce il commercialista o l'avvocato. Le probabilità non sono calibrate su posta reale: i documenti con una possibile scadenza o una possibile truffa vanno sempre visti da una persona.
File
| File | Dimensione | Uso |
|---|---|---|
protocollo-4b-v01-q8_0.gguf |
4,1 GB | consigliato; è la versione misurata qui sotto |
protocollo-4b-v01-q4_k_m.gguf |
2,4 GB | per PC con poca memoria; non ancora misurata |
lora/ |
124 MB | l'adapter LoRA (r 16, alpha 32) da applicare a rizzoaiacademy/rizzo-flow rev 55633c8 |
training/storia.json |
loss e valutazioni dell'addestramento |
I GGUF sono prodotti con llama.cpp b11081 da addestramento/esporta.py. La stessa catena, applicata con un adapter vuoto, riproduce byte per byte il GGUF Q8_0 ufficiale di Rizzo Flow.
Come si usa
Con il server di Rizzo Flow (llama.cpp, su CPU, Apple, NVIDIA o AMD):
uv run rizzo serve --model protocollo-4b-v01-q8_0.gguf
Le domande sono in protocollo/domande.json e vanno inviate a POST /v1/decisions così come sono. Lo stato è il testo del documento, con in testa la riga "Ricevuto il ...", che serve a contare i giorni alla scadenza:
curl http://127.0.0.1:8017/v1/decisions -H 'Content-Type: application/json' -d '{
"state": "Ricevuto il 30/10/2026 via mail da amministrazione@fornitore-srl.com\nSpett.le cliente, il nostro conto è cambiato: pagate le fatture aperte sul nuovo IBAN LT12 ... Non contattate la banca.",
"questions": {"phishing": {"type": "boolean", "instructions": "È una truffa? Per esempio un finto ente, una finta fattura con un link da cliccare, un fornitore che chiede di pagare su un IBAN nuovo."}}
}'
Il modello è stato addestrato con quelle domande e con quel prompt (compilato da Rizzo Flow, spark-decisions-v3). Con domande diverse funziona come Rizzo Flow, ma non è stato misurato.
Risultati
Prova zero: 50 documenti (28 dal generatore, 22 scritti a mano), 399 decisioni, stesso server per tutti e due i modelli (Q8_0, Mac Pro, solo CPU).
| Rizzo Flow 4B | Protocollo 4B v0.1 | |
|---|---|---|
| Decisioni giuste | 328/399 (82%) | 394/399 (99%) |
| Documenti scritti a mano | 121/157 (77%) | 154/157 (98%) |
| Scadenze mancate | 0 su 25 | 0 su 25 |
| Truffe non viste | 1 su 3 | 0 su 3 |
| Documento | Rizzo Flow | Protocollo v0.1 |
|---|---|---|
| Nota di credito | fattura, da pagare | nota di credito, archiviare |
| Decreto ingiuntivo (40 giorni) | da pagare | all'avvocato |
| Cambio IBAN da un dominio simile | rispondere, non è una truffa | truffa, cestinare |
Come leggere questi numeri. Sono un buon segnale, non ancora una prova indipendente. I documenti generati vengono dallo stesso generatore dell'addestramento, anche se con semi diversi. Quelli scritti a mano li ha scritti chi ha disegnato anche gli scenari del dataset. Le risposte di procedura (per esempio "inoltrare" un avviso bonario al commercialista) sono scelte nostre, e il modello le ha imparate. La misura indipendente sarà un benchmark etichettato da commercialisti, avvocati e amministrativi su documenti che non abbiamo scritto noi.
Sulle 800 domande di controllo del dataset l'accuratezza è passata da 0,74 a 0,99 durante l'addestramento.
Addestramento
- Base:
rizzoaiacademy/rizzo-flow, revisione55633c8(Spark-X2.5-4B con il LoRA di Rizzo Flow già unito, Apache-2.0). - LoRA r 16, alpha 32, dropout 0,05 su
q_k_v_proj,g_proj,out_proj,gate_proj,up_proj,down_proj; 32,4 M parametri addestrabili. - Loss: cross-entropy morbida sulle sole lettere di risposta all'ultima posizione del prompt, come Rizzo Flow. Nessun testo generato.
- Dati: 13.082 domande da protocollo-train-righe, una passata. AdamW, lr 5e-5 con coseno, 16 domande per passo, 765 passi.
- Hardware: una NVIDIA T4 gratuita di Kaggle, fp16 con GradScaler, 9,4 ore. Notebook: protocollo_lora_kaggle.ipynb.
Limiti
- Dati di addestramento sintetici: la posta vera è più disordinata (scansioni, allegati, inoltri a catena).
- Prompt di più di 2.048 token esclusi dall'addestramento: le fatture XML molto lunghe sono poco rappresentate.
- Sulla CPU (Xeon a 16 core) risponde in circa 20 secondi a documento con 8-12 domande. Con una GPU, secondo i numeri di Rizzo Flow, i tempi scendono a frazioni di secondo.
- Gli errori rimasti nella prova zero: un acconto letto come TD01, due conteggi di giorni sbagliati, un reclamo per ritardo mandato al commerciale, una conferma d'ordine segnata come "da pagare".
Licenza e crediti
Apache-2.0, come il modello base. L'idea dei modelli "System One" è di TypeSafe (Jev). Modello base, prompt e server sono di Rizzo Flow (Rizzo AI Academy), a sua volta basato su Spark-X2.5 e ispirato a SemIf. Protocollo non è affiliato a nessuno di questi progetti.
Un progetto di DACSO, Crema.
- Downloads last month
- -
4-bit
8-bit
Model tree for dacso-ai/protocollo-4b
Base model
XHToken/Spark-X2.5-1.7B-Base