Безкоштовний лічильник токенів для GPT-4, ChatGPT та AI-моделей
Точний лічильник токенів з використанням бібліотеки tiktoken від OpenAI. Підраховуйте токени для моделей GPT-4, ChatGPT та GPT-3. Керуйте витратами API та миттєво оптимізуйте AI-промпти.
Лічильник токенів
Невірний ввід
Документація
Що таке лічильник токенів?
Лічильник токенів визначає, на скільки токенів розбивається фрагмент тексту, коли його читає мовна модель зі штучним інтелектом. Токени — це невеликі частини тексту: цілі слова, частини слів або розділові знаки, які такі моделі, як GPT-4 і ChatGPT, обробляють замість необроблених літер. Цей інструмент використовує tiktoken — бібліотеку токенізації з відкритим кодом, опубліковану OpenAI, тому отримані значення відповідають результатам власних моделей і API OpenAI.
Як працює токенізація
Токенізатор не просто рахує слова. Він обробляє текст за допомогою алгоритму, відомого як кодування пар байтів (BPE). Алгоритм починає з окремих байтів тексту й послідовно об’єднує найпоширеніші сусідні пари на основі закономірностей, засвоєних із великого масиву тексту під час навчання. У результаті формується фіксований словник із десятків тисяч поширених фрагментів: цілих коротких слів, частих частин слів і окремих символів для рідкісних випадків.
Через це одне англійське слово часто перетворюється на один токен, але довші або незвичні слова можуть розділятися на два чи більше токенів. Пробіли зазвичай приєднуються до початку наступного токена, а не рахуються окремо, тоді як розділові знаки зазвичай є окремими токенами.
Кодування, які підтримує цей інструмент
Tiktoken пропонує кілька кодувань, кожне з яких пов’язане з певним сімейством моделей OpenAI. Цей інструмент підтримує три:
| Кодування | Використовується | Орієнтовний розмір словника |
|---|---|---|
cl100k_base | Моделі сімейства GPT-3,5 і GPT-4, ChatGPT | близько 100 000 токенів |
p50k_base | Пізніші моделі GPT-3 | близько 50 000 токенів |
r50k_base | Ранніші моделі GPT-3 і GPT-2 | близько 50 000 токенів |
За замовчуванням вибрано cl100k_base, оскільки це кодування охоплює сімейство моделей, яким сьогодні користується найбільше людей. Один і той самий текст може давати різну кількість токенів за кожного кодування, оскільки кожне з них навчалося на іншому тексті й по-різному об’єднує символи.
Як обчислити кількість токенів
Не існує простої арифметичної формули для перетворення кількості символів або слів у кількість токенів, оскільки об’єднання BPE залежать від конкретного тексту й навченого словника. Єдиний точний спосіб — пропустити текст через сам токенізатор:
- Виберіть кодування, яке відповідає цільовій моделі.
- Передайте текст токенізатору цього кодування.
- Порахуйте отриманий список ідентифікаторів токенів. Довжина цього списку і є кількістю токенів.
Для приблизної оцінки англійського тексту можна вважати, що один токен відповідає приблизно чотирьом символам або близько трьом чвертям слова. Це лише орієнтир. Числа, код, неанглійський текст і незвичне написання можуть істотно змінити співвідношення.
Приклад обчислення
Розгляньмо речення:
"Токенізація розбиває текст на частини."
За кодування cl100k_base tiktoken розбиває його на 7 токенів:
Token, ization, splits, text, into, pieces, .
Зверніть увагу: слово "Tokenization" саме розділяється на два токени — "Token" та "ization", тоді як усі інші слова залишаються цілими. Кінцева крапка є окремим токеном. Саме тому речення з 37 символів і 5 слів дає 7 токенів, а не 6.
Чому важлива кількість токенів
Постачальники ШІ стягують плату за використання API за кількістю токенів, враховуючи і надісланий текст, і згенерований у відповідь текст, тому кількість токенів дає змогу оцінити вартість до надсилання запиту. Кожна модель також має максимальну довжину контексту — обмеження на загальну кількість токенів, які можуть міститися в одному запиті та відповіді на нього. Це обмеження залежить від моделі й змінюється з виходом нових версій, тому його краще перевіряти в актуальній документації для потрібної моделі, а не покладатися на пам’ять.
Поширені запитання
Що таке токен у мовних моделях ШІ? Токен — це частина тексту, яку мовна модель читає як один елемент. Це може бути ціле коротке слово, частина довшого слова, розділовий знак або пробіл, приєднаний до наступного слова.
Чому різні кодування дають різну кількість токенів для одного й того самого тексту? Кожне кодування навчалося на власній вибірці тексту й формувало власний словник поширених фрагментів. Слово, достатньо поширене для представлення одним токеном в одному словнику, може бути відсутнім в іншому, тому там воно розділяється інакше.
Чи враховуються розділові знаки як токени? Так. Розділові знаки зазвичай рахуються як окремі токени або іноді об’єднуються із сусіднім символом — залежно від того, наскільки часто таке поєднання траплялося під час навчання токенізатора.
Чи є токен тим самим, що й слово? Ні. Короткі поширені слова зазвичай відповідають одному токену кожне. Довші або менш поширені слова, а також більшість слів іншими мовами, крім англійської, часто розбиваються на два чи більше токенів.
Наскільки точний цей інструмент? Він рахує токени за допомогою власної бібліотеки tiktoken OpenAI, використовуючи ту саму логіку кодування, яку OpenAI застосовує всередині, тому результат відповідає тому, що повернув би виклик API OpenAI для такого самого тексту й кодування.
Чи може цей інструмент рахувати токени для моделей не від OpenAI? Він використовує кодування tiktoken, створені для моделей OpenAI. Інші постачальники, зокрема Anthropic або Google, використовують власні токенізатори, які можуть давати іншу кількість токенів для того самого тексту.
Джерела
- OpenAI. "tiktoken." GitHub, https://github.com/openai/tiktoken.
- Sennrich, Rico та ін. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508,07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. та ін. "Language Models are Few-Shot Learners." arXiv:2005,14165, 2020, http://arxiv.org/abs/2005.14165.