La piattaforma di cui parliamo in questo articolo, Cheshire Cat AI o Stregatto all’italiana, è un framework open source che permette, facilmente, la creazione di applicazioni e agenti alimentati dall’Intelligenza Artificiale degli LLM.

Si tratta di un progetto tutto italiano, avviato dallo sviluppatore Piero Savastano, che ha tuttavia rapidamente raccolto una community, sempre più numerosa e internazionale, di appassionati e professionisti che contribuiscono al suo sviluppo e alla redazione di documentazione.
Iniziamo qui a conoscerlo e a sperimentarlo per poterne apprezzare le caratteristiche e toccare con mano quanto sia veloce adattarlo ai nostri progetti.

Caratteristiche principali

Lo Stregatto si colloca nel settore dell’Intelligenza Artificiale come uno di quegli ambienti che permette di curare tutto il filone di lavoro, dall’interazione utente all’integrazione delle richieste fino all’interrogazione di svariati diversi Large Language Model, con tanto di integrazione di fonti dati esterne per applicazioni di tipo RAG (Retrieval Augmented Generation).

Tra le sue capacità principali spiccano in particolare:

  • facilità di installazione: come vedremo, si è lavorato all’abbattimento di ogni barriera all’adozione di questo framework, in particolar modo per quanto riguarda il processo di installazione. Per questo, i suoi realizzatori hanno scelto la tecnologia di containerizzazione Docker che permette di ottenere velocemente un runtime pronto per un’applicazione;
  • possibilità di espansione: il linguaggio di programmazione su cui si basa Cheshire Cat è Python, non solo uno dei principali punti di riferimento del mondo dell’Intelligenza Artificiale ma anche un formalismo estremamente agevole da approcciare anche da sviluppatori meno esperti. Grazie all’uso di Python, possiamo adottare questo framework e adattarlo ai nostri scopi con la creazione di componenti. In particolare, sono disponibili Tool, Hook e Plugin, costrutti che impareremo a conoscere in questo articolo;
  • memoria: lo Stregatto tiene una memoria delle conversazioni e delle informazioni che vogliamo che impari. Questa piattaforma mette a disposizione un sistema di apprendimento con cui impara dalle nostre conversazioni e crea così un’empatia sempre maggiore con l’utente. In particolare, dispone di tre tipi di memoria. La memoria episodic ovvero basata sul dialogo casuale con l’utente, declarative alimentata con il caricamento di documenti e procedural fondata sull’uso di Tool;
  • portale di amministrazione: uno degli elementi più incoraggianti per i neofiti, perché offre un pannello di gestione che ci accoglie dopo l’installazione e permette di impostare tutto ciò che ci serve per iniziare a dialogare e a ideare servizi da implementare, il tutto con un’interfaccia web visuale.

Questa è solo una breve panoramica di tutto quello che Cheshire Cat può rappresentare per il nostro lavoro e i nostri studi ma ora non resta altro che iniziare ad utilizzarlo con una rapida sperimentazione pratica.

Primo avvio

Come abbiamo detto, il tutto viene reso facile con la tecnologia di containerizzazione Docker.

Sarà sufficiente un singolo comando per poter avviare la piattaforma:

docker run --rm -it -p 1865:80 ghcr.io/cheshire-cat-ai/core:latest

Già questo sarà sufficiente per averlo a lavoro nel nostro sistema e potervi interagire tramite la porta TCP 1865 all’indirizzo locale (http://localhost:1865).
Sarà inoltre possibile avviarlo con uno script, in formato YAML, per l’implementazione del servizio con Docker Compose, un sistema per la gestione di applicazioni basate su container multipli che favorisce anche l’utilizzo di volume, il sistema di memorizzazione dei dati.
La documentazione fornisce anche uno script di questo tipo ed istruzioni in merito:

version: '3.7'

services:

  cheshire-cat-core:
    image: ghcr.io/cheshire-cat-ai/core:latest
    container_name: cheshire_cat_core
    ports:
      - ${CORE_PORT:-1865}:80
    environment:
      - PYTHONUNBUFFERED=1
      - WATCHFILES_FORCE_POLLING=true 
    volumes:
      - ./static:/app/cat/static
      - ./plugins:/app/cat/plugins
      - ./data:/app/cat/data

Una volta posizionato uno script di questo genere (tipicamente, in un file denominato docker-compose.yaml o compose.yaml) nel nostro ambiente sarà sufficiente avviarlo con il comando:

docker compose up

Seguendo questi passaggi, la piattaforma sarà rapidamente in esecuzione e potremo iniziare a sperimentarla.

Primo esperimento: chi ha vinto Sanremo 2024?

Cheshire Cat AI è del tutto agnostico rispetto all’LLM da utilizzare. In pratica, una volta avviato ed entrati nel pannello di amministrazione (http://localhost:1865/admin se abbiamo lasciato impostata la porta TCP 1865) ci troveremo di fronte un’interfaccia che ci proporrà subito una via comoda per dialogare con il “gatto”, ma senza un collegamento con un Large Language Model le sue capacità di risposta non saranno ancora disponibili.
stregatto-admin-01
La sperimentazione che faremo qui seguirà questi passaggi:

  • collegheremo un LLM;
  • chiederemo un’informazione recente, ad esempio, chi ha vinto il Festival di Sanremo 2024;
  • se l’informazione non sarà disponibile in quanto troppo nuova caricheremo noi un documento che istruirà lo Stregatto a riguardo e riproveremo a fare la domanda.

Questo esperimento, sebbene non ci porterà ancora allo sviluppo di componenti personalizzate, ci mostrerà come sarà agevole mettere al lavoro la piattaforma e farle imparare nuove nozioni.

Per prima cosa dovremo impostare il nostro LLM preferito. Si hanno già tante possibilità a disposizione tra cui anche l’integrazione con Ollama sebbene tutto il progetto sia in rapidissimo sviluppo pertanto le sue potenzialità vedranno costanti e veloci aggiornamenti. Noi scegliamo per praticità OpenAI pertanto dal pannello di amministrazione clicchiamo su Settings e tramite i pulsanti che vediamo in figura impostiamo il nostro LLM.
stregatto-admin-02
Ci verrà chiesto di scegliere un’opzione tra i vari motori (noi abbiamo scelto OpenAI ChatGPT) e forniamo i parametri di autenticazione che nel nostro caso corrispondono con la chiave che possiamo richiedere tramite OpenAI.

Stessa cosa faremo per l’Embedder e, a questo punto, il nostro pannello sarà pronto per rispondere ai nostri quesiti.
Proviamo a chiedere se conosce il vincitore del Festival di Sanremo 2024. Come si vede in figura non riesce a reperire una risposta.
stregatto-admin-03
stregatto-admin-04Noi sappiamo però che la risposta giusta può essere trovata su Wikipedia, alla pagina dedicata all’evento, pertanto sarebbe sufficiente istruire lo Stregatto al fine di acquisire le nozioni pubblicate in quel link.

Possiamo farlo cliccando il pulsante contrassegnato da un’icona a forma di saetta in basso a sinistra e scegliendo l’opzione che richiede l’inserimento di un URL, un indirizzo web in pratica.

Fornito l’indirizzo della pagina che ci interessa, proviamo a riproporre la domanda di prima e, a distanza di pochissimi istanti, troviamo lo Stregatto molto più preparato sul tema.
stregatto-admin-05

Iniziamo a fare sul serio

Come ci appare Cheshire Cat AI dopo questa presentazione? Un ambiente rapido da installare, intuitivo, capace di metterci subito in contatto con una gran varietà di LLM e di imparare velocemente. Niente male come approccio però, appunto, non è che un approccio. Da questo momento inizieremo a fare sul serio soprattutto cercando di capire nei prossimi articoli come estendere le funzionalità di cui lo Stregatto dispone e di come renderlo una base operativa per i nostri servizi.