Simon Willison给他的condense-json发了1.0,能把JSON里重复的字符串换成短引用,省存储空间,配合LLM日志用正好。
condense-json 1.0正式发布,这是一个拥有1.5年历史的Python库。它通过replacements对象将JSON中重复出现的字符串替换为{$r:...}语法,并可用uncondense_json()还原。开发者Simon Willison表示,该库用于压缩LLM生成的SQLite日志,相关实现见PR #1586。此次1.0版本应用了合理且无破坏性的修复,属于稳定版发布。
condense-json 1.0
Release: condense-json 1.0 I'm trying to get braver at releasing 1.0 versions. This little library is a year and a half old now - I've applied some sensible and non-disruptive fixes and shipped the big 1.0 for it. Here's an example of what it can do, lifted from the README: { "foo" : { "bar" : { "string" : " This is a string with foxes in it " , "nested" : { "more" : [ " Here is a string " , " another with foxes in it too " ] } } } } Combine that with a replacements object: { "1" : " with foxes in it " } And condense_json(input_json, replacements) produces the following: { "foo" : { "bar" : { "string" : { "$r" : [ " This is a string " , { "$" : " 1 " }]}, "nested" : { "more" : [ " Here is a string " , { "$r" : [ " another " , { "$" : " 1 " }, " too " ]}] } } } } It scans for strings or substrings that are present in that replacements object and replaces those with a special {"$r": ...} syntax in the output. You can reverse the effect with uncondense_json(condensed, replacements) . The idea is to make it easier to store JSON that includes duplicated data from other related structures. I use it to save space in the SQLite logs generated by LLM - see PR #1586 for the latest iteration of that. Tags: json , projects , python , llm