OpenAI
Для перекладу цієї сторінки виконано машинний переклад. Ви можете переглянути оригінальну статтю англійською.

Що таке токени і як їх рахувати?

Оновлено: 9 days ago

Що таке токени?

Токени — це будівельні блоки тексту, які обробляють моделі OpenAI. Вони можуть бути такими короткими, як один символ, або такими довгими, як ціле слово, залежно від мови та контексту. Пробіли, пунктуація та частини слів також впливають на кількість токенів. Так API внутрішньо сегментує ваш текст перед генеруванням відповіді.

Корисні практичні правила для англійської мови:

  • 1 токен ≈ 4 символи

  • 1 токен ≈ ¾ слова

  • 100 токенів ≈ 75 слів

  • 1–2 речення ≈ 30 токенів

  • 1 абзац ≈ 100 токенів

  • ~1 500 слів ≈ 2 048 токенів

Токенізація залежить від моделі та кодування. Використовуйте інструмент Tokenizer або tiktoken.encoding_for_model(model), щоб отримати точну кількість для вашої цільової моделі.

Приклади

Ось кілька реальних прикладів тексту з приблизною кількістю токенів:

  • Цитата Вейна Грецкі «Ви не влучаєте у 100% кидків, яких не робите» = 11 токенів

  • Хартія OpenAI = 476 токенів

  • Декларація незалежності США = 1 695 токенів

Як обчислюється кількість токенів

Коли ви надсилаєте текст до API:

  1. Текст розбивається на токени.

  2. Модель обробляє ці токени.

  3. Відповідь генерується як послідовність токенів, а потім перетворюється назад на текст.

Використання токенів відстежується в кількох категоріях:

  • Вхідні токени – токени у вашому запиті.

  • Вихідні токени – токени, згенеровані у відповіді.

  • Кешовані токени – повторно використані токени в історії розмови (часто тарифікуються за зниженою ставкою).

  • Токени міркування – у деяких просунутих моделях додаткові «кроки мислення» включаються внутрішньо перед створенням фінального результату.

Ці показники з’являються в метаданих відповіді API та використовуються для виставлення рахунків і відстеження використання.

Щоб докладніше дослідити токенізацію, скористайтеся нашим інтерактивним інструментом Tokenizer, який дає змогу обчислити кількість токенів і побачити, як текст розбивається на токени.

Або, якщо ви хочете токенізувати текст програмно, використовуйте Tiktoken — швидкий BPE-токенізатор, спеціально призначений для моделей OpenAI.

Обмеження токенів

Кожна модель має максимальний сукупний ліміт токенів (вхідні + вихідні). Поточні моделі великої місткості підтримують до сотень тисяч токенів у контексті, хоча практичні обмеження можуть відрізнятися залежно від версії моделі та вашого рівня використання.

Якщо ви перевищите ліміт, ви можете:

  • Скоротити або перефразувати запити.

  • Розбити великий текст на менші фрагменти.

  • Підсумувати або попередньо обробити вхідні дані перед надсиланням.

Ціни на токени

Використання API тарифікується за токен і залежить від моделі та від того, чи токени є вхідними, вихідними або кешованими. Актуальні тарифи дивіться на сторінці цін OpenAI. Деякі моделі міркування можуть внутрішньо використовувати більше токенів, але прагнуть підвищити ефективність, зменшуючи кількість токенів, потрібних для виконання завдання.

Дослідження токенів

API обробляє слова відповідно до їхнього контексту в даних корпусу. Моделі беруть запит, перетворюють вхідні дані на список токенів, обробляють запит і перетворюють передбачені токени назад на слова, які ми бачимо у відповіді.

Те, що нам може здаватися двома однаковими словами, може генеруватися як різні токени залежно від того, як вони структуровані в тексті. Розгляньте, як API генерує значення токенів для слова «red» залежно від його контексту в тексті:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

У першому прикладі вище токен «2266» для « red» містить пробіл перед словом (зверніть увагу: це приклади ідентифікаторів токенів лише для демонстрації).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

Токен «2296» для « Red» (із пробілом перед словом і великою початковою літерою) відрізняється від токена «2266» для « red» з малою літерою.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

Коли «Red» використовується на початку речення, згенерований токен не містить пробілу перед словом. Токен «7738» відрізняється від двох попередніх прикладів цього слова.

Спостереження:

Що ймовірніший/частіший токен, то менший номер токена йому призначається:

  • Токен, згенерований для крапки, однаковий («13») в усіх 3 реченнях. Це тому, що контекстуально крапка використовується досить подібно в усіх даних корпусу.

  • Токен, згенерований для «red», змінюється залежно від його розташування в реченні:

    • Мала літера в середині речення: « red» - (токен: «2266»)

    • Велика літера в середині речення: « Red» - (токен: «2297»)

    • Велика літера на початку речення: «Red» - (токен: «7738»)

Чи була ця стаття корисною?