Двадцать два доллара за глупость
В прошлом месяце я получил счет от Google AI Studio: $22.50 за 45 миллионов токенов. Мой код-агент на Gemini 2.0 Pro отправлял в модель весь репозиторий при каждом чихе. Весь код, всю историю, все промпты. Снова и снова.
Это как пересылать собрание сочинений Толстого почтой каждый раз, когда нужно узнать, как звали Анну Каренину.
К февралю 2026 года цены на токены Gemini 2.0 Ultra выросли до $0.0000015 за входной токен. Claude 3.7 Sonnet просит $0.000003. Разница вроде небольшая, пока не умножишь на миллионы.
Context Lens: микроскоп для токенов
Инструмент вышел в релиз 15 января 2026 года. Context Lens не генерирует код, не пишет промпты, не делает ничего полезного в привычном смысле. Он просто показывает, что на самом деле происходит внутри вашего агента.
Устанавливается через pip:
pip install context-lens==2.1.0
И вот что он умеет:
- Трассирует каждый вызов к Claude, Gemini, GPT-4.5
- Считает токены в реальном времени
- Показывает дубликаты в контексте
- Строит тепловые карты использования контекста
- Находит утечки — когда агент таскает с собой ненужный хлам
Как выглядит катастрофа изнутри
Вот типичный сценарий, который Context Lens ловит у 80% разработчиков:
Вы пишете агента для рефакторинга кода. Он получает задание "оптимизировать функцию X", загружает файл, анализирует, предлагает изменения. Пользователь говорит: "добавь обработку ошибок". Агент загружает файл снова. Весь. Полностью.
Context Lens показывает красную зону — 95% дубликатов в контексте. Модель платит за одни и те же строки кода по три раза.
Хуже того: если вы используете контекстное кэширование, но неправильно его настроили — инструмент покажет, что кэш не работает. Просто потому, что вы отправляете слегка измененные промпты, и система считает их разными.
Claude против Gemini: кто жаднее?
Провел эксперимент на реальном проекте — агенте для анализа логов. Одна и та же архитектура, одинаковые промпты.
| Модель | Токенов за сессию | Дубликаты | Стоимость (10к сессий) |
|---|---|---|---|
| Claude 3.7 Sonnet | 12,400 | 18% | $37.20 |
| Gemini 2.0 Ultra | 187,500 | 92% | $281.25 |
Разница в 15 раз. Не в качестве ответов — в расходе токенов.
Оказалось, Gemini 2.0 Ultra по умолчанию включает в контекст всю историю диалога, даже если вы явно не просили. Каждый turn — вся предыдущая переписка. Claude ведет себя скромнее — отправляет только то, что нужно для текущего запроса.
Важно: это не баг Gemini, а фича. Модель оптимизирована для длинных диалогов с полным контекстом. Но если вы строите агента, который работает с кодом — вам эта фича сжирает бюджет.
Три способа сэкономить, которые не работают
Перед тем, как показать, как работает Context Lens, давайте разберем популярные ошибки.
1 Ручное обрезание контекста
Берете последние N сообщений, отрезаете остальное. Звучит логично, пока не поймете, что в третьем сообщении была ссылка на первое. Агент теряет связь, начинает галлюцинировать. Вам снова нужен инструмент для борьбы с галлюцинациями, но это уже другая история.
2 Хранение всего в векторах
Закидываете весь код в векторную базу, при запросе ищете релевантные куски. Работает для документации, но для кода — катастрофа. Агент видит функцию без импортов, без контекста класса, без соседних методов. Пишет код, который не компилируется.
3 Наивное кэширование
Включили context_caching в Gemini API и думаете, что победили. Context Lens показывает: кэш срабатывает в 30% случаев. Потому что вы каждый раз меняете системный промпт на 5%, добавляете метаданные, временные метки. Для модели это новый контекст.
Как работает нормальная оптимизация
Context Lens дает не магию, а данные. Вот что он показал в моем агенте:
1. 73% контекста — дубликаты системных промптов
2. Каждый файл отправлялся в среднем 4.2 раза
3. Gemini добавляла 1200 служебных токенов к каждому запросу
Исправления заняли день:
- Вынес системные промпты в отдельные константы, включил для них кэширование
- Добавил хеширование файлов — если файл не менялся, отправлял только хеш и ссылку
- Настроил сжатие вывода инструментов — вместо полного JSON отправлял diff
- Перешел с Gemini 2.0 Ultra на Claude 3.7 Sonnet для задач, где не нужен гигантский контекст
Результат: сокращение токенов на 68%. С $281 до $90 за 10к сессий.
Кому нужен Context Lens (а кому нет)
Берите, если:
- Ваш агент работает с кодом и стоит больше $100 в месяц
- Используете Gemini 2.0 — там оптимизация контекста критична
- Заметили, что с ростом пользователей счета растут нелинейно
- Хотите понять, почему ваш мультиагент тормозит
Не тратьте время, если:
- Используете только ChatGPT через веб-интерфейс
- Ваш агент делает 10-20 запросов в день
- Готовы платить за простоту (и за дубликаты)
Альтернативы, которые уступают
LangSmith от Anthropic — мощный, но перегруженный. Нужно разбираться в их экосистеме, платить $99 в месяц минимум. Для простой трассировки токенов — избыточно.
OpenTelemetry для LLM — открытый стандарт, но нужно настраивать сборку, экспортеры, дашборды. Конфигурация на 500 строк YAML вместо одной команды pip install.
Самописные скрипты — работают, пока не поменялся API Gemini или не вышел Claude 3.7. В феврале 2026 Google снова обновил ценообразование на токены — все самописные калькуляторы сломались.
Сколько стоит незнание
Вернемся к началу. $22.50 за 45 миллионов токенов. После настройки Context Lens тот же функционал стал стоить $7.30.
Разница в три раза. Не потому, что я нашел волшебный алгоритм, а потому, что увидел, что на самом деле происходит.
Gemini 2.0 все еще отправляет лишние токены — но теперь я знаю, сколько именно, и учитываю это в архитектуре. Claude 3.7 экономичнее — но только если правильно использовать его контекстное окно.
Самое смешное: инструмент бесплатный. Разработчики берут деньги только за корпоративные фичи — командные дашборды, интеграцию с Jira, SLA. Базовая версия трассирует токены, считает дубликаты, показывает утечки. Этого хватает, чтобы не сжечь $15 на ровном месте.
Попробуйте запустить его на своем агенте. Хотя бы на час. Посмотрите, сколько токенов уходит впустую. Потом умножьте на вашу месячную нагрузку.
Цифры вас удивят. Гарантирую.