Счётчик токенов LLM
Считайте токены вашего текста по настоящей кодировке модели, прямо в браузере. Ничего никуда не загружается, и ни одно число здесь не оценка.
Ничего из того, что вы сюда вставите, не покидает этот браузер. Словарь выбранной кодировки один раз загружается с этого сайта, а сам подсчёт идёт в отдельном потоке этой вкладки — откройте свою панель сети и посмотрите: ни один запрос не несёт ваш текст.
Выберите модель, на которую вы действительно нацелены. Модель использует кодировку, несколько моделей делят одну, и подсчёт принадлежит кодировке, а не имени.
o200k_baseВставьте или наберите что-нибудь выше, и точное число токенов появится здесь.
Что такое токен на самом деле
Языковая модель не читает ваш текст ни как буквы, ни как слова. Прежде чем произойдёт что-либо ещё, текст режется на токены, а токен — это последовательность байтов, для которой у модели есть одно число. Некоторые токены и правда целые слова. Многие — это слово вместе с пробелом перед ним, поэтому одно и то же слово может стоить по-разному в зависимости от того, что идёт перед ним. Другие — суффикс, знак препинания, отступ или обрывок, который не является частью чего-либо, чему читатель дал бы имя. Разбиение выполняет таблица, построенная подсчётом того, какие последовательности чаще всего встречаются вместе в большом корпусе текста, и ничто в ней не задумывалось так, чтобы совпасть с тем, как кто-либо пишет.
- Токен — это последовательность байтов, а не последовательность символов. Различие звучит придиркой ровно до того мгновения, когда вы начнёте писать вне латинского алфавита, — и там в нём вся суть.
- Частое английское слово обычно один токен. Редкое слово, имя, артикул или опечатка — несколько, потому что у таблицы нет записи для него целиком и ей приходится собирать его из более коротких кусков.
- Пробельные символы не бесплатны. Отступы, пустые строки и пробелы внутри вставленной таблицы — всё это байты, и все они считаются. Промпт, который выглядит аккуратно, может стоить заметно дороже того же промпта, записанного плоско.
- Подсчёт зависит от точных байтов и больше ни от чего. Два текста, которые выглядят на экране одинаково, но различаются невидимым символом — неразрывным пробелом, меткой порядка байтов, другим видом апострофа, — это разные тексты, и они могут дать разные числа.
Именно поэтому эмпирическое правило, которое все повторяют, — поделить число символов на четыре — вовсе не правило. Это одно среднее по одному виду текста на одном языке, и ошибается оно в ту сторону, которая стоит денег, как только ваш текст оказывается кодом, таблицей, списком идентификаторов или написанным не по-английски. Число на этой странице — не то среднее. Это настоящее разбиение, сделанное настоящей таблицей, в вашем браузере.
Считает кодировка
Таблица вместе с правилами слияния называется кодировкой, и у неё есть собственное имя. Именно это имя и стоит запомнить, потому что подсчёт принадлежит ему, а не какой-либо модели: несколько моделей делят одну кодировку, а модель, которой на смену пришла новая, очень часто сохраняет кодировку предшественницы. Когда эта страница показывает вам число, она показывает и кодировку, под которой оно вычислено, — прямо рядом с выбранной вами моделью.
- Модель использует кодировку. Отображение здесь «многие к одному», поэтому знание того, какую кодировку использует ваша модель, говорит больше, чем знание самой модели.
- У кодировки есть собственное опубликованное имя, например o200k_base, и это имя означает одну и ту же таблицу везде, где вы его встретите. Подсчёт, взятый под какой-то кодировкой на этой странице, и подсчёт, взятый под той же кодировкой где угодно ещё, совпадают — и только это делает подсчёт с приложенной к нему кодировкой вообще проверяемым.
- Подсчёт осмыслен только вместе с его кодировкой. Число, приведённое с именем модели и без кодировки, — это число, которое вы не можете проверить, и именно его вам дают почти все страницы на эту тему.
Практическое следствие удивляет людей: переключение между двумя моделями, которые делят одну кодировку, не сдвинет число вовсе, и это признак того, что инструмент прав, а не сломан. Чтобы увидеть, как подсчёт меняется, менять надо кодировку, а не имя модели.
Почему текст не на английском стоит дороже
Вот та часть, о которой вам не расскажет ни одна страница, написанная с английского как с исходной точки, и ради неё эта страница и существует. Используемые кодировки работают на уровне байтов: они работают с байтами UTF-8 вашего текста, а не с его символами. Латинская буква — один байт. Буква кириллицы, иврита, арабского письма или греческого алфавита — два. Китайский, японский или корейский символ — три. Эмодзи — четыре, а флаг или соединённая семья — несколько таких подряд. Так что ещё до того, как открыта хоть какая-нибудь таблица, одно и то же предложение уже вдвое или втрое длиннее в байтах на одном языке, чем на другом.
- Таблицы строились подсчётом последовательностей в корпусе, который подавляюще английский, поэтому английские слова получили записи, а слова других языков часто их не получили. Язык, у частых слов которого нет собственной записи, выписывается обрывками.
- Это складывается с байтовой ценой, а не заменяет её. Слово, которое приходится собирать из трёх обрывков по два-три байта каждый, дорого дважды.
- Среди языков, отличных от английского, эффект неодинаков. Письменность, у которой в таблице есть собственные частые последовательности, справляется куда лучше той, что была представлена едва-едва, и единственный способ узнать, где находится ваша, — вставить собственный текст и посмотреть.
- Поэтому бюджет, посчитанный по-английски, не переносится. Если вам сказали, что контекстное окно вмещает столько-то страниц, эта цифра почти наверняка измерялась по-английски, и ваш язык до неё не дотянет.
Ничто из этого не дефект, который можно обойти, начав писать иначе, и это не повод писать по-английски. Это цена, которую вы должны иметь возможность увидеть, прежде чем на неё соглашаться, и в этом вся работа числа выше.
Символ может быть разрезан между токенами
Поскольку токен — это последовательность байтов, а символ вне латинского алфавита — несколько байтов, один символ регулярно разрезается пополам: его первые байты попадают в один токен, а последние — в следующий. Ни один из этих двух токенов сам по себе не текст. Печать их так, будто это текст, и порождает ту череду символов замены, которую вы могли видеть на других страницах, обещающих показать ваши токены, — и она разрушает ровно то понимание, которое картинка должна была дать.
Поэтому этот сайт рисует вместо них сегмент: кратчайшую последовательность подряд идущих токенов, байты которой складываются в целый текст. Обычно это один токен. Там, где символ был разрезан, — два или больше, до четырёх для символа длиной в четыре байта, разрезанного по байту, — и сегмент рисуется целиком, а число токенов внутри него написано рядом, так что вы видите разрез, а не теряете в нём символ. Подсчёт всё это никак не затрагивает. Разрез — факт о том, как были нарезаны байты, а итог остаётся итогом.
Как читать картинку собственного текста
Под подсчётом ваш текст нарисован второй раз — с видимыми границами токенов. Каждый блок на этой картинке — один сегмент, блоки идут в том порядке, в каком вы их написали, и ничего не выброшено и не сокращено, так что перед вами ваш собственный текст, а не список вырванных из него обрывков. Это вопрос, на который число ответить не может: не сколько стоит всё целиком, а какие его части дорогие.
- Блок без числа на нём — один токен, и это обычный случай. Он намеренно оставлен без пометки: цифра на каждом блоке была бы стеной цифр поверх ваших собственных предложений и похоронила бы те блоки, на которые стоит смотреть. Читается граница, а заливка — то, что заставляет один блок кончиться, а следующий начаться.
- Блок с маленьким числом — это сегмент больше чем из одного токена, и там символ был разрезан через границу. Символ по-прежнему на месте, нарисован целиком, и число токенов, которых он стоил, написано рядом, — так разрез показывается как цена, а не как порча вашего текста. Эмодзи или символ старинного письма может дойти до четырёх.
- Пробелы, переносы строк и отступы нарисованы так же, как всё остальное, потому что и считаются они так же. Череда блоков поверх того, что выглядит вообще ничем, — самая дешёвая для правки часть длинного промпта, и она невидима, пока вы не сможете её увидеть.
- Переключение модели перерисовывает картинку всякий раз, когда меняет кодировку, и оставляет её ровно такой же всякий раз, когда не меняет. Это тот же факт, который показывает число, но в виде, где видно, куда приходится разница, а не только то, что она есть.
Очень длинный текст рисуется лишь до некоторого предела, и там, где рисунок останавливается, страница сообщает, сколько блоков она нарисовала из скольких. Подсчёт так никогда не ограничен: он идёт по всему, что вы вставили, любой длины, и ничто в картинке до него не дотягивается. Предел существует потому, что браузер раскладывает блоки по одному, а целый документ дал бы их больше, чем какая-либо страница могла бы с пользой показать, — так что за этой чертой вы теряете картинку остального, но никогда ответ о нём.
Почему у некоторых моделей здесь нет числа
Не всякую модель можно сосчитать в вашем браузере, и честно здесь сказать, какую и почему, а не показывать вам угаданное число. Модель может быть на этой странице в одном из трёх состояний, и они различены на экране, а не слиты воедино.
- Её кодировка опубликована, и этот сайт её отдаёт. Вы получаете точный подсчёт, вычисленный здесь, по настоящей таблице.
- Её кодировка опубликована, и этот сайт её не отдаёт. Строка называет кодировку и говорит почему — чаще всего потому, что файл опубликован теми, кто не указывает лицензии, разрешающей кому-либо ещё переиздавать его. Таблица существует; отказ наш, и строка так и говорит.
- Её кодировку не публиковали вовсе. Отдавать нечего и отказывать не в чем, поэтому ни одна страница нигде не может сосчитать эту модель в вашем браузере, что бы она ни утверждала. Строка так и говорит и не несёт ни числа, ни оценки, ни диапазона.
Вот на этой последней строке большинство страниц на эту тему тихо жульничает: они прогоняют ваш текст через таблицу другой модели и подают результат так, будто это измерение. Это не просто неточно — это смещено, и смещено хуже всего ровно на том тексте, который труднее всего заложить в бюджет: на коде и на всём, что написано не по-английски. Точный подсчёт для такой модели даёт собственный сервис подсчёта токенов её создателя, а ему нужен ключ API, которого страница, работающая целиком в вашем браузере, держать не может и просить у вас не должна никогда. Обратиться к этому сервису — честный ответ, и именно его эта страница даёт вам вместо числа.
Как самому превратить подсчёт в стоимость
Эта страница не называет цен, и это намеренно: цена устаревает быстрее всего остального в этой теме, а устаревшая цена не оставляет страницу неполной — она оставляет её лживой. Что не устаревает, так это арифметика, вот она, и вы можете применить её к тому, что сегодня говорит собственная страница поставщика.
- Поставщики называют ставку за миллион токенов. Возьмите подсчёт с этой страницы, поделите на миллион и умножьте на эту ставку. Это стоимость одной отправки текста.
- Ввод и вывод тарифицируются отдельно, и вывод обычно дороже. Эта страница считает то, что отправляете вы. Она не может сосчитать ответ, которого ещё нет, поэтому любая посчитанная по ней стоимость — нижняя граница, а не итог.
- Разговор пересылает свою историю. Если ваш текст — системное сообщение, которое едет с каждым ходом, умножьте на ожидаемое число ходов, а потом ещё на число пользователей, прежде чем решать, стоит ли его сокращение половины рабочего дня.
Тот же подсчёт отвечает и на второй вопрос, с которым сюда приходят, — влезет ли текст. На него эта страница вам тоже не ответит, потому что контекстное окно — движущаяся величина, а обещание, что текст влезет, не может сдержать никакой инструмент, кроме самой модели. Что она вам даёт — это число, с которым можно сравнить любую величину, публикуемую поставщиком.
Ничто из вставленного не покидает ваш браузер
Подсчёт происходит на той странице, которую вы уже загрузили. Таблица выбранной вами кодировки один раз загружается с этого сайта — это загрузка файла, а не отправка вашего текста, — и всё дальнейшее работает на вашей собственной машине, в отдельном потоке, чтобы длинный документ не подвешивал вкладку. Откройте панель сети браузера и смотрите, пока набираете: наружу не уходит ни один запрос с тем, что вы написали.
Именно это позволяет спокойно вставить то, что вы и правда хотите сосчитать, — промпт клиента, внутреннее системное сообщение, кусок закрытого документа, — а не его вычищенную версию, которая всё равно дала бы другое число. Ничего и не сохраняется: перезагрузите страницу — и поле пусто, истории нет и удалять потом нечего.
Частые вопросы
- Токен — это то же самое, что слово?
- Нет, и рассуждать так — самый частый способ ошибиться в бюджете. Частое английское слово нередко один токен, но редкое слово, имя или опечатка — несколько, слово обычно несёт пробел перед собой внутри того же токена, а знаки препинания и отступы считаются наравне со всем прочим. Вне английского расхождение куда больше, потому что токен — это последовательность байтов, а один символ часто занимает два, три или четыре байта ещё до того, как открыта хоть какая-нибудь таблица.
- Можно просто поделить число символов на четыре?
- Только если вы пишете английскую прозу и не против ошибиться с большим запасом. Эта цифра — среднее по одному виду текста на одном языке. Исходный код, таблицы, списки идентификаторов и всё написанное другой письменностью ломают её, и ломают в ту сторону, которая стоит дороже, а не дешевле. Число на этой странице — настоящее разбиение, сделанное настоящей таблицей, так что незачем оценивать, когда можно измерить.
- Почему подсчёт не меняется, когда я переключаю модели?
- Потому что эти две модели используют одну кодировку, а считает именно кодировка. Это норма, а не сбой: более новая модель очень часто наследует таблицу предшественницы, и несколько моделей одного создателя делят одну. Кодировка показана рядом с подсчётом ровно поэтому — если при переключении имя не меняется, то и число не изменится.
- Почему мой язык стоит намного больше токенов, чем английский?
- По двум складывающимся причинам. Кодировки работают с байтами UTF-8, и буква вне латинского алфавита занимает два, три или четыре байта там, где латинская занимает один. А таблицы строились подсчётом последовательностей в корпусе, который был подавляюще английским, поэтому у английских слов есть собственные записи, а слова других языков часто собираются из обрывков. Слово из трёх обрывков по три байта дорого дважды. Вставьте свой текст выше — и увидите, где на самом деле находится ваш язык.
- Почему для одной из моделей в списке нет числа?
- Потому что её кодировку никогда не публиковали, так что нет таблицы, по которой эта страница — или любая другая, работающая в вашем браузере, — могла бы считать. Страница, показывающая вам число для такой модели, прогоняет ваш текст через таблицу другой модели и подаёт догадку как измерение. Эта догадка занижает, и занижает хуже всего на коде и на тексте не по-английски, то есть ровно там, где вам нужна была точность.
- Откуда же тогда берётся точный подсчёт для такой модели?
- Из собственного сервиса подсчёта токенов у создателя модели. Это единственный источник, который может быть точным, потому что таблица есть только у создателя. Ему нужен ключ API, которого страница, работающая целиком в вашем браузере, держать не может и просить у вас не должна, — так что самое честное, что может сделать эта страница, — сказать вам, куда идти, а не выдумать число. Если вы уже вызываете эту модель из своего кода, тот же ключ, которым вы пользуетесь там, ответит и на этот вопрос.
- Считаются ли пробелы, переносы строк и отступы?
- Да, все, и набраться их может больше, чем ожидают. Код с отступами, пустые строки между абзацами и набивка внутри вставленной таблицы — всё это байты, и у кодировок действительно есть токены сразу на несколько пробелов, так что цена — не один токен за пробел, но и не ноль. Если вы урезаете длинное системное сообщение, стоит измерить, что даст переформатирование, прежде чем начинать резать предложения.
- Отправляется ли мой текст на сервер?
- Нет. Таблица выбранной вами кодировки один раз загружается с этого сайта, а после этого каждый подсчёт вычисляется в вашем собственном браузере, в отдельном потоке. Откройте свою панель сети и смотрите, пока набираете: ни один запрос не несёт того, что вы написали. Ничего и не сохраняется, поэтому перезагрузка страницы оставляет пустое поле и удалять нечего.
- Скажет ли эта страница, сколько стоит мой промпт и влезет ли он?
- Ни то, ни другое, и оба отказа намеренны. Цена устарела бы уже через несколько месяцев, и ничто здесь не смогло бы это поймать, поэтому руководство учит арифметике, а ставку оставляет собственной странице поставщика. Контекстное окно — движущаяся величина того же рода, а влезет ли текст, зависит ещё и от ответа, которого эта страница не видит. Вы получаете то одно число, с которого начинаются оба вопроса, вычисленное точно.
Похожие инструменты
- Длина строки
Считает символы, слова и строки — с поддержкой Unicode.
- Тестер регулярных выражений
Проверка регулярных выражений — поиск, замена, разбиение.
- Сравнение текстов
Сравните два текста — каждая изменённая строка и слово.
- Инспектор символов Unicode
Узнайте, из каких именно символов состоит строка.