Schermata di codice Python che streamma il dataset AgentTrove con pandas e matplotlib per l'analisi di tracce agentiche

Come usare AgentTrove: streaming di 1.7 milioni di tracce agentiche e creazione di un dataset ShareGPT per SFT in Python

AgentTrove è una delle più grandi raccolte open-source di tracce di interazioni tra agenti. Il dataset contiene 1,7 milioni di conversazioni tra utente, assistente, sistema e strumenti. Con Python puoi lavorarci senza scaricare l’intero archivio locale, usando lo streaming.

Il primo passo è installare le librerie necessarie: datasets>=2.19, pandas, matplotlib, pyarrow e huggingface_hub. Poi si carica il dataset in streaming specificando il repository open-thoughts/AgentTrove.

from datasets import load_dataset
REPO = "open-thoughts/AgentTrove"
ds = load_dataset(REPO, split="train", streaming=True)

Una volta aperto lo stream, si ispeziona la prima riga per capire la struttura delle colonne. AgentTrove contiene campi come conversations o messages che ospitano la traccia. Per gestire schemi diversi, una funzione di normalizzazione mappa ogni turno in una coppia (ruolo, contenuto) uniforme.

I messaggi dell’assistente spesso contengono comandi shell in formato JSON. Una utility di parsing rimuove i fence di codice, carica il JSON e cerca ricorsivamente campi come commands, command o action. Questo permette di capire quante azioni eseguibili compaiono nelle tracce.

Per visualizzare una traccia completa, una funzione stampa metadati (fonte, modello, risultato) e ogni turno con etichetta chiara. I messaggi lunghi vengono troncati a 600 caratteri. Sotto ogni risposta dell’assistente vengono elencati i comandi estratti.

Con uno script di analisi si campionano 2000 righe dalla modalità streaming. Per ogni traccia si calcolano: numero di turni, conteggio per ruolo, lunghezza totale in caratteri e comandi parsati. I dati finiscono in un DataFrame di pandas per riepiloghi veloci.

Le distribuzioni per original_source, original_teacher, model e result aiutano a capire la provenienza delle tracce. I grafici mostrano le prime 10 fonti, i modelli insegnante più usati, la distribuzione del numero di turni per traiettoria (con taglio al 97° percentile) e uno scatter plot tra turni totali e comandi rilevati.

Per esportare un dataset pulito per supervised fine-tuning, si filtrano solo le tracce con risultato positivo e si convertono in formato ShareGPT JSONL. Ogni riga contiene la conversazione con i campi system, user e assistant.

success = df[df["result"] == "success"]
sharegpt = []
for _, row in success.iterrows():
    trace = row["trace"]
    conversations = []
    for role, content in normalize_turns(trace):
        if role in ("user", "assistant", "system"):
            conversations.append({"role": role, "content": content})
    sharegpt.append({"conversations": conversations})

with open("agenttrove_clean.jsonl", "w") as f:
    for entry in sharegpt:
        f.write(json.dumps(entry) + "\n")

Il workflow completo pesa pochi megabyte in RAM e si adatta a qualsiasi macchina. I dataset generati possono essere usati direttamente per addestrare modelli di linguaggio con tecniche SFT.

Articoli simili