Headroom: инструмент от Netflix, который делает ИИ-агентов в 10 раз дешевле
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00Это Headroom, инструмент с открытым исходным кодом, который сжимает всё, что читает ваш ИИ-агент,
00:00:04то есть вызовы инструментов, файлы кода и RAG, перед тем как они попадут в LLM, что позволяет сократить токены
00:00:09на 60 или даже 95% для получения того же самого ответа. И самое умное здесь то, что это обратимый процесс, поэтому
00:00:14модель может запросить полную информацию обратно, когда она ей действительно понадобится. Но сжатие
00:00:18обычно означает потерю чего-то, так как же удалить большую часть контекста и всё равно получить правильный
00:00:23ответ? Это действительно интересный вопрос, так что подписывайтесь, и давайте выясним.
00:00:31Если вы когда-нибудь использовали такую обвязку, как ClaudeCode, вы знаете, что она потребляет много токенов. Каждый вызов инструмента
00:00:35может выдать огромные JSON-логи, которые по большей части являются шумом, отвлекая от важной информации,
00:00:40и всё это попадает в контекстное окно, за которое вы платите.
00:00:45Особенно если вы используете что-то вроде Opus в режиме UltraCode, который запускает динамические рабочие процессы,
00:00:50запуская параллельные под-агенты без ограничения токенов. Вот почему Теджас Чопра, старший разработчик в Netflix,
00:00:57создал Headroom, который работает путем определения типа контента и сохранения важной информации.
00:01:01Так что для JSON-массивов он сохраняет аномалии и крайние случаи, у него есть компрессор кода, который читает
00:01:06фактическое дерево синтаксиса, а когда он читает логи сборки, он сохраняет ошибки и отбрасывает пройденные тесты.
00:01:11Но вот самая интересная часть. Для обычного текста Headroom использует собственную модель под названием CompressBase,
00:01:17которую Теджас обучил сам специально для сжатия, и эта модель работает локально на вашем компьютере.
00:01:22Headroom утверждает, что уже сэкономила пользователям около 700 000 долларов на токенах,
00:01:26и самое умное здесь то, что она оставляет “хлебную крошку” в сжатом тексте,
00:01:30содержащую хэш, который модель может использовать для извлечения несжатых данных, если они ей когда-нибудь понадобятся.
00:01:35Теперь, если вы смотрели видео Джеймса о Caveman, оно также сокращает контекст,
00:01:39но с противоположной стороны, и я объясню это подробнее позже в видео.
00:01:43Но сейчас давайте посмотрим на базовый пример работы Headroom, чтобы понять, как это устроено.
00:01:46Headroom работает с помощью Python-сервера, который стоит между вашим приложением,
00:01:50это может быть сканируемый код и, например, серверы Anthropic.
00:01:54Поэтому, когда приходит результат вызова инструмента, прокси-сервер сжимает его, используя Rust под капотом,
00:01:59и просто отправляет сжатую версию в API.
00:02:01Так что вы можете установить сервер с помощью pip, но я собираюсь использовать uv и убедиться, что версия Python
00:02:06— 3.12, потому что на новых версиях работать не будет.
00:02:09Затем запустите команду прокси Headroom из этой библиотеки, которая активирует прокси на этом порту.
00:02:14У Headroom также есть SDK для TypeScript или Python,
00:02:17и для демо мы будем использовать Python-версию, чтобы создать приложение с помощью SDK Claude.
00:02:22Так что мы можем установить их оба вот так, и тогда мы готовы к работе с приложением.
00:02:25План такой: показать вам, как использовать Headroom с ClaudeCode позже,
00:02:29но сначала я просто хотел показать, как это работает за кулисами.
00:02:32Итак, для этого приложения у нас есть запрос пользователя прочитать все файлы логов и найти ошибку,
00:02:36а также её первопричину. И отсюда мы собираемся сымитировать вызов инструмента.
00:02:40Мы заставим Claude сделать вызов Bash-инструмента для выполнения “cat” файла логов сервера,
00:02:44который содержит кучу фейковых логов и импортируется здесь выше.
00:02:47А затем мы вернем результаты вызова инструмента.
00:02:49Причина, по которой мы не передаем Headroom текстовый файл напрямую,
00:02:52заключается в том, что он сжимает только вывод вызова инструмента.
00:02:54Поэтому здесь мы указываем модель, а ниже используем функцию сжатия Headroom
00:02:59для принятия сообщения с моделью для точного подсчета токенов.
00:03:02Headroom на самом деле не использует Haiku.
00:03:04Затем мы передаем базовый URL прокси.
00:03:06И у нас есть набор контрольных логов для тестирования,
00:03:08показывающих сообщение до и после Headroom,
00:03:11а также ещё несколько контрольных логов, показывающих процент экономии.
00:03:13А после этого мы передаем сжатое сообщение от Headroom в ClaudeCode,
00:03:17которое также содержит запрос пользователя.
00:03:18Итак, теперь, если мы запустим этот файл, мы увидим, что Headroom сэкономила 98% токенов.
00:03:23Вот токены до, а вот токены после.
00:03:26То есть экономия составила более 17 000 токенов.
00:03:28И это очевидно, когда мы смотрим “до” и “после”.
00:03:31Если прокрутить вверх, это “до”, то есть то, что обычно отправляется в ClaudeCode.
00:03:35Мы получаем запрос пользователя, вызов инструмента и ответ инструмента, то есть весь лог-файл.
00:03:39А если посмотреть, что отправляет Headroom, мы увидим то же сообщение пользователя и вызов инструмента,
00:03:43но ответ инструмента намного меньше.
00:03:45И что он сделал: использовал статистическое сжатие для удаления избыточных токенов.
00:03:50Удалено 419 похожих информационных логов и сжато в сводку.
00:03:54Теперь здесь мы видим, что Headroom говорит Claude: это сжатый вывод.
00:03:58Его можно получить с помощью этого хэша.
00:04:00Теперь здесь мы видим один из непосредственных недостатков Headroom: Claude думает, что у него нет
00:04:05достаточно информации для завершения задачи, хотя это не так.
00:04:08Поэтому мы запустим наш файл снова.
00:04:10И мы видим, что на этот раз у нас по-прежнему 98% экономии, но гораздо больше информации от Claude.
00:04:16Давайте попробуем другое демо.
00:04:17Как обычно, нужно запустить прокси Headroom, но в этот раз я добавляю больше параметров.
00:04:21Здесь видно, что я добавляю значение ML, которое использует локальную модель сжатия для обычного текста.
00:04:26И я добавил код, чтобы сделать доступным компрессор, понимающий код.
00:04:30И затем добавил флаг code aware, чтобы его включить.
00:04:32Теперь мы видим, что он здесь включен.
00:04:34Затем я запускаю ClaudeCode, но сначала установлю базовый URL на прокси.
00:04:39С этим на месте, я даю Claude запрос: прочитай каждый TS-файл в этом проекте
00:04:44и дай мне глубокий обзор того, что делает этот проект, со ссылками на соответствующий код.
00:04:49Через некоторое время он дает ответ, что прочитал все TypeScript-файлы
00:04:53в пяти пакетах и дает мне обзор по умолчанию.
00:04:56Но если мы запустим команду контекста, что я сделал ранее, мы увидим, что использовано 89,1 тыс. токенов.
00:05:02Я пошел дальше и запустил аналогичный запрос в Claude без использования Headroom.
00:05:06Если прокрутить вниз и посмотреть, где мы вызвали подкоманду контекста,
00:05:10то здесь использовано немного больше токенов.
00:05:11Я не уверен, почему он выбрал контекстное окно Opus в 1 миллион здесь.
00:05:16n выбрал 200k контекстное окно здесь, но мы можем отправить curl к этой конечной точке с помощью jq,
00:05:21чтобы точно увидеть, откуда было сжатие от прокси.
00:05:23Там много информации, так что у меня ушло время, чтобы найти это.
00:05:26Но если прокрутить вверх, можно увидеть, сколько токенов было сэкономлено сжатием Headroom
00:05:30и даже увидеть, сколько денег сэкономило нам сжатие.
00:05:32Конечно, всё это было только с одного запроса.
00:05:35Но представьте, если бы у меня было запущено несколько сессий ClaudeCode, и Headroom сжимал бы все вызовы
00:05:39инструментов. Представьте, сколько бы ещё токенов я сэкономил.
00:05:42Я также хочу отметить, что когда я запускал тот же запрос с “low efforts” на Opus,
00:05:46Headroom на самом деле не сэкономил никаких токенов.
00:05:49Только когда я перешел с low на medium, экономия токенов стала заметной.
00:05:53Может быть, если бы я был на high, x-high или даже max, тогда бы он сэкономил ещё больше.
00:05:57Но в любом случае, это был быстрый обзор Headroom.
00:06:00И, конечно, есть ещё так много функций, которые я мог бы осветить,
00:06:03например, кросс-агентную память, которая позволяет Claude, Codex и другим обвязкам
00:06:07использовать один и тот же сжатый контекст.
00:06:09Headroom Learn, который анализирует ваши неудачные сессии, чтобы понять, что он сжал
00:06:12слишком сильно, и обучается, чтобы не повторять ту же ошибку в будущем,
00:06:15а также интеграции с популярными SDK.
00:06:18Но есть одна важная вещь, которую стоит учитывать о Headroom.
00:06:21Каждый раз, когда модель не получает информацию, которая ей нужна,
00:06:24и просит Headroom предоставить полные данные, это приводит ко второму кругу запроса,
00:06:28что в некотором роде означает, что вы тратите больше токенов с Headroom в некоторых случаях, чем без него.
00:06:33Но я полагаю, в этом преимущество использования функции Headroom Learn,
00:06:36которая пытается предотвратить это в будущем.
00:06:39Но помните, я говорил о Caveman ранее в этом видео?
00:06:42Так вот, Caveman сокращает токены, инструктируя модель отвечать короткими фрагментами,
00:06:46отбрасывая слова-паразиты и так далее.
00:06:48Но как вы только что видели в демо, Headroom уменьшает то, что читает модель,
00:06:51ещё до того, как это попадет в модель.
00:06:52Так что один режет вывод, а другой режет ввод,
00:06:56что означает, что технически вы можете использовать их вместе для максимальной экономии токенов,
00:07:00если вас действительно так сильно волнует их экономия.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video