I Large Language Models (LLM) sono sistemi addestrati su enormi volumi di dati testuali per comprendere, generare e rispondere a quesiti posti usando il linguaggio naturale. Sono utilizzati in molte applicazioni, come assistenti virtuali, traduzioni, analisi dei dati e generazione di contenuti. Esistono LLM proprietari, sviluppati e controllati da singole aziende (GPT di OpenAI), e modelli aperti, disponibili per il pubblico con licenze permissive (LLaMA di Meta). Stregatto AI è un progetto tutto italiano che si pone al di sopra dei LLM, permettendo agli sviluppatori e agli utenti di interagire con i modelli generativi in maniera molto semplice, utilizzando apposite API (Application Programming Interfaces).
Stregatto AI si presenta come un framework basato su Python che permette di creare molto facilmente componenti personalizzati, veri e propri agenti AI integrabili ad esempio con le proprie applicazioni. Grazie alla possibilità di scrivere funzioni Python personalizzate, lo Stregatto può eseguire azioni pratiche come comunicare con servizi Web o effettuare elaborazioni.
Il framework nasce da un’idea di Piero Savastano che ha contribuito al lancio di Cheshire Cat AI, la denominazione con cui Stregatto si presenta alla comunità internazionale.
Che differenza c’è Stregatto AI, LLM e Ollama
Chi ci segue da tempo, avrà certamente pensato a Ollama, un software che permette di eseguire localmente i modelli linguistici (LLM) eliminando la dipendenza da API esterne e abbonamenti a pagamento. Stregatto AI avvolge i LLM, e Ollama stesso, arricchendone significativamente le potenzialità e le funzionalità.
Componenti personalizzati come Tool, Hook e Plugin consentono agli sviluppatori di estendere le funzionalità del sistema senza modificare il nucleo del framework. In questo modo, è possibile aggiungere ai software già in proprio possesso caratteristiche conversazionali evolute.
Stregatto AI è agnostico rispetto al language model proprio perché è possibile farlo interagire con qualunque LLM, open source ma anche con i modelli di OpenAI con pagamento “a consumo” (previo inserimento di una API key valida).
Lo Stregatto possiede un sistema di memoria che registra le conversazioni passate e le informazioni apprese. L’obiettivo è migliorare l’interazione con l’utente nel corso del tempo.
Senza sforzi aggiuntivi, inoltre, Stregatto arriva con il supporto RAG (Retrieval Augmented Generation) integrato: questo significa che gli utenti possono caricare documenti e informazioni che andranno ad arricchire le “competenze” dei LLM e a migliorare le risposte fornite. Si pensi ai documenti di ricerca e sviluppo creati da un’azienda del corso di anni di lavoro: tutto questo tesoro di informazioni può essere utilizzato all’interno dell’azienda per recuperare rapidamente i dati che servono, ottenere nuovi spunti e idee, riportare alla luce che sono state progressivamente accantonate negli anni. Il tutto mantenendo i dati in locale e preservandone al riservatezza.
Differenze chiave tra Stregatto AI e Ollama
Caratteristica | Stregatto AI | Ollama |
---|---|---|
Tipo di progetto | Framework open source per creare agenti AI | Server per ospitare modelli linguistici |
Installazione | Richiede Docker per l’installazione | Esecuzione locale senza dipendenze esterne |
Memoria | Sistema di memoria integrato | Non gestisce memoria delle conversazioni |
Espansione | Componenti personalizzabili tramite Python | Non offre espansioni, si concentra sui modelli |
Modelli | Supporta vari LLM, inclusi quelli esterni | Utilizza solo modelli open weight |
Stregatto AI per eseguire azioni nel mondo reale
Incapsulando Ollama per il supporto dei LLM aperti o altri modelli ospitati su server remoti, Stregato AI può fornire funzionalità evolute ad oggi non presenti in altri framework.
Oltre al sistema di memoria e al supporto RAG, Stregatto incorpora due potenti strumenti di personalizzazione: Tools e Hooks, integrati nella struttura dei Plugins.
Tools: per richiamare funzioni Python
I Tools sono funzioni Python che possono essere invocate direttamente dal modello linguistico in base al contesto della conversazione. Questo permette al modello di interagire attivamente con l’esterno, eseguendo operazioni come:
- Accesso a servizi Web: effettuare richieste HTTP e ottenere informazioni aggiornate come risposta.
- Interrogazione di database: recuperare dati strutturati da basi di dati esterne.
- Calcoli matematici avanzati: eseguire operazioni complesse senza lasciare l’ambiente conversazionale.
- Esecuzione di comandi: funzionalità attiva la riga di comando (ovviamente da usare con cautela).
- Gestione di dati personalizzati: memorizzare e manipolare dati per compiti specifici.
Hooks: per attivare comportamenti specifici
Accanto ai Tools, gli Hooks sono dei “ganci” che permettono di eseguire funzioni Python personalizzate per attivare comportamenti specifici. Ad esempio, un Hook potrebbe tradurre automaticamente il prompt in una lingua specifica prima che sia passato al sottostante LLM.
Gli Hook di Stregatto AI agiscono quindi modificando dinamicamente le richieste inviate al modello, come nel caso del prompt. Tuttavia, sono utilizzabili per aggiungere e sostituire logiche senza intervenire sul codice alla base del funzionamento del framework. Ancora, gli Hook possono controllare come e quando invocare i Tools.
Come installare e usare Stregatto AI
Un altro dei principali vantaggi di Stregatto AI è che il framework è disponibile sotto forma di container Docker: ciò significa che è fornito in una configurazione già pienamente funzionante.
L’unico requisito per usare Stregatto AI è disporre di un sistema che abbia già installati e funzionanti Docker e Docker Compose.
Il passaggio successivo consiste nel creare una cartella di appoggio, ad esempio cheshire-cat-ai
quindi creare un file compose.yml
al suo interno. Il suo contenuto deve essere il seguente:
services: cheshire-cat-core: image: ghcr.io/cheshire-cat-ai/core:latest container_name: cheshire_cat_core ports: - 1865:80 - 5678:5678 volumes: - ./static:/app/cat/static - ./plugins:/app/cat/plugins - ./data:/app/cat/data
Le varie direttive permettono di scaricare ed eseguire l’immagine Docker dello Stregatto, assegnare un nome al container, ed effettuare un port binding:
- La porta 1865 dell’host è collegata alla porta 80 del container, consentendo l’accesso al servizio HTTP.
- La porta 5678 dell’host è interconnessa con la porta 5678 del container.
A questo punto, per avviare Stregatto AI, basta digitare il seguente comando:
docker compose up -d
Digitando l’indirizzo localhost:1865/admin
nella barra degli indirizzi del browser Web, è possibile accedere al pannello di amministrazione dello Stregatto (specificare admin
come nome utente e password per il primo login). Se si fosse installato in locale Ollama, basta selezionarlo dalla sezione Configure the language model.
Come Base URL è sufficiente inserire l’IP locale del server di Ollama quindi confermare il modello generativo che s’intende utilizzare.
Caricamento di documenti per attivare funzionalità RAG
Con un semplice clic sull’icona del fulmine (1), si possono caricare documenti in proprio, indirizzi Web, note e appunti per estendere le abilità del sottostante LLM (2).
Come spiegato in questo documento di supporto, gli sviluppatori possono ricorrere al protocollo WebSocket per instaurare interazione con Stregatto AI. Gli ideatori del framework forniscono esempi in Python e JavaScript, ovviamente adattabili ad altri linguaggi di programmazione.
Creazione dei plugin
Il pannello di amministrazione di Stregatto AI fornisce già un ampio ventaglio di Plugins pronti per essere immediatamente utilizzati.
Ci sono plugin per la gestione dei documenti che automatizzano il caricamento di file nel sistema, per la personalizzazione dell’agente AI (si può far interpretare all’agente un ruolo specifico, come un consulente aziendale), per interagire con servizi esterni tramite chiamate API REST e interrogazioni a database.
I plugin sono utili per facilitare la creazione di agenti AI utili al controllo dei dispositivi domotici, facilitando l’integrazione dell’intelligenza artificiale nella vita quotidiana.
A questo indirizzo sono disponibili le indicazioni per creare nuovi plugin e avvalersi dei già citati Tools e Hooks. La sintassi da usare ed esempi concreti sono pubblicati in queste pagine.