2000 токенов и ни одного лишнего: почему навыки душат маленькие LLM
Представьте, что вам нужно объяснить Qwen2.5 0.5B (самая популярная маленькая модель на 02.03.2026), как работать с API, парсить JSON и писать SQL-запросы. В промпт. А потом еще попросить что-то сделать. Контекстное окно в 4000 токенов исчезает быстрее, чем печенье в офисе. Традиционный метод - загружать markdown-файлы с описанием навыков (skill files) прямо в промпт. Работает, но съедает львиную долю контекста. Остается место только для "привет, как дела?".
Проблема в том, что каждый вызов модели с таким промптом - это повторная загрузка одних и тех же навыков. Токены тратятся впустую, а производительность падает. Особенно больно это бьет по агентам, как в статье про цепочки инструментов в продакшене.
KV-кэш как черный ход: инъекция навыков без спроса
Инъекция навыков в KV-кэш (KV cache injection) - это техника, которая обходит ограничение. Вместо того чтобы таскать навыки в промпте, мы предварительно вычисляем для них ключи и значения (Key-Value pairs) и загружаем прямо в кэш модели. Это как если бы вы перед экзаменом не учили учебник, а сразу вшили его в память. (Звучит как жульничество, потому что это оно и есть).
Модель, например, та же Qwen2.5 0.5B, начинает диалог уже с "знанием" всех необходимых навыков. Они не занимают место в контекстном окне. Освобожденные токены можно использовать для реальной работы.
Под капотом: что происходит, когда навыки попадают в кэш
Технически процесс выглядит так. Вы берете описание навыка (например, "Как конвертировать CSV в JSON: шаг 1 - прочитай файл...") и пропускаете его через модель в режиме инференса, но не генерируя ответ. Вы извлекаете вычисленные KV-пары для этих токенов. Потом, при основном запросе, вы инжектируете эти пары в начало KV-кэша новой сессии. Для модели это выглядит так, будто она только что прочитала инструкцию, хотя на самом деле она была загружена заранее.
- Экономия контекста: Навыки больше не тратят токены из окна в 4000.
- Скорость: Предварительно вычисленные KV-пары ускоряют первые токены ответа (TTFT).
- Стабильность: Навыки всегда представлены одинаково, что снижает хаос в ответах агента.
Минус очевиден: память. KV-пары для навыков живут в VRAM. Если навыков сотни, а модель и так маленькая, можно упереться в лимит памяти. Тут пригодится техника из статьи Binary KV cache.
Markdown-файлы vs инъекция: битва за токены
Давайте сравним два подхода на пальцах. У вас есть coding agent с 10 навыками (работа с файлами, API, SQL и т.д.).
| Метод | Затраты токенов на навыки | Гибкость | Сложность |
|---|---|---|---|
| Markdown в промпте | 1500-2000 токенов каждый вызов | Высокая (можно менять на лету) | Низкая (просто текст) |
| Инъекция в KV-кэш | 0 токенов во время запроса | Низкая (навыки статичны) | Высокая (нужна инженерия) |
Инъекция выигрывает, когда навыки редко меняются, а контекст - ваш главный враг. Markdown-файлы лучше, если вам нужно быстро прототипировать или навыки динамические. Кстати, о сложности масштабирования таких систем хорошо написано в статье про масштабирование LLM.
Кому светит эта техника: портрет идеального пользователя
Инъекция навыков - не панацея. Она создана для конкретных сценариев.
- Разработчики локальных агентов на Qwen2.5 0.5B/1.5B или аналогичных моделях. Когда каждый токен на счету, а навыков много.
- Корпоративные чат-боты с фиксированными инструкциями. Например, бот поддержки, который должен знать 50 пунктов из базы знаний. Инжектируем раз и навсегда.
- Энтузиасты, которые хотят выжать максимум из маленькой модели на своем железе. Особенно если вы разворачиваете LLM на облачном GPU и платите за время инференса.
Если же ваши навыки меняются каждый запрос, или вы работаете с моделью типа Qwen3-32B, у которой контекст огромный, эта техника - лишняя сложность. Ваша проблема, скорее, в другом, например, в деградации качества на длинном контексте.
Что будет дальше: прогноз от скептика
К 2027 году инъекция навыков в KV-кэш станет стандартной фичей в фреймворках для запуска LLM, вроде vLLM или Text Generation Interface. Но не потому, что это гениально, а потому что маленькие модели останутся единственным вариантом для локального развертывания в бизнесе, который не хочет делиться данными с OpenAI. (Об этом тренде мы писали в статье про локальный ИИ за бетонной стеной).
Главный риск - модели станут слишком зависимы от предзагруженных навыков и потеряют гибкость. Это как если бы пилот самолета мог летать только по заранее загруженным в мозг маршрутам. Но для рутинных задач - идеально. Техника не заменит фундаментальные прорывы в архитектуре, но позволит выиграть время и ресурсы прямо сейчас.
Практический совет: если вы хотите попробовать эту технику, ищите репозитории с ключевыми словами "KV cache injection" и "skill embedding". На 02.03.2026 уже есть несколько открытых реализаций для библиотек типа Hugging Face Transformers и vLLM. Начинайте с малого - инжектируйте один навык и замеряйте, сколько контекста освободилось.