Rå agent-logs er rodede: feltnavne varierer, roller forveksles, og tool-kald blander sig med fritekst. Alligevel er det her, de bedste SFT-kandidater gemmer sig. En ny, praktisk tutorial på MarkTechPost demonstrerer præcis, hvordan man håndterer det: stream 1,7 millioner agent-traces fra AgentTrove, detekter skemaer programmatisk, normalisér agent-turns og eksporter et rent ShareGPT JSONL – uden at downloade hele datasættet lokalt. Det er en tilgang, vi også bruger i praksis: hurtig iteration først, strammere filtre bagefter.
Kort fortalt viser guiden et flow i seks trin: streamingadgang via Hugging Face Datasets, skema-detektion (find_trace_key), normalisering af roller og indhold (normalize_turns), sampling til analyse, statistik/visualisering og til sidst eksport til et ShareGPT-lignende JSONL for SFT. Vi går dem igennem og sætter dem ind i en driftskontekst, for det er her, værdien realiseres.
AgentTrove kort og konkret
AgentTrove beskrives som “one of the largest open-source collections of agentic interaction traces”. Det er plausibelt, men artiklen sammenligner ikke systematisk med andre offentlige agent-datasæt. Vores vurdering: skalaen er stor nok til at være operationelt relevant, men bed dataset-maintainer om en opgørelse, hvis I skal i due diligence og licensafklaring.
En vigtig detalje i tutorialen: man åbner datasættet i streaming-mode med Hugging Face Datasets (kræver version 2.19 eller nyere), inspicerer de første kolonner og undgår lokal fuld download. Det gør det muligt at forstå strukturen uden at binde store mængder disk. Vi har brugt samme taktik i flere POC’er – den sparer både tid og unødige cloud-omkostninger.

Hvorfor streaming gør en forskel
Streaming gør det let at iterere på samples og pipelines uden tung I/O. Man kan analysere 5.000 tilfældige traces, teste normalisering, lave et par histogrammer og kassere igen. For ML-ops betyder det lavere lagerkrav og hurtigere iteration.
Begrænsningerne er til at få øje på: latency ved gentagne fetches og dyre netværksrunder ved repetitiv adgang. Læg et tyndt cache-lag – fx en lille S3-bucket eller lokal parquet-cache – så hyppige analyser ikke runder kilden igen og igen. Tutorialen omtaler ikke caching, men i drift er det svært at undvære.
Skema-detektion uden tårer
Den defensive funktion find_trace_key er enkel og praktisk: kig først efter velkendte felter som “conversations” eller “messages”. Hvis de ikke findes, led efter en liste-kolonne, hvor element 0 er et dict med nøgler som “content”, “role” eller “value”. Det rammer ofte rigtigt, fordi variationerne typisk er moderate – ikke fundamentale.
Behovet er reelt: ingen to agent-frameworks gemmer traces helt ens. Nogle bruger “from” i stedet for “role”, andre har “value” hvor man forventer “content”. Vi har også set “function_call” i stedet for “tool”, med argumenter under “args”. Man kan ikke dække alle varianter med håndskrevne if-else uden at spilde tid. Automatisk skema-detektion reducerer forarbejdet markant.

Normalisering af agent-turns
Tutorialens normalize_turns gør det rigtige: ensretter til et par af role og content pr. turn. Mangler role, tjek “from”. Mangler content, prøv “value”. Hvis alt fejler, markér som “unknown” og fortsæt. Ikke elegant, men robust – og afgørende for stabile downstream-kørsler, hvor inkonsekvente role-content-par ellers skaber uro i træningen.
En typisk faldgrube er nested tool-kald midt i assistentens tekst – som JSON i content eller som særskilt turn med “tool”/“function”. Normaliseringen bør bevare signalet om tool-brug uden at ødelægge samtalestrømmen. Hvis tool-telemetri skal bruges senere, så udtræk den som et separat felt.

Sampling, DataFrame og et par grafer
Tutorialen skitserer et letvægtsanalytisk workflow: sample tusinder af traces, smid dem i en pandas DataFrame, kør turn-niveau statistik og lav simple visualiseringer. Det er effektivt til at spotte fejltyper, outliers og rollefordeling. Vi starter som regel med tre checks: fordeling af antal turns pr. trace, andel af rene to-turn-dialoger (bruger→assistent) og hyppighed af tool-interaktioner.
I en kundecase så vi en top ved 3-turn-dialoger, hvor tredje turn var en system-meddelelse, der burde have ligget først. Årsagen var en konverteringsfejl i en intern logger. Uden histogrammet var den glippet.
Fra rå logs til ShareGPT JSONL
Eksport til “clean ShareGPT-style JSONL” er praktisk, fordi mange SFT-værktøjer forventer netop det layout. Tutorialen kører et sæt transformationer: vælg kun “successful traces”, konverter samtalen til en ren liste af dicts med role og content, og skriv én samtale per linje som JSON. Let at versionere og genbruge.
Men hvornår er en trace “success”? Tutorialen fastsætter ikke thresholds. Et fornuftigt udgangspunkt er: et klart fuldført-opgaveflag hvor det findes, rimelig længde (hverken tom eller for lang), ingen følsomme data og et minimum for assistentkvalitet (heuristikker eller en hurtig scoringsmodel). Tilpas efter domænekrav.
Kommando-udtræk og værktøjsforståelse
Guiden viser også en helper, der udtrækker kommandoer fra JSON-agtigt assistentindhold: fjern code fences, parse som JSON og kig efter nøgler som “commands”, “command”, “keystrokes”. Det er best-effort, men nyttigt til at kvantificere agentadfærd. Et simpelt regex-faldnet er en god reserve, når JSON-parse fejler.
Målet er at kunne analysere hele trajectory: brugerens prompt, systemets setup, assistentens svar, tool-kald og feedback. Når alt er normaliseret, kan man måle succesfrekvens pr. værktøj, tidsforbrug pr. opgavetype og strategiskift hos assistenten – input, der kan bruges til retriever-tuning eller promptdesign.

Governance, kvalitet og privatliv
Før nogen trykker “train”: få styr på politikkerne. Tutorialen beskriver ikke licens og provenance i detaljer – det er et hul. Tjek den konkrete licens for AgentTrove-repoet og eventuelle underkilder. Afklar kommerciel brug og eventuelle krav til attribution.
Minimumskrav på datasiden:
- Anonymisering af personhenførbare oplysninger og virksomhedssensitivt indhold.
- Provenance-spor: gem oprindeligt trace-id, kilde og versionsstempel.
- Sampling-bias vurdering: rollefordeling, domæner, sprog.
- Opslagssporing: så man kan fjerne en trace ved forespørgsel.
Det er sjældent normaliseringen, der vælter læsset. Det er governance – og den skal være på plads fra start.
Drift og implementering i praksis
En enkel opskrift virker typisk bedst: batch–streaming hybrid. Brug streaming til exploration og sampling. Cach resultaterne i parquet. Kør normalisering og filtre i en planlagt batch, der skriver ShareGPT JSONL til et versionsmærket katalog (dag/uge). Overvåg datamængde, parse-fejlrater, andel af “success”-traces og simple kvalitetsmål (toxicity, tomme svar).

Versionsstyring er afgørende. Pin datasets-biblioteket (guiden kræver 2.19+). Containerisér pipelinen, og tilføj et lille smoke-test-script, der åbner streamen, læser 100 rækker og tjekker skema. Ingen magi – bare disciplin.
Tradeoffs og begrænsninger
Tilgangen løser ikke label-kvalitet. AgentTrove rummer både stærke og svage eksempler. Domænespecifik kontekst kan mangle. Tool-resultater kan være irrelevante eller ufuldstændige. Uden særskilt validering kan en “ren” ShareGPT-eksport stadig indlære uønsket adfærd.
Det største risikopunkt er blind eksport. At en trace kan parses, betyder ikke, at den bør bruges. Lav manuelt kvalitetsreview på et stratificeret sample. Hellere 100.000 solide samtaler end 1,7 mio. blandede. Små mængder problematisk indhold kan forstyrre en model uforholdsmæssigt meget.
MeMo som supplement til SFT
VentureBeat dækker MeMo, en memory-tilgang hvor ny viden lægges i en mindre sideløbende model, så hoved-LLM’en kan opdateres uden retraining. Ifølge rapporteringen håndterer MeMo komplekse forespørgsler robust ved støjende retrieval og undgår “catastrophic forgetting”. Pointen for drift: brug SFT-pipelinen her til samtalefærdighed og adfærd, og lad en memory-model stå for løbende faktuelle opdateringer.
Vi går ikke ned i MeMo-detaljer her – blot at det spiller fint sammen med en ShareGPT-baseret SFT-strøm.
Konkrete anbefalinger til teams
Hvis I vil i gang i morgen, så:
- Åbn streamen med load_dataset(repo, split=”train”, streaming=True) og inspicér første række.
- Implementér find_trace_key og normalize_turns. Kør på 5.000 samples.
- Lav tre grafer: turns pr. trace, rollefordeling, tool-frekvens.
- Definér skriftlige “success”-kriterier uden gråzoner.
- Eksportér 10.000 samtaler til ShareGPT JSONL og finetun en lille model som røgalarm.
- Til produktion: læg cache, batch-jobs, monitorering og en fjernelsesmekanisme for sporbarhed.
Ressourcer: En POC kan drives af én udvikler på 3–5 dage, hvis miljøet er sat op. Produktion kræver mere – især governance og kvalitet.
Hvad vi ofte gør i praksis
Vi faciliterer typisk fire korte spor: 1) Hands-on streaming-setup og cache-lag. 2) Skema-detektion og normalisering inkl. kanttilfælde. 3) SFT-eksport og lille baseline-træning. 4) Privatlivs- og kvalitetssprint med regler, tests og dashboards. Fokus på det, der virker i drift.
Et konkret eksempel: Hos en svensk kunde lå tool-kald dybt i et “actions”-array. En ekstra walker i normaliseringen løste det på et par timer. Ikke kønt – men effektivt.
Rapporterede huller – og hvad du gør ved dem
Tutorialen dækker ikke alt: licens og provenance, præcise “success”-kriterier, caching- og retry-strategi samt fuldt reproducerbart miljø (dependencies/container/CI). Anbefaling: få licensafklaring skriftligt før kommerciel brug. Formalisér “success”-regler med konkrete thresholds. Sæt et retry-budget på streaming-kald. Lås versioner på datasets, pandas, pyarrow og huggingface_hub i en container, der kører i CI.
Vil I kvalificere “one of the largest”, så bed maintainer om optælling og kildetyper, og sammenlign med andre kendte agent-logs, hvis tilgængelige. Det hjælper både risikovurdering og forventningsstyring.
Afslutning
Åbn streamen, kig på første række, kør normaliseringen. De første grafer viser hurtigt, hvor støjen bor – og hvad der bør filtreres. Gem kanttilfælde som eksempler; de betaler sig tilbage næste gang.
Bilag og referencer
- MarkTechPost: How to Use AgentTrove – streaming 1,7M traces, skema-detektion, normalisering, ShareGPT-eksport. 29.05.2026.
- VentureBeat: MeMo memory model – opdater viden uden retraining, rapporterede gevinster og robusthed.
- Nøglenoter: kræver datasets≥2.19, pandas, matplotlib, pyarrow, huggingface_hub. Brug streaming=True, inspicér første række, find_trace_key, normalize_turns, sample→DataFrame→statistik→visualisering→ShareGPT JSONL.