При получении запроса от пользователя на стороне ProxyAPI происходит предварительный подсчет стоимости запроса, который также можно назвать "прогнозируемый". Это нужно, чтобы баланс пользователя в системе не стал негативным.
Токены запроса рассчитываются достаточно точно, исходя из полученного контекста. Токены ответа расчитываются приблизительно, так как до отправки запроса мы не можем знать, сколько токенов в итоге модель потратит на генерацию ответа.
В этом случае для подсчета токенов ответа берется максимальное число, которое данная модель может вернуть. Для модели OpenAI GPT-4o, например, это 4 096 токенов.
Допустим, пользователь отправил запрос к модели OpenAI gpt-4o-mini:
{ "model": "gpt-4o", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Привет! Расскажи про то, как устроена солнечная система" } ] } ] }
Предварительный расчет стоимости всего запроса будет таким:
- Сообщение пользователя - строка "Привет! Расскажи... и т.д." — это 22 токена
- Максимальное количество токенов, которые потенциально может вернуть модель gpt-4o — 4 096 токена
Соответственно у пользователя на счету должно быть минимум: 22 / 1000 * 0,72 (цена за 1000 токенов запроса) + 4096 / 1000 * 2,88 (цена за токенов ответа) = 11,81232 (рублей)
Если средств на счету недостаточно для этого запроса — вернется ошибка.
Важно отметить, что после успешной обработки запроса ProxyAPI получает от провайдеров реальное потребление токенов. Стоимость запроса заново расчитывается, уже не приблизительно, а точно, и именно эта сумма снимается со счета пользователя.
У большинства провайдеров при отправке запроса можно указать максимальное количество токенов, которое пользователь разрешает модели использовать для ответа. Если такой параметр присутствует в запросе, именно он и будет использоваться для предварительного расчета, вместо максимально возможного количество токенов ответа для данной модели.
В примерах ниже максимальный ответ ограничен 300 токенами. То есть у пользователя для исполнения этого запроса на балансе должно быть достаточно средств для 22 токенов запроса и 300 токенов ответа.
Пример для OpenAI:
{ "model": "gpt-4o", "max_completion_tokens": 300, "messages": [ ...
Пример для Anthropic:
{ "model": "claude-3-7-sonnet-20250219", "max_tokens": 300 "messages": [ ...