# Как экономить токены LLM: кэш, роутинг и prompt caching на практике

> AI Release · @ai_release1 · https://ai-release.net/guides/kak-sekonomit-tokeny-llm.html

Счета за LLM растут вместе с объёмом контекста: каждый повторный запрос пересчитывает одни и те же системные промпты, инструкции и историю диалога. Гайд решает точечную проблему — как сократить расход токенов в реальных интеграциях через кэширование и роутинг. Подходит для разработчиков, которые работают с API OpenAI, Anthropic и прокси-роутерами (LiteLLM, OpenRouter), на любой ОС.

## Требования и подготовка
- API-ключ минимум одного провайдера: OpenAI или Anthropic.
- Библиотека для запросов: OpenAI SDK, Anthropic SDK или обычный HTTP-клиент.
- Поддержка prompt caching у выбранной модели (у OpenAI и Anthropic она есть).
- Для роутинга — прокси-слой или собственная логика выбора модели.
- Логирование: записывайте usage из каждого ответа, чтобы видеть экономию.

## Пошаговая инструкция

1. Положите стабильные элементы в начало запроса: системный промпт, инструкции, few-shot примеры, описание инструментов. Именно этот блок попадает в кэш.
   Результат: неизменный префикс не пересчитывается при каждом вызове.

2. Включите кэширование у OpenAI. Оно работает автоматически: если неизменный префикс запроса длиннее примерно 1024 токенов, провайдер кэширует его и заметно снижает цену на эти токены.
   Результат: повторные вызовы с тем же префиксом стоят дешевле.

3. Для Anthropic пометьте блок явно через cache_control. Пример тела запроса:

```json
{
  "model": "claude-sonnet-4-5",
  "max_tokens": 1024,
  "system": [
    {
      "type": "text",
      "text": "Вы — ассистент поддержки. Отвечайте коротко и по делу.",
      "cache_control": {"type": "ephemeral"}
    }
  ],
  "messages": [
    {"role": "user", "content": "Здравствуйте, не работает оплата."}
  ]
}
```

Результат: помеченный блок читается из кэша, а не обрабатывается с нуля.

4. Сократите историю диалога. Не отправляйте всю переписку: берите последние 5–10 сообщений, а старые сжимайте в короткую выжимку силами LLM. Инструменты для этого — в [гайде по работе с текстом](https://ai-release.net/guides/nejroseti-dlya-teksta.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
   Результат: число входных токенов падает в разы.

5. Добавьте роутинг. Простые задачи (извлечение данных, перефразирование, ответ «да/нет») отправляйте на компактную дешёвую модель; сложный анализ, код и длинные рассуждения — на флагман.
   Результат: дешёвая модель разгружает дорогую, средний чек снижается.

6. Задайте пороги роутинга: длина запроса, наличие вложений, тип задачи. Например, запрос до 500 токенов и без системных правил уходит на малую модель. Подбор моделей по сильным сторонам — в [гайде по лучшим нейросетям](https://ai-release.net/guides/luchshie-nejroseti-i-modeli-2026.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
   Результат: распределение запросов предсказуемое, бюджет стабильный.

7. Замеряйте эффект. Сравнивайте usage.prompt_tokens и cached_tokens в логах до и после включения кэша.
   Результат: видна реальная экономия по каждому методу отдельно.

## Возможные проблемы и решения

- Кэш «не срабатывает», хотя промпт одинаковый. Причина: кэш строится по точному префиксу, и любое изменение в начале запроса — перестановка сообщений, динамический элемент в первой строке — сбрасывает его. Решение: вынесите всё изменчивое в конец запроса, а статику держите в начале.
- История диалога снова раздувается. Решение: добавьте фоновую суммаризацию старых сообщений и храните в контексте только выжимку плюс последние несколько сообщений.
- Маленькая модель портит ответы на сложных запросах. Решение: поднимите порог отправки на сильную модель или добавьте правило «если тема в списке сложных — сразу на флагман».

## FAQ

**Что такое prompt caching?**
Механизм, при котором провайдер запоминает повторяющийся префикс запроса и не пересчитывает его заново. Повторные обращения к этому блоку токенов стоят дешевле, чем первичная обработка.

**Какие провайдеры поддерживают кэширование?**
У OpenAI кэш автоматический для основной части актуальных моделей. У Anthropic кэш включается явной пометкой блока через cache_control; без этой пометки кэширования нет.

**Как проверить, что кэш сработал?**
В ответе API посмотрите поля usage: у OpenAI это cached_tokens, у Anthropic — cache_read_input_tokens. Если они больше нуля, часть запроса была прочитана из кэша.

**Что такое роутинг моделей?**
Распределение запросов между моделями разной мощности: простые задачи уходят на компактные дешёвые модели, сложные — на старшие. Это снижает средний чек без потери качества на трудных сценариях.
