← Главная
2026-04-25 · Отчёт об исследовании

Исследование стоимости toolcaller

Пять моделей-кандидатов протестированы на одинаковых диалогах продаж. GLM-5.1 выбрана для продакшена. ~$59 за 1 000 диалогов.

Результат: openrouter/z-ai/glm-5.1 побеждает по балансу цены/надёжности/качества. Развёрнуто в продакшене по $0.059 за диалог. Кэширование через OpenRouter работает для GLM и DeepSeek-direct (~66% попаданий). DeepSeek через :nitro провалился: пустые ответы посередине цикла и без кэширования. GLM-4.6 примерно в 1 случае из 5 подтверждает контакт, но не вызывает send_lead внутри диалога — таймер фолоу-апов в этом случае подбирает заявку, так что это наблюдаемое поведение, не блокирующее.

Методология

Результаты

Модель $/диалог $/1k Надёжность передачи лидов Рассуждения Заметки
openrouter/z-ai/glm-5.1 (прод) $0.059 $59 чисто (1/1) очень хорошо (опирается на базу) Кэширование через OpenRouter, ~66% попаданий
openrouter/z-ai/glm-4.6 $0.012–0.013 $13 наблюдается: ~1 случай из 5 пропускает send_lead внутри диалога; таймер подбирает заявку очень хорошо (чуть слабее 5.1 / GPT-5 в нашем сценарии) Дешевле 5.1; потеря в-диалоге восстанавливается, не блокер
openai/gpt-5.4 $0.063 $63 чисто (1/1) очень хорошо Авто-кэширование OpenAI; чтение кэша 10% от обычной цены
anthropic/claude-sonnet-4.6 (с кэшем) $0.118 $118 чисто (1/1) очень хорошо Явные маркеры cache_control; 90% скидка на кэш-чтение
openrouter/deepseek/deepseek-v4-pro:nitro нестабильно n/a тестирование сорвалось n/a Пустые ответы посередине цикла; кэширование не пропускается

Кэширование

ПровайдерМеханизмСкидкаПрокидывается через OpenRouter
OpenAI (GPT-5)автомат90%да
OpenAI (GPT-4.1 / 4o)автомат75% / 50%да
Anthropicявный cache_control90%да (если маркеры пробрасываются)
DeepSeekавтомат~90%только через собственный API DeepSeek; не через Together/Fireworks
Z.AI GLMавтомат~80%да (~66% наблюдаемо для GLM-5.1)
Moonshot Kimi / Qwenзависитнеизвестноне задокументировано

Для нашего агента стабильный кэшируемый префикс системного промпта составляет ~3,500–4,300 токенов (преамбула движка + Prompt1 проекта + схема инструментов). Изменчивый суффикс (текущее состояние диалога на ходу) не кэшируется по дизайну — он лежит в отдельном системном блоке, чтобы его изменения не сбивали кэш префикса.

Промахи кэша на OpenRouter

Передача кэша через OpenRouter недетерминированна, потому что OpenRouter балансирует нагрузку между несколькими апстримами (Together, Fireworks, DeepInfra, собственный API автора модели). У разных апстримов разные кэши; если запрос попал на другой апстрим, чем предыдущий, префикс там холодный и оплачивается полностью.

В трейсах продакшена GLM-5.1 наблюдается обычно один промах кэша за сессию (вариативность стоимости ~17%). Чистый эффект: $59/1k вместо теоретического минимума ~$50/1k при идеальном кэшировании. Допустимо для текущего этапа; решается полем provider.order в запросе OpenRouter, если станет систематическим.

Структура стоимости по ходам (продакшен GLM-5.1, 6 ходов)

ход   сообщение пользователя                       $/ход
─────────────────────────────────────────────────────────────
  1   "нужна оценка квартиры"                       $0.0108
  2   "барнаул, оформить наследство"                 $0.0102
  3   "а где взять ергн?"                            $0.0105
  4   <файл: passport.pdf>                           $0.0000  (file_ack)
  5   "паспорт"                                      $0.0120
  6   "понял. да, номер актуальный" → send_lead      $0.0157
─────────────────────────────────────────────────────────────
ИТОГО                                                $0.0591

Наблюдения по надёжности

Рекомендации

СценарийМодель
Продакшен по умолчаниюopenrouter/z-ai/glm-5.1
Премиум-уровень (платить ~7× за качество)anthropic/claude-sonnet-4.6 с кэшированием
Средний уровень-альтернативаopenai/gpt-5.4
Дешёвая альтернативаopenrouter/z-ai/glm-4.6 — примерно в 5 раз дешевле 5.1, с указанной выше особенностью в-диалоге (таймер подбирает заявку)
Не использоватьлюбой :nitro вариант (без кэширования)

Воспроизводимость

Чтобы повторить исследование:

# Замените models.toolcaller в config.dev.json, прогоните 5 ходов через CLI:
bin/aichat-cli --config config.dev.json --project abo22

# Сумма стоимости из трейса:
grep '^usage:' traces/1/<последний>.log | sed 's/.*cost=\$\([0-9.]*\).*/\1/' | paste -sd+ | bc

Строки usage: и cost= пишутся в каждый трейс компонентом internal/agent/toolagent.go (debugDumpBlocks + per-call usage line). Подсчёт токенов точный; cost= от OpenRouter точен для маршрутов, которые его возвращают.