Что такое токены?
Токен — это единица текста, которую модель обрабатывает за один шаг. Приблизительно:
- 1 токен ≈ 4 символа английского текста
- 1 токен ≈ 2-3 символа русского текста (из-за UTF-8 кодирования)
- 100 токенов ≈ 75 слов на английском
- 100 токенов ≈ 40-50 слов на русском
🔑 Важно: Русский текст потребляет в 1.5-2 раза больше токенов, чем аналогичный английский. Это напрямую влияет на стоимость.
Как работает ценообразование
Почти все модели тарифицируются отдельно по входным и выходным токенам:
Стоимость = (входные_токены / 1_000_000 × цена_входа)
+ (выходные_токены / 1_000_000 × цена_выхода)
Пример для Claude Sonnet 4.6:
- Вход: $3 / 1M токенов
- Выход: $15 / 1M токенов
Если вы отправили 1000 токенов и получили 500 в ответ:
Стоимость = (1000 / 1_000_000 × $3) + (500 / 1_000_000 × $15)
= $0.003 + $0.0075 = $0.0105
Подсчёт токенов заранее
import tiktoken # для OpenAI-совместимых моделей
def count_tokens(text: str, model: str = "gpt-4o") -> int:
enc = tiktoken.encoding_for_model(model)
return len(enc.encode(text))
# Или через API
response = client.chat.completions.create(...)
print(f"Использовано токенов: {response.usage.total_tokens}")
print(f" Вход: {response.usage.prompt_tokens}")
print(f" Выход: {response.usage.completion_tokens}")
Стратегии оптимизации затрат
1. Кэширование промптов
Если системный промпт одинаковый во всех запросах, некоторые провайдеры поддерживают кэширование (prompt caching). Claude снижает стоимость кэшированных токенов на 90%.
2. Выбор модели по задаче
Не все задачи требуют самой умной модели:
| Задача | Рекомендуемая модель | Причина |
|---|---|---|
| Классификация | GPT-4o-mini | Дёшево и быстро |
| Написание кода | Claude Sonnet 4.6 | Высокое качество |
| Суммаризация | Llama 3.3 70B | Баланс цена/качество |
| Генерация текста | Gemini Flash | Высокая скорость |
3. Управление длиной ответа
# Ограничьте длину ответа если она предсказуема
response = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[{"role": "user", "content": "Классифицируй: позитив, негатив или нейтрально. Текст: 'Отличный продукт!'"}],
max_tokens=10 # ответ будет 'позитив' — зачем платить за больше?
)
4. Батчинг запросов
Вместо 100 отдельных запросов отправьте один с 100 элементами:
items = ["текст1", "текст2", ..., "текст100"]
batch_prompt = "\n".join([f"{i+1}. {item}" for i, item in enumerate(items)])
# Экономия на накладных расходах системного промпта × 100
Мониторинг расходов
В личном кабинете Polza.AI доступна статистика по токенам и расходам с разбивкой по моделям. Рекомендуем настроить уведомления при превышении дневного бюджета.