Simon Willison rilascia condense-json 1.0 per ridurre stringhe duplicate nei JSON
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
La libreria sostituisce porzioni ripetute di testo con una sintassi {$r} e permette di ricostruire l'originale con uncondense_json, pensata anche per comprimere log di LLM in SQLite.
Simon Willison ha pubblicato condense-json 1.0, una libreria che compatta i JSON sostituendo stringhe o sottostringhe ricorrenti con riferimenti e permette di invertire l’operazione per tornare all’originale1.
La libreria prende un JSON di input e un oggetto di sostituzioni. Scansiona tutte le stringhe nel documento, anche in oggetti annidati e array. Cerca le corrispondenze definite nell’oggetto e le rimpiazza con una forma compatta {"$r": [...]}. I pezzi variabili restano testo letterale. I segmenti ripetuti diventano riferimenti con la sintassi {"$": "
Esempio dal README. Input:
{
"foo": {
"bar": {
"string": "This is a string with foxes in it",
"nested": {
"more": ["Here is a string", "another with foxes in it too"]
}
}
}
}
Oggetto di sostituzioni:
{"1": "with foxes in it"}
Output di condense_json(input_json, replacements):
{
"foo": {
"bar": {
"string": {"$r": ["This is a string ", {"$": "1"}]},
"nested": {
"more": ["Here is a string", {"$r": ["another ", {"$": "1"}, " too"]}]
}
}
}
}
In questo esempio, la sottostringa “with foxes in it” è associata alla chiave "1" nell’oggetto di sostituzioni. Le occorrenze nel JSON diventano sequenze che combinano testo letterale e riferimenti {"$": "1"} all’interno di {"$r": [...]}. Le stringhe senza corrispondenze restano inalterate. Con uncondense_json(...), la libreria ripristina le stringhe originali usando lo stesso oggetto di sostituzioni1.
Il modello d’uso è semplice: si definiscono a priori le sottostringhe che conviene comprimere. La libreria applica quella mappa in modo consistente sull’intero documento. Il vantaggio emerge quando molte stringhe ripetono gli stessi segmenti. L’encoding compatto sostituisce quelle ripetizioni con token brevi, preservando la capacità di tornare al JSON iniziale1.
Willison indica un caso d’uso concreto: ridurre lo spazio dei log in SQLite generati da modelli linguistici. Rimanda a “PR #1586” per seguire lo stato più recente del lavoro su quel fronte1.
Nel presentare la 1.0, Willison scrive di aver raccolto correzioni “sensate e non dirompenti” prima del rilascio e di voler essere più deciso nel marchiare come 1.0 progetti già maturi1. Per condense-json, questo significa una prima versione stabile senza cambiamenti radicali al comportamento dichiarato1.
La scelta di usare riferimenti espliciti nel JSON, invece di un formato binario, rende l’output leggibile e facile da ispezionare nei diff e nei log. È un dettaglio che aiuta chi integra la libreria in pipeline e strumenti esistenti1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Fedeltà alle fonti. Un secondo passaggio toglie ogni affermazione che le fonti non sostengono.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.