В 2026 году API LLM подешевели — но не для тех, кто юзает агентные системы вслепую. Каждый цикл агента генерирует тонны токенов: перезапросы инструментов, история диалога, одинаковые системные промпты. Я помню, как запустил мультиагентный пайплайн для анализа логов — через час счет VISA напоминал сумму чека в ресторане с мишленовской звездой. Знаю, не у меня одного.
Пока одни пишут посты в духе "AI — это дёшево", другие выгребают из кошелька по $500 в день. Но есть способ не платить лишнего. Ниже — 4 принципа, которые я вкручиваю в каждый продакшен-агент. К каждому — интерактивный калькулятор, чтобы прикинуть экономию прямо сейчас. Без воды. Только код и циферки.
Важно: Все цены указаны для Claude Opus 4.7 (2026) — $15 за миллион входных токенов, $60 за выходные. Для GPT-4.5 и Gemini 2.5 Pro пересчитывайте по своему тарифу. Подробнее про скрытую инфляцию токенов в Opus 4.7 читайте в этом разборе.
1. Prompt Caching — не гоняйте одно и то же
Самый тупой способ сжечь деньги — отправлять в каждом запросе полный системный промпт размером с «Войну и мир». Anthropic, OpenAI и Google уже давно поддерживают кэширование префикса. Вы помечаете статическую часть cache_control, и API хранит её на сервере. Повторные запросы стоят копейки — вы платите только за разницу.
Например, если системный промпт — 2000 токенов, а каждый пользовательский запрос — 500, то вместо 2500 токенов вы платите за 500 + 10% от кэшированных (дисконт). Экономия на длинных сессиях доходит до 90% на входе.
1 Реализация (Anthropic API)
Вот как это выглядит в коде на Python (версия SDK >= 0.45). Обратите внимание на cache_control в системном сообщении:
import anthropic
client = anthropic.Anthropic()
system = [
{
"type": "text",
"text": "Вы — сеньор DevOps. Отвечай коротко, используй только facts.",
"cache_control": {"type": "ephemeral"}
}
]
response = client.messages.create(
model="claude-opus-4-7-20260401",
max_tokens=1024,
system=system,
messages=[{"role": "user", "content": "Сколько стоит pod в EKS?"}]
)
Кэш живёт 5 минут после последнего обращения. Если в пайплайне перерывы больше — толку ноль. Поэтому для агентов с плотными циклами (интервал < 1 мин) — идеально. Подробнее про формулу effective cost с кэшем читайте в этой статье.
Подводный камень: GPT-4.5 требует явно указывать cache_control на уровне массива сообщений, а не system. В Gemini 2.5 Pro кэш — платная опция (включи в консоли).
🧮 Калькулятор экономии от Prompt Caching
2. Lazy Loading Tools — не тащите лишнее
Ошибка, которую я вижу в 80% агентных систем: в каждом шаге агенту передают все доступные инструменты. 20 функций с описаниями по 200 токенов — и вот уже 4000 токенов летят в каждом запросе просто «на всякий случай». А агент использует 2-3 инструмента за сессию.
Решение — загружать инструменты лениво. Держите реестр, куда добавляйте описание только после того, как агент решил, что инструмент нужен. Или группируйте по доменам: используйте роутер (принцип 4), который сначала выбирает группу, а потом загружает конкретные тулзы.
🧮 Калькулятор экономии Lazy Loading
3. Semantic Caching — не бейте по одному месту дважды
Ручной кэш (exact match) — база. Но в агентных системах один и тот же вопрос часто задают по-разному: «сколько подов» и «какое количество подов». Semantic caching схлопывает такие запросы: вы храните эмбеддинги ответов, а новый запрос сначала ищете среди старых по порогу схожести (cosine similarity > 0.95).
Я использую такой кэш на основе sentence-transformers/all-MiniLM-L6-v2 (399 Мб, скорость 2000 запросов/сек на CPU). Время поиска — 2-5 мс. А экономия на повторяющихся запросах — до 70% на ответах.
Важно: Semantic caching — это компромисс. Если кэш отдаст не совсем точный ответ, агент сделает неправильный шаг. Ставьте порог 0.97+ для критичных операций. В остальных случаях 0.92-0.95 ок.
🧮 Калькулятор экономии Semantic Caching
4. Agent Routing — дешёвая модель для простых задач
Не каждый шаг агента требует мозга Клода Опуса. В моём пайплайне 70% запросов — это форматирование дат, простые вычисления, поиск по индексу. Для них достаточно Gemini 2.5 Flash (или GPT-4o mini). А сложные рассуждения (рефакторинг кода, анализ логов) пусть решает Opus 4.7.
Как сделать роутинг? Вариантов много: классификатор на основе эмбеддингов (logistic regression за 10 строк), или LLM-роутер (маленькая модель решает, куда отправить). Я предпочитаю второй вариант — точность выше 95%.
2 Реализация (псевдокод)
import openai
def route_task(task_description):
router_model = "gpt-4o-mini" # дешёвый классификатор
response = openai.chat.completions.create(model=router_model,
messages=[{"role": "system", "content": "Task: classify as SIMPLE or COMPLEX. Output only one word."},
{"role": "user", "content": task_description}],
max_tokens=5)
return response.choices[0].message.content.strip()
task = "Подсчитай количество запущенных подов в неймспейсе."
if route_task(task) == "SIMPLE":
model = "gemini-2.5-flash"
else:
model = "claude-opus-4-7-20260401"
# ... далее вызов
Цена роутера (gpt-4o-mini) — $0.15 за миллион входных, $0.60 за выходные. На 1000 запросов вы потратите центы, а сэкономите доллары.
🧮 Калькулятор экономии Routing
Нюансы и грабли, на которые я наступал
- Prompt caching не работает, если контекст меняется каждый раз. Проверяйте, что префикс действительно статический. Anthropic кэширует только exact match.
- Lazy loading может зациклить агента. Если инструмента нет, а агент его запросил — вылетит ошибка. Добавляйте fallback: «инструмент недоступен, используй другой».
- Semantic caching убивает актуальность. Если данные меняются (например, статус деплоя), кэш отдаст старое. Проставляйте TTL для каждого ключа.
- Routing иногда ошибается. Сложный запрос может улететь в дешёвую модель и вернуть чушь. Добавляйте ретрай с повышением модели, если ответ выглядит подозрительно.
Хотите копнуть глубже? Почитайте кейс создания продакшен-сервиса за $4.62 — там автор применил все четыре принципа. Или посмотрите сжатие вывода инструментов — ещё один способ резать токены.
Доллар, сэкономленный на токенах, — это доллар, который можно потратить на пиво. Или на ещё один GPU. Выбор за вами.