Отслеживание затрат SDK
Claude Code SDK предоставляет подробную информацию об использовании токенов для каждого взаимодействия с Claude. Это руководство объясняет, как правильно отслеживать затраты и понимать отчеты об использовании, особенно при работе с параллельным использованием инструментов и многошаговыми разговорами. Для полной документации API см. справочник TypeScript SDK.Понимание использования токенов
Когда Claude обрабатывает запросы, он сообщает об использовании токенов на уровне сообщений. Эти данные об использовании необходимы для отслеживания затрат и правильного выставления счетов пользователям.Ключевые концепции
- Шаги: Шаг - это одна пара запрос/ответ между вашим приложением и Claude
- Сообщения: Отдельные сообщения в рамках шага (текст, использование инструментов, результаты инструментов)
- Использование: Данные о потреблении токенов, прикрепленные к сообщениям ассистента
Структура отчетности об использовании
Одиночное против параллельного использования инструментов
Когда Claude выполняет инструменты, отчетность об использовании различается в зависимости от того, выполняются ли инструменты последовательно или параллельно:Пример потока сообщений
Вот как сообщения и использование сообщаются в типичном многошаговом разговоре:Важные правила использования
1. Одинаковый ID = Одинаковое использование
Все сообщения с одинаковым полемid
сообщают об идентичном использовании. Когда Claude отправляет несколько сообщений в одном ходе (например, текст + использование инструментов), они имеют один и тот же ID сообщения и данные об использовании.
2. Взимайте плату один раз за шаг
Вы должны взимать плату с пользователей только один раз за шаг, а не за каждое отдельное сообщение. Когда вы видите несколько сообщений ассистента с одинаковым ID, используйте использование из любого одного из них.3. Сообщение результата содержит кумулятивное использование
Финальное сообщениеresult
содержит общее кумулятивное использование из всех шагов в разговоре:
Реализация: Система отслеживания затрат
Вот полный пример реализации системы отслеживания затрат:Обработка крайних случаев
Расхождения в выходных токенах
В редких случаях вы можете наблюдать разные значенияoutput_tokens
для сообщений с одинаковым ID. Когда это происходит:
- Используйте наибольшее значение - Финальное сообщение в группе обычно содержит точный итог
- Проверьте против общей стоимости -
total_cost_usd
в сообщении результата является авторитетным - Сообщайте о несоответствиях - Подавайте проблемы в репозиторий Claude Code на GitHub
Отслеживание токенов кэша
При использовании кэширования промптов отслеживайте эти типы токенов отдельно:Лучшие практики
- Используйте ID сообщений для дедупликации: Всегда отслеживайте обработанные ID сообщений, чтобы избежать двойного взимания платы
- Мониторьте сообщение результата: Финальный результат содержит авторитетное кумулятивное использование
- Реализуйте логирование: Логируйте все данные об использовании для аудита и отладки
- Обрабатывайте сбои изящно: Отслеживайте частичное использование даже если разговор завершился неудачно
- Рассмотрите стриминг: Для потоковых ответов накапливайте использование по мере поступления сообщений
Справочник полей использования
Каждый объект использования содержит:input_tokens
: Базовые входные токены, обработанныеoutput_tokens
: Токены, сгенерированные в ответеcache_creation_input_tokens
: Токены, используемые для создания записей кэшаcache_read_input_tokens
: Токены, прочитанные из кэшаservice_tier
: Используемый уровень сервиса (например, “standard”)total_cost_usd
: Общая стоимость в долларах США (только в сообщении результата)
Пример: Создание панели выставления счетов
Вот как агрегировать данные об использовании для панели выставления счетов:Связанная документация
- Справочник TypeScript SDK - Полная документация API
- Обзор SDK - Начало работы с SDK
- Разрешения SDK - Управление разрешениями инструментов