Токены в ChatGPT и OpenAI API: что это такое, как их посчитать и почему ответ обрывается

Что такое токены в ChatGPT и OpenAI API, сколько токенов в русском тексте, как посчитать их через Tokenizer и tiktoken, почему ответ обрывается и как экономить.
Парень в очках у ноутбука с цветными кубиками-токенами, над столом ряд таких же кубиков, робот рядом с весами

Если вы работали с ChatGPT или OpenAI API, вы наверняка встречали слово «токены»: в лимитах, в описании контекстного окна, в счетах за API. Токен — базовая единица, которой модель читает и пишет текст. От количества токенов зависит, поместится ли длинный документ в один запрос, почему ответ вдруг оборвался на полуслове и сколько стоит обращение к API.

Разберёмся без формул: что такое токен, почему русский текст «дороже» английского, как точно посчитать токены и что делать, когда их не хватает.

Что такое токен

Модель не видит текст как буквы или слова. Перед обработкой текст режется на фрагменты — токены. Токеном может быть целое короткое слово, часть длинного слова, знак препинания или пробел вместе со словом.

Справка OpenAI даёт ориентиры для английского текста:

  • 1 токен — примерно 4 символа;
  • 1 токен — примерно три четверти слова;
  • 100 токенов — примерно 75 слов.

Там же отмечено, что это оценка, а в других языках соотношение символов, слов и токенов другое. Именно это важно для нас.

Сколько токенов в русском тексте

Мы проверили несколько фраз через библиотеку tiktoken с кодировкой o200k_base, которую tiktoken применяет для моделей OpenAI начиная с GPT-4o:

ФразаСимволовТокенов
«Привет! Как дела?»176
«Hello! How are you?»196
«Нейросеть помогает решать задачи по математике.»4712
«The neural network helps solve math problems.»458

Короткие бытовые фразы кодируются почти одинаково, а на более сложной лексике русский текст того же смысла занимает больше токенов: длинные слова с приставками и окончаниями чаще разбиваются на несколько частей.

Пример на большом тексте

Для проверки мы прогнали через ту же кодировку черновик этой статьи: около 6 700 символов и 1 000 слов дали примерно 1 800 токенов. То есть в современной кодировке на один токен русского текста приходится около 3,7–3,9 символа — почти как в английском, — но на одно слово уходит в среднем около 1,8 токена против ориентировочных 1,3 для английского.

Отсюда удобная прикидка для русского текста:

  • страница A4 (около 1 800 знаков с пробелами) — порядка 450–500 токенов;
  • статья на 10 000 знаков — порядка 2 500–2 700 токенов;
  • книга на 400 000 знаков — около 100 000 токенов и больше.

Это ориентиры для планирования. Точные значения дают только подсчёт инструментом или поле usage в ответе API. В старых кодировках, которыми пользовались ранние модели, русский текст выходил заметно «дороже», поэтому старые советы из интернета часто завышают оценку.

Как посчитать токены

Без программирования

У OpenAI есть веб-инструмент Tokenizer: вставляете текст — видите число токенов и то, как текст разбит на части. Удобно, чтобы быстро понять, поместится ли документ в запрос.

В Python через tiktoken

Для подсчёта в программе OpenAI рекомендует библиотеку tiktoken. Установка — командой pip install tiktoken. Дальше достаточно трёх строк:

  • import tiktoken
  • enc = tiktoken.get_encoding("o200k_base")
  • print(len(enc.encode("ваш текст")))

Для конкретной модели кодировку можно получить через tiktoken.encoding_for_model(...). Учтите оговорку из справки: подсчёт «чистого» текста не равен полному числу токенов запроса — служебная структура сообщений, инструменты и вложения добавляют свои токены.

По факту в ответе API

Самый точный способ — посмотреть поле usage в ответе. В Responses API там есть input_tokens, output_tokens и total_tokens, а также детали: сколько входных токенов взято из кэша (cached_tokens) и сколько ушло на рассуждения модели (reasoning_tokens).

Токены, контекст и лимиты: в чём разница

Здесь часто путаются, поэтому разведём понятия.

  • Контекстное окно — сколько токенов модель может учесть за один раз: ваш запрос, история диалога, файлы и её собственный ответ. У разных моделей оно разное, актуальные цифры — на странице модели в документации OpenAI.
  • Лимит на длину ответа — в API задаётся параметром max_output_tokens. Он ограничивает и видимый текст, и токены рассуждений.
  • Лимиты использования в ChatGPT — количество сообщений или квоты по тарифу. Это не то же самое, что токены, хотя длинные запросы расходуют ресурс быстрее. Подробнее о том, как устроены квоты, — в разборе лимитов ChatGPT для Free и Plus.

Почему ответ обрывается и что делать

Причина 1. Упёрлись в лимит ответа. В API это видно по ответу: статус incomplete, а в incomplete_details указана причина max_output_tokens. Решение — увеличить max_output_tokens или попросить модель отвечать частями.

Причина 2. Рассуждения съели бюджет. У моделей с рассуждениями часть выходных токенов уходит на «внутреннее мышление». Если лимит маленький, до видимого текста дело может не дойти. Оставляйте запас.

Причина 3. Переполнен контекст. В длинном чате ранние сообщения перестают учитываться полностью, и модель «забывает» условия. Начните новый чат с кратким резюме прошлого или вынесите постоянные требования в инструкции.

В интерфейсе ChatGPT часто достаточно написать «продолжи» — модель допишет ответ с места остановки.

Как экономить токены

  1. Убирайте лишнее из входа. Не вставляйте весь документ, если вопрос касается одного раздела.
  2. Просите формат заранее. «Ответь списком из 5 пунктов» короче, чем «расскажи подробно».
  3. Не повторяйте инструкции в каждом сообщении — используйте системные или пользовательские инструкции.
  4. Повторяющееся начало промпта ставьте первым. Одинаковый префикс запросов API может браться из кэша — это видно по cached_tokens.
  5. Для больших объёмов делите работу на части и собирайте итог отдельным запросом.

О том, как вариативность ответа зависит от температуры и других настроек генерации, мы писали в материале о настройке температуры в веб-лабораториях ИИ. А если вы работаете с действительно большими документами, посмотрите, как с этим справляются модели с очень длинным контекстом, — например, в обзоре MiniMax M3 с окном в 1 млн токенов.

Частые вопросы

Пробел и знаки препинания — тоже токены?

Да. Пробел обычно «прилипает» к следующему слову, а знаки препинания часто становятся отдельными токенами.

Один и тот же текст всегда даёт одно число токенов?

Для одной кодировки — да. В разных кодировках (у старых и новых моделей) число может отличаться.

Нужно ли считать токены обычному пользователю ChatGPT?

Чаще всего нет. Но понимание помогает: если модель «забыла» начало длинного разговора или оборвала ответ, причина почти всегда в токенах.

Как токены связаны с ценой API?

Оплата API считается за входные и выходные токены, цены различаются по моделям и указаны на официальной странице цен OpenAI. Кэшированные входные токены обычно стоят дешевле.

Где найти другие ИИ-сервисы?

В нашем каталоге нейросетей собраны сервисы для текста, изображений, видео и кода.

Токены — это «валюта» языковых моделей. Достаточно один раз разобраться, как они считаются, чтобы перестать удивляться оборванным ответам и точнее планировать работу с длинными текстами и API.

Like this post? Please share to your friends:
Open Ai Chat