Что такое токенизация
Токенизация — процесс разбиения текста на токены перед обработкой языковой моделью. Токены — это слова, части слов или отдельные символы. Зачем:
- Стандартизация: текст превращается в понятную модели последовательность токенов.
- Оптимизация: уменьшает объём данных для обработки.
- Гибкость: работа с разными языками, опечатками, слитными словами.
Методы токенизации
| Метод | Пример «Я изучаю искусственный интеллект.» | Минус / плюс |
|---|---|---|
| По словам | ["Я", "изучаю", "искусственный", "интеллект", "."] | − незнакомые слова — проблема |
| По символам | ["Я"," ","и","з","у","ч","а","ю", …] | − длинные последовательности |
| По подсловам (GPT, BERT, Gemini) | ["Я","изуч","аю","искусствен","ный","интеллект","."] | + обработка редких слов разбиением |
Современные модели используют subword-токенизацию (например, BPE — Byte-Pair Encoding). Это компромисс: словарь компактный, а редкие/незнакомые слова собираются из кусочков.
Как модель использует токены
Текст → токены (разбиение) → векторы (числа) → модель предсказывает следующие токены → токены → текст (обратно).
Лимиты на количество токенов
У каждой модели есть окно контекста — максимум токенов, который она обрабатывает за раз (вход + выход вместе).
| Модель | Контекст (токены) |
|---|---|
| GPT-3.5 Turbo | 4 096 |
| GPT-4 (8K / 32K) | 8 192 / 32 768 |
| OpenAI o1-preview / o1-mini | 128 000 |
| Gemini 1.5 Pro | до 2 000 000 |
| DeepSeek V3 | 128 000 |
Пример: лимит 8 192, запрос занял 6 000 токенов → на ответ остаётся 2 192.
Как экономить токены
- Сокращайте запрос, убирайте «воду» и стоп-слова («очень», «в общем»).
- Сжатые формулировки: «Дай 3 факта про ИИ» вместо длинной фразы.
- Не повторяйте контекст в длинных диалогах без необходимости.
Работа с API LLM
API (Application Programming Interface) — способ связи программ между собой. Вместо запуска модели локально вы отправляете запрос на сервер провайдера и получаете ответ.
Безопасное хранение API-ключей
Ключ — это доступ к вашему платному аккаунту. Утечка = чужие расходы.
- Никогда не хардкодьте ключ в коде (
api_key = "AIza..."). - Храните в переменных окружения:
os.getenv("GEMINI_API_KEY"). - Удобно — через
.envфайл +python-dotenv, и обязательно.envв.gitignore.
.env (добавьте в .gitignore), используйте отдельные ключи для dev/prod, ограничивайте ключ по квоте/доменам в консоли провайдера, в проде берите секреты из секрет-менеджера (а не из файла).