Перейти к содержанию

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

Что такое токен и как его считать?

Токен – это минимальная единица текста, которую ИИ-модель (например, YandexGPT) обрабатывает. Это может быть:
- Одно слово (например, "привет" = 1 токен)
- Часть слова (например, "подводный" → "под" + "вод" + "ный" = 3 токена)
- Символы пунктуации, цифры, эмодзи (каждый может считаться отдельно)

Как считать токены в популярных GPT чатах?

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

Рассмотрим основные алгоритмы, которые вам будут интересны и полезны при использовании приложения GPT24 в Битрикс24.

flowchart TD
    A[Привет, как дела?] --> B(SentencePiece-токенизатор)
    B --> C[Токены:]
    C --> D1[Привет]
    C --> D2[,]
    C --> D3[как]
    C --> D4[дела]
    C --> D5[?]

Пояснение:

  1. SentencePiece (модель YandexGPT) анализирует текст без предварительной очистки (учитывает пунктуацию, регистр и морфологию).
  2. Пример разбивки:
  3. "Привет" → 1 токен (частотное слово).
  4. "," → отдельный токен.
  5. "как" и "дела" → по 1 токену (короткие слова).
  6. "?" → отдельный токен.

Сравнение с BPE (например, в DeepSeek):

flowchart TD
    A[Текст: Подводный] --> B(BPE-токенизатор)
    B --> C["Токены:"]
    C --> D1[Под]
    C --> D2[вод]
    C --> D3[ный]

Отличие моделей:
- SentencePiece (YandexGPT) чаще сохраняет целые слова (если они есть в словаре),
- BPE (DeepSeek/GPT) агрессивнее дробит сложные слова.

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

1. BPE (Byte Pair Encoding)

  • Как работает:
    • Разбивает текст на часто встречающиеся подстроки (субтокены).
    • Например, слово "подводный""под" + "вод" + "ный".
  • Где используется:
    • OpenAI (GPT-3, GPT-4), DeepSeek, LLaMA, Falcon.

2. WordPiece (используется в BERT)

  • Как работает:
    • Похож на BPE, но выбирает символы, которые максимизируют вероятность данных.
    • Лучше работает с редкими словами.
  • Где используется:
    • Google BERT, большинство моделей от Google.

3. Unigram Language Model Tokenization

  • Как работает:
    • Оценивает вероятность каждого возможного разбиения и выбирает оптимальное.
    • Может удалять маловероятные токены.
  • Где используется:
    • SentencePiece (используется в ALBERT, T5).

4. SentencePiece (универсальный метод)

  • Как работает:
    • Поддерживает BPE и Unigram, работает напрямую с raw-текстом (без предварительной очистки).
    • Подходит для многоязычных моделей.
  • Где используется:
    • YandexLLM (YandexGPT), некоторые версии Mistral, Sber GigaChat.

5. Классическая токенизация (по словам/пробелам)

  • Как работает:
    • Разделяет текст по пробелам (простейший способ).
    • Плохо работает с агглютинативными языками (например, финский, турецкий).
  • Где используется:
    • Устаревшие NLP-модели (например, Word2Vec в базовой реализации).

Как происходит разделение текста на токены

1. Для русского и английского языка

  • В среднем 1 токен ≈ 1 слово (но длинные слова разбиваются).
  • Примеры:
  • "Привет, как дела?"5 токенов ("Привет", ",", "как", "дела", "?")
  • "Hello, how are you?"6 токенов ("Hello", ",", "how", "are", "you", "?")

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

3. Сколько токенов в одном запросе?

  • Зависит от длины текста. Примерные оценки:
  • Короткий запрос ("Напиши план статьи") → 3-5 токенов
  • Средний запрос ("Объясни, как работает ИИ в CRM") → 10-15 токенов
  • Длинный запрос (на 100+ слов) → 150+ токенов

4. Разница между русским и английским

  • Английский обычно более компактный (меньше токенов).
  • Русский может требовать на 10-30% больше токенов из-за морфологии.

Почему важно считать токены?

  • Лимиты моделей (например, DeepSeek может обрабатывать до 128K токенов).
  • Экономия бюджета (в платных API тарификация часто идёт за токены).
  • Оптимизация запросов (слишком длинные могут ухудшить ответ).