condense-json 1.0 fjerner dupliserte strenger fra JSON, og krymper LLM-loggene
Bytter gjentatte strenger i JSON mot korte referanser, slik at loggdatabasen slipper å lagre den samme systemprompten tusen ganger.
Hver gang du logger et kall til en språkmodell, følger det med en systemprompt, et sett verktøyskjemaer og gjerne hele samtalehistorikken. Etter noen tusen kall består SQLite-fila i stor grad av de samme strengene om og om igjen. Det var problemet Simon Willison bygde condense-json for i februar 2025, og 2. august slapp han versjon 1.0 av biblioteket.
«Jeg prøver å bli modigere på å slippe 1.0-versjoner. Dette lille biblioteket er halvannet år gammelt nå» — Simon Willison
Biblioteket tar imot et JSON-objekt og en oppslagstabell med strenger. Finner det en av strengene inne i en verdi, byttes den mot en kort referanse med tekstbitene rundt bevart, og uncondense_json snur operasjonen. Ved overlappende treff vinner det lengste, uavhengig av rekkefølgen i tabellen, så resultatet er deterministisk for like inndata.
Willison bruker det selv i kommandolinjeverktøyet LLM. I en åpen pull request fra 2. august lagres hele råsvaret fra modellleverandøren i en ny kolonne, kondensert slik at ingenting som allerede ligger i meldingstabellene blir lagret to ganger. Terskelen er satt til strenger på 64 tegn eller mer, og selve oppslagstabellen lagres aldri: den bygges opp igjen fra meldingene ved lesing.
Poenget for deg som bygger agenter er at loggvolumet vokser raskere enn samtalene. Et agentløp med tjue verktøykall lagrer det samme verktøyskjemaet tjue ganger hvis du dumper råsvarene rått. Biblioteket krever Python 3.10 eller nyere og er lisensiert under Apache 2.0.
Hva bør du gjøre?
- Mål først hvor mye av loggtabellen din som faktisk er gjentakelser, før du legger inn et ekstra ledd i lagringen.
- Bygg oppslagstabellen fra data du allerede lagrer et annet sted, slik Willison gjør, i stedet for å lagre den ved siden av de kondenserte dataene.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.