agentic-analyzer (aka la scoperta dell'acqua calda dato che ci sono già librerie che lo fanno ma volevo provare a fare qualcosa di simile)
Il sistema orchestra una serie di agenti specializzati per gestire un flusso di lavoro complesso:
- Agente Giudice (Riformulatore): Riceve la domanda dell'utente e la traduce in una richiesta tecnica, chiara e non ambigua, adatta a un programmatore.
- Agente Sviluppatore: Scrive codice Python, utilizzando la libreria
pandas
, per eseguire l'analisi richiesta sulla base delle specifiche tecniche. - Agente Esecutore: Esegue il codice in un ambiente controllato e ne cattura il risultato.
- Agente Giudice (Valutatore): Interpreta il risultato dell'esecuzione e lo presenta all'utente in una risposta discorsiva e di facile comprensione.
Questo approccio permette di creare un'interfaccia conversazionale per l'esplorazione di dati tabellari (CSV).
Prima di iniziare, assicurati di avere installato sul tuo sistema:
- Python (versione 3.10 o superiore)
- Poetry per la gestione delle dipendenze e degli ambienti virtuali.
Segui questi passaggi per configurare il progetto.
Le credenziali e le configurazioni del modello LLM sono gestite tramite variabili d'ambiente.
- Crea una copia del file
sample.env
e rinominala in.env
.cp sample.env .env
- Apri il file
.env
e inserisci i valori corretti per le seguenti variabili:LLM_NAME
: Il nome/ID del modello che desideri utilizzare (es.gemini/gemini-1.5-flash
).LLM_URL
: L'endpoint base dell'API del modello.LLM_API_KEY
: La tua chiave API per accedere al servizio.
Il sistema deve sapere quali file di dati analizzare e come sono strutturati. Questa "conoscenza" è definita nel file knowledge/data_knowledge.json
.
Apri questo file e configuralo secondo le tue necessità. Il file è un array di oggetti JSON, dove ogni oggetto rappresenta un dataframe:
[
{
"nome": "iris",
"path": "data/iris.csv",
"descrizione": "Contiene le misurazioni di sepali e petali per tre diverse specie di fiori di iris.",
"separatore": ",",
"colonne": {
"Id": "Identificativo univoco del campione.",
"SepalLengthCm": "Lunghezza del sepalo in centimetri.",
"SepalWidthCm": "Larghezza del sepalo in centimetri.",
"PetalLengthCm": "Lunghezza del petalo in centimetri.",
"PetalWidthCm": "Larghezza del petalo in centimetri.",
"Species": "La specie del fiore di iris (es. Iris-setosa, Iris-versicolor, Iris-virginica)."
}
}
]
nome
: Un nome breve che verrà usato nel codice per riferirsi a questo set di dati.path
: Il percorso relativo al file CSV.descrizione
: Una breve spiegazione del contenuto del file.colonne
: Un dizionario contenente la descrizione di ogni colonna rilevante del CSV.
-
Installare le dipendenze Una volta configurati i file
.env
edata_knowledge.json
, installa le dipendenze del progetto con Poetry:poetry install
-
Installare il plugin Poetry per le variabili d'ambiente Per permettere a Poetry di caricare automaticamente le variabili dal file
.env
, è consigliato installare il pluginpoetry-dotenv-plugin
. Questo va fatto una sola volta.poetry self add poetry-dotenv-plugin
-
Avviare l'applicazione
poetry run python src/chat_con_csv.py