Skip to content

piopy/agentic-csv-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

  1. Agente Giudice (Riformulatore): Riceve la domanda dell'utente e la traduce in una richiesta tecnica, chiara e non ambigua, adatta a un programmatore.
  2. Agente Sviluppatore: Scrive codice Python, utilizzando la libreria pandas, per eseguire l'analisi richiesta sulla base delle specifiche tecniche.
  3. Agente Esecutore: Esegue il codice in un ambiente controllato e ne cattura il risultato.
  4. 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).

Prerequisiti

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.

Configurazione

Segui questi passaggi per configurare il progetto.

1. Variabili d'Ambiente

Le credenziali e le configurazioni del modello LLM sono gestite tramite variabili d'ambiente.

  1. Crea una copia del file sample.env e rinominala in .env.
    cp sample.env .env
  2. 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.

2. Conoscenza dei Dati

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.

Installazione e Avvio

  1. Installare le dipendenze Una volta configurati i file .env e data_knowledge.json, installa le dipendenze del progetto con Poetry:

    poetry install
  2. Installare il plugin Poetry per le variabili d'ambiente Per permettere a Poetry di caricare automaticamente le variabili dal file .env, è consigliato installare il plugin poetry-dotenv-plugin. Questo va fatto una sola volta.

    poetry self add poetry-dotenv-plugin
  3. Avviare l'applicazione

    poetry run python src/chat_con_csv.py

About

Using LLMs to ask questions to CSVs in a controlled manner and with knowledge injected via JSON.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages