Когда вы передаете очищенные данные в LLM в виде массива объектов JSON, каждая строка повторяет каждое имя ключа. Для экспорта из 400 строк тысячи токенов тратятся на «title», «view_count» и «author_name» снова и снова, прежде чем модель когда-либо увидит...
Когда вы передаете очищенные данные в LLM в виде массива объектов JSON, каждая строка повторяет каждое имя ключа. Для экспорта из 400 строк тысячи токенов тратятся на «title», «view_count» и «author_name» снова и снова, прежде чем модель когда-либо увидит одно значение. Мы измерили, сколько это на самом деле стоит, и встроили альтернативу без потерь в пять наших актеров.
Исправление: столбчатый, но все равно без потерь
Вместо массива объектов отправьте один заголовок со списком столбцов один раз, затем по одному массиву на строку:
{"format":"columnar-v1","columns":["id","title","views"],"missing":"¤",
"rows":[["BV1xx","Обзор клавиатуры 2026 года",12034],["BV2yy","¤",877]]}
Строка, в которой отсутствует ключ, получает зарезервированный маркер («¤» по умолчанию, и кодировщик автоматически выбирает другой, если этот символ когда-либо сталкивается с реальными данными) вместо заполнения нулем — поэтому «это поле не существует в этой строке» никогда не путается с «это поле явно имеет значение NULL». Декодирование состоит из пяти строк Python и возвращает точные исходные строки:
защита decode_columnar (полезная нагрузка):
cols, маркер = полезная нагрузка["столбцы"], полезная нагрузка["отсутствует"]
return [{c: v для c, v в zip(cols, row), если v != маркер}
для строки в полезных данных["rows"]]
Результаты: 882 действительных строки,