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

Розуміння та підрахунок токенів

Дізнайтеся, як вхідні, вихідні, кешовані токени й токени міркування впливають на використання API, ліміти моделей і витрати.

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

Огляд

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

Кількість токенів не дорівнює кількості слів. Той самий текст може мати різну кількість токенів залежно від моделі, її кодування та мови.

Як текст перетворюється на токени

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

  1. Текст розділяється на токени.

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

  3. Модель генерує вихідні токени. До них можуть належати отриманий вами текст, а для моделей міркування — також внутрішні токени міркування, які не відображаються в тексті відповіді.

Приблизні оцінки для англійського тексту

Ці оцінки допоможуть визначити обсяг англійського тексту:

  • 1 токен — це приблизно 4 символи.

  • 1 токен — це приблизно три чверті слова.

  • 100 токенів — це приблизно 75 слів.

Це приблизні оцінки, а не точні значення. Довжина речень і абзаців різниться, а в інших мовах співвідношення між символами, словами й токенами може бути іншим.

Урахування пробілів і регістру літер

Слово може розділятися на різні токени залежно від написання, регістру літер і навколишнього тексту.

Наприклад, red, Red і red — не ідентичний текст: в останньому прикладі є пробіл на початку. Кодування може представляти їх по-різному.

Ідентифікатори токенів також залежать від кодування. Не вважайте, що ідентифікатор токена з прикладу застосовний до кожної моделі.

Розрізнення вхідних і вихідних токенів

КатегоріяЩо описує
Вхідні токениТокени, передані моделі в запиті. Їх також називають токенами запиту.
Вихідні токениТокени, згенеровані моделлю. У Chat Completions їх називають токенами завершення.
Кешовані вхідні токениВхідні токени, повторно використані завдяки кешуванню промпту. Їхня ціна може відрізнятися від ціни некешованих вхідних токенів.
Токени міркуванняТокени, які модель міркування використовує внутрішньо перед створенням видимої відповіді.

Токени міркування не відображаються в тексті відповіді, але враховуються у використанні виводу й оплачуються як вихідні токени.

Тому коротка видима відповідь може використовувати більше токенів, ніж можна припустити за її відображеним текстом.

Підрахунок токенів перед надсиланням запиту

Підрахунок у звичайному тексті

Скористайтеся токенізатором, щоб побачити, як текст розділяється на токени.

Щоб програмно токенізувати звичайний текст, використовуйте tiktoken. Виберіть кодування для цільової моделі, наприклад за допомогою tiktoken.encoding_for_model(model).

Кількість токенів у звичайному тексті не обов’язково охоплює всі токени в запиті API. На повну кількість вхідних токенів можуть впливати структура повідомлень, інструменти, схеми, зображення та файли.

Підрахунок токенів у повних вхідних даних Responses

Для повних вхідних даних Responses API використовуйте API підрахунку вхідних токенів.

Він приймає формати вхідних даних Responses, зокрема повідомлення, зображення, файли, інструменти й розмови. Підрахунок охоплює токени форматування, які використовуються для структури запиту, зокрема ролей і меж повідомлень.

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

Перевірка фактичного використання токенів

Після надсилання запиту перегляньте відомості про його використання. Назви полів залежать від кінцевої точки:

  • Chat Completions повідомляє значення prompt_tokens, completion_tokens і total_tokens.

  • Responses повідомляє значення input_tokens, output_tokens і total_tokens.

Також можна переглянути активність за певний період на панелі використання. Інструкції, зокрема щодо використання потокового передавання, див. у статті «Перегляд використання API та витрат».

Дотримання лімітів моделі

Перегляньте в документації моделі її ліміт контексту й максимальний обсяг виводу. Ці ліміти можуть відрізнятися залежно від моделі.

Ліміт контексту обмежує кількість токенів, з якими модель може працювати в одному запиті. Моделі також мають ліміт виводу. Для моделей міркування залишайте місце і для токенів міркування, і для видимої відповіді.

Якщо вхідні дані завеликі, можна:

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

  • Видалити зайвий або повторюваний контекст.

  • Розділити великі вхідні дані на менші частини.

  • Узагальнити або попередньо обробити текст перед надсиланням.

Використовуйте налаштування кількості вихідних токенів, яке підтримують ваша кінцева точка й модель. Chat Completions використовує max_completion_tokens, а Responses — max_output_tokens.

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

Розуміння ціноутворення на токени

Якщо ціна API залежить від токенів, тариф визначається моделлю та категорією токенів. Ціни на вхідні, кешовані вхідні та вихідні токени можуть відрізнятися. Для інших можливостей API можуть застосовуватися інші одиниці тарифікації.

Актуальні тарифи наведено на сторінці цін на API.

Порівнюючи моделі, ураховуйте загальну кількість токенів і вартість виконання завдання. Нижча ціна за мільйон токенів не обов’язково означає меншу загальну вартість: моделі можуть по-різному токенізувати той самий текст і генерувати різні обсяги виводу або міркувань.

Тестуйте типові завдання, а не порівнюйте лише довжину видимої відповіді.

Урахування кількох завершень

Якщо кінцева точка й модель підтримують створення кількох завершень, ці додаткові завершення також використовують токени.

У Chat Completions значення n понад 1 створює кілька варіантів. Плата стягується за токени, згенеровані для всіх цих варіантів.

У застарілому Completions API параметр best_of може створювати варіанти, які повертаються не всі. Наприклад, best_of = 3 може згенерувати до 3 × max_tokens токенів завершення для всіх варіантів.

Ці параметри залежать від кінцевої точки. Не вважайте, що n або best_of підтримується іншим API чи моделлю.

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