Саймон Уиллисон выпустил condense-json 1.0 для сжатия повторов в JSON
Разработчик и автор инструментов для работы с языковыми моделями Саймон Уиллисон выпустил версию 1.0 своей небольшой Python-библиотеки condense-json. Библиотеке уже около полутора лет, перед релизом первой стабильной версии автор внёс, по его собственным словам, «разумные и не нарушающие совместимость» правки.
condense-json решает узкую задачу: в JSON-документе часто повторяются одни и те же строки в разных местах структуры. Библиотека принимает исходный JSON и отдельный объект replacements со строками, которые нужно искать и заменять. Функция condense_json заменяет все найденные вхождения этих строк или подстрок на компактную ссылочную запись, где повторяющийся фрагмент заменён на короткий маркер. Например, строка «This is a string with foxes in it» при замене на «with foxes in it» превращается в запись, где вместо повтора стоит ссылка на этот фрагмент. Обратное преобразование выполняет функция uncondense_json(condensed, replacements), которая восстанавливает исходный JSON из сжатой формы.
По словам Уиллисона, идея библиотеки в том, чтобы упростить хранение JSON, содержащего дублирующиеся данные из связанных структур. Сам он использует condense_json, чтобы экономить место в логах SQLite, которые генерирует его инструмент командной строки LLM для работы с языковыми моделями. Актуальную реализацию такого использования он приводит в PR #1586 в соответствующем репозитории.
Ключевые факты
- Саймон Уиллисон выпустил версию 1.0 своей Python-библиотеки condense-json, которой уже около полутора лет.
- Библиотека находит в JSON-документе строки или подстроки, совпадающие с заданным объектом замен, и заменяет их компактной ссылочной записью.
- Преобразование обратимо: функция uncondense_json восстанавливает исходный JSON из сжатого варианта.
- Автор использует библиотеку, чтобы экономить место в SQLite-логах своего инструмента LLM, последнюю итерацию такого использования он приводит в PR #1586.
Почему это важно
Релиз узкий и технический: небольшая Python-утилита для дедупликации строк в JSON доходит до версии 1.0 спустя полтора года разработки. Ценность не в самом релизе, а в мотивации, Уиллисон один из заметных практиков, публично работающих с логированием и хранением данных LLM-приложений, и condense-json решает конкретную боль: логи языковых моделей быстро разрастаются из-за повторяющихся фрагментов (системных промптов, шаблонов, повторяющегося контекста), и их сжатие экономит место на диске.
Кому это важно
В первую очередь разработчикам, которые пишут инструменты для работы с LLM на Python и сталкиваются с ростом логов из-за повторяющихся данных, системных промптов, шаблонов ответов, повторяющихся частей запросов. Также полезна тем, кто хранит JSON с дублирующимися фрагментами в связанных структурах и хочет сократить объём.
Как это применить
Библиотека принимает исходный JSON и объект replacements, список строк, которые нужно искать и заменять; функция condense_json заменяет все найденные вхождения на компактную ссылочную запись. Обратное преобразование выполняет uncondense_json(condensed, replacements), возвращающая исходный JSON. Сам автор использует её для сжатия SQLite-логов, которые генерирует его инструмент командной строки LLM; актуальную реализацию такого использования он приводит в PR #1586. В источнике не указаны ни дата релиза, ни конкретные цифры экономии места.
Можно ли доверять
Источник, личный блог автора библиотеки Саймона Уиллисона, известного разработчика открытых инструментов для работы с LLM, включая одноимённую утилиту командной строки и средства для логирования в SQLite. Он описывает собственный проект от первого лица, поэтому фактура надёжная в части того, что и как делает библиотека, но независимой проверки заявления о том, что правки «разумные и не нарушающие совместимость», в тексте нет, это оценка самого автора.
Риски и подводные камни
В источнике не раскрыты детали внесённых перед релизом правок и нет данных о том, сколько места на практике экономит сжатие в реальных логах, оценить выигрыш без собственного тестирования нельзя. Библиотека узкоспециализированная и решает конкретную задачу дедупликации строк в JSON, а не является инструментом общего назначения для сжатия данных.
«Идея в том, чтобы упростить хранение JSON, содержащего дублирующиеся данные из других связанных структур.»
— Саймон Уиллисон