lunedì 28 Settembre 2026
Home / Corsi / Corso Python / Needle: trasformare il linguaggio naturale in azioni su Raspberry Pi (con soli 14MB!)
Tutorial Needle

Needle: trasformare il linguaggio naturale in azioni su Raspberry Pi (con soli 14MB!)

Un’intelligenza artificiale che non chatta, ma agisce

I modelli linguistici (LLM) hanno fatto in modo di far utilizzare le IA a tutti, senza specifiche competenze. Quando sentiamo parlare di LLM, pensiamo subito a chatbot capaci di rispondere alle domande. Needle segue una filosofia diversa.

Needle è un piccolo modello di intelligenza artificiale (14MB) sviluppato da Cactus Compute che ha un unico obiettivo: trasformare una richiesta espressa in linguaggio naturale in una chiamata a una funzione Python. In pratica non serve per conversare, ma per controllare applicazioni, dispositivi e automazioni direttamente sul Raspberry Pi.

Ad esempio, invece di scrivere:

potremo semplicemente scrivere:

e sarà Needle a decidere quale funzione eseguire.

La caratteristica più interessante è che può funzionare localmente sul Raspberry Pi 5, usando soltanto la CPU, senza connessioni cloud e senza hardware AI dedicato.
Prendendo spunto dalla news sul sito ufficiale, ho pensato a qualche implementazione di esempio e al suo completamento naturale: abbinare il riconoscimento vocale in lcoale!
i vostri progetti potrebbero ricevere comandi in linguaggio naturale, ad esempio “robot, vieni avanti!” senza bisogno di connessione alla rete.


Cosa realizzeremo

In questo tutorial creeremo un piccolo assistente locale capace di:

  • salvare note in un file;
  • leggere la temperatura del Raspberry Pi;
  • accendere e spegnere un LED;
  • comprendere comandi scritti in italiano.

Alla fine potremo scrivere:

oppure
E Needle eseguirà automaticamente l’azione corretta. Puoi dialogare con Needle anche in italiano!
A questo indirizzo troverai dei demo online di varie implementazioni (domotica, il controllo di un robot aspirapolvere, ma anche smartwatch, smartphone, occhiali AR e anche auto) in cui puoi testare il funzionamento di questo minuscolo LLM, scrivendo comandi in italiano naturale.

Needle Demo
 
Ti consiglio di dare un comando alla volta: “spegni la luce della cucina e abbassa la tapparella”, potrebbe non essere correttamente interpretato, mentre i due comandi, separati, funzionano.

Prerequisiti

Serve:

  • Raspberry Pi (5 consigliato)
  • Raspberry Pi OS aggiornato
  • Python 3
  • connessione Internet solo per il primo download

Per la parte LED serviranno:

  • 1 LED
  • 1 resistenza da 220 o 330Ω
  • cavetti jumper

Installazione di Needle

Apriamo il Terminale.

Creiamo un ambiente virtuale

Attiviamolo:

Installiamo Needle

Dopo il primo download Needle può funzionare completamente in locale, senza servizi cloud, abbonamenti, consumo di token.

Primo esempio: salvare delle note

Creiamo un file chiamato note.py usando l’editor Nano:

Inseriamo ora nell’editor il codice seguente.

Come funziona il codice

Analizziamo le parti più importanti.

1. Il decoratore @needle.tool

indica a Needle:

“Questa funzione può essere richiamata dall’intelligenza artificiale.”

Senza questa riga Needle non saprebbe che la funzione esiste.


2. La docstring

Serve a spiegare a Needle cosa fa la funzione.

Più la descrizione è chiara, più sarà facile per il modello scegliere l’azione corretta.


3. I type hint

L’indicazione str comunica a Needle che il parametro deve essere una stringa.

Needle usa nome della funzione, docstring e annotazioni di tipo per costruire automaticamente lo schema dello strumento.


Secondo esempio: leggere la temperatura

Aggiungiamo una nuova funzione.

Aggiorniamo la creazione dell’agente.
Ora potremo scrivere:
Needle capirà automaticamente quale funzione chiamare.

Controllare un LED

Passiamo a un esempio che mostra il controllo dell’hardware.

Collegamenti

Collegare:

  • GPIO17 → Resistenza → Anodo LED (positivo, piedino più lungo)
  • Catodo LED (negativo, piedino più corto) → GND

LED su GPIO17

 

La libreria GPIO Zero dovrebbe essere pre-installata, ma nel caso, ecco come si installa:


Funzioni per accendere e spegnere il LED

Aggiorniamo l’agente:

 

Proviamo in italiano

Creiamo un semplice ciclo interattivo.

Esempi:


Perché Needle è interessante?

La maggior parte delle automazioni tradizionali richiede:

  • pulsanti;
  • menu;
  • comandi predefiniti;
  • API complesse.

Con Needle possiamo creare interfacce molto più naturali.

Invece di un comando Python:

l’utente può scrivere:
oppure:
Sarà il modello a interpretare l’intenzione delle nostre frasi.

Idee per progetti futuri

Una volta compreso il meccanismo, è possibile controllare:

  • relè domotici;
  • sensori ambientali;
  • telecamere Raspberry Pi;
  • robot;
  • display OLED;
  • sistemi di irrigazione;
  • stazioni meteo;
  • dispositivi IoT.

Sul sito ufficiale sono reperibili esempi con LED, acquisizione di fotografie e lettura di parametri di sistema tramite funzioni Python dedicate.


Conclusioni?

Needle rappresenta un approccio molto interessante all’intelligenza artificiale “embedded”: invece di generare testo come un chatbot, interpreta una richiesta e decide quale funzione Python eseguire. Grazie alle sue dimensioni ridotte e alla possibilità di funzionare localmente, è particolarmente adatto ai progetti Raspberry Pi e all’automazione domestica.

Per chi inizia, il concetto fondamentale da ricordare è uno solo:

Non si insegna a Needle come fare qualcosa, gli si mostra quali funzioni sono disponibili. Sarà lui a scegliere quella corretta quando riceve un comando in linguaggio naturale.

Questo apre la strada a progetti che possono essere controllati semplicemente scrivendo o parlando in italiano, rendendo l’interazione con Raspberry Pi più naturale e accessibile.

OPS! Ho scritto “parlando”.. in effetti questa è, a mio parere la svolta per cambiare completamente il modo in cui ci si interfaccia ai nostri progetti.

Dare “orecchie” a Needle

Per un progetto in cui Needle diventa il “cervello” che decide quale funzione Python eseguire, la soluzione più pratica oggi è accoppiarlo con il riconoscimento vocale in locale offerto da Wisper.ccp: la riscrittura in puro C/C++ del modello di riconoscimento vocale Whisper creato da OpenAI.

Whisper.cpp + Needle

Per tre motivi:

  1. Funziona completamente in locale
  2. Supporta molto bene l’italiano
  3. Genera direttamente il testo da passare a Needle

L’architettura diventerebbe:

Microfono
│
▼
Whisper.cpp
(Speech-to-Text)
│
▼
Testo in italiano
│
▼
Needle
(Function Calling)
│
▼
Funzione Python
│
▼
LED, relè, fotocamera, sensori…

In pratica la frase:

“Accendi il LED rosso”
diventa:
e Needle esegue:

Cominciamo con questo schema di funzionamento: premo INVIO, registra 5 secondi, riconosci il testo, invialo a Needle, esegui l’azione.

 

Esempio pratico: installiamo!

Installiamo:

Whisper.cpp va compilato separatamente.

1. Installa i prerequisiti

Apri il terminale del tuo Raspberry Pi e aggiorna il sistema, poi installa git e cmake:

2. Clona il repository

Scarica il codice sorgente ufficiale di whisper.cpp ed entra nella cartella:

3. Compila il progetto

Usa CMake per configurare e compilare i binari ottimizzati per il tuo dispositivo:
(Il flag -j userà tutti i core disponibili del processore del tuo Raspberry Pi per velocizzare la compilazione).

4. Scarica un modello

Prima di eseguire i test, devi scaricare un modello di intelligenza artificiale (ti consigliamo il modello tiny o base che sono più leggeri e adatti alle risorse limitate del Raspberry Pi):

5. Prova il funzionamento

Puoi testare la compilazione eseguendo un esempio di trascrizione sul file audio predefinito fornito nel repository: 

Come vedi qui su, aggiungi il flag -l it per evitare che l’algoritmo perda tempo a rilevare automaticamente la lingua (ed evitare che scambi l’italiano per un’altra lingua simile). Essenso modelli multilingua, l’accuratezza per la sola lingua italiana è limitata, se noti che il modello tiny fa troppi errori, sul Raspberry Pi il miglior compromesso tra velocità e precisione per l’italiano è solitamente il modello base


Registrare l’audio

Questo script salva il file audio comando.wav che contiene il comando vocale
 
 

Trascrivere con Whisper

Supponendo di avere Whisper.cpp installato:

Avremo come risultato una stringa di testo, ad esempio “Accendi il led rosso”
 

Inviare il testo a Needle

Tutto qui.

Letteralmente Needle non saprà nemmeno che l’input arriva dal microfono.

Per lui sarà semplicemente:


Evoluzione successiva: assistente vocale vero e proprio

Una volta completata la versione base, puoi fare un enorme salto di qualità aggiungendo una “wake word”.

Ad esempio: “Ehi Raspberry” oppure “Ciao Needle”

 
 
Microfono
│
▼
Wake Word
(parola di attivazione)
│
▼
Whisper.cpp
│
▼
Needle
│
▼
Funzioni Python
 

In questo caso il sistema resta sempre in ascolto ma registra il comando solo dopo aver sentito la parola chiave.



 

 

 

A proposito di Zzed

Appassionato di informatica alternativa, ma perenne novellino di Linux..

Vedi Anche

RPOM 168 doppiapagina

RPOM in Italiano! Cyberdeck Projects

Estratto, tradotto in italiano, di RPOM N°168 la rivista ufficiale della Fondazione Raspberry Pi.

Powered by themekiller.com