Как работают LLM: токены, контекст, генерация

Как работают LLM: токены, контекст, генерация

Чтобы писать хорошие промпты, нужно понимать, что происходит «под капотом» языковой модели. Когда ты набираешь текст и нажимаешь «Отправить», модель не «читает» и не «думает» как человек. Она выполняет серию математических операций, которые мы разберём на трёх ключевых понятиях: токены, контекст и процесс генерации.

Токены — атомы языка

Модель не работает с буквами или словами напрямую. Она разбивает текст на токены — минимальные смысловые единицы. Токеном может быть слово, часть слова, знак препинания или даже пробел.

Посмотри, как одна и та же фраза разбивается на токены:

Вход (текст): "Привет, как дела?"

Токенизация (примерная схема):

[Привет] [,] [ как] [ дела] [?]
   1       2      3       4     5   ← 5 токенов

Английский текст обычно даёт примерно 1 токен на 0.75 слова. Русский — ближе к 1 токену на 0.5–0.7 слова из-за более длинных слов и падежных окончаний.

Почему это важно для промпт-инженера?

  • У каждой модели есть лимит токенов (контекстное окно) — максимальное количество токенов, которое модель может «видеть» одновременно. Современные модели имеют окна от 4 000 до 200 000+ токенов.
  • Лимит действует на сумму входа (твой промпт) и выхода (ответ модели). Если ты отправил 3 500 токенов, а лимит — 4 096, модель сможет сгенерировать не больше 596 токенов ответа.
  • Длинные промпты «съедают» место для ответа. Если тебе нужен развёрнутый ответ, держи промпт компактным.

Контекст — что модель «видит»

Контекст модели — это весь текст, который попадает в контекстное окно. Модель не имеет памяти между разговорами (если только приложение не подставляет историю диалога в промпт за тебя). Каждый новый запрос модель обрабатывает с нуля.

Представь контекст как окно фиксированного размера, через которое модель «смотрит» на текст:

┌──────────────────────────────────────────────┐
│ КОНТЕКСТНОЕ ОКНО (например, 8 000 токенов)   │
│                                              │
│ [Системный промпт] [История диалога] [Твой запрос] │
│      500 токенов       2000 токенов     300 токенов │
│                                              │
│ Осталось для ответа: 8 000 - 2 800 = 5 200 токенов │
└──────────────────────────────────────────────┘

Что из этого следует для тебя:

  • Модель не помнит предыдущие разговоры. Если ты открыл новую вкладку или новый чат — модель начинает с чистого листа. Всё, что она «знает» в рамках текущего диалога — это текст, который приложение отправляет вместе с каждым новым сообщением.
  • Порядок текста в промпте важен. Модель часто лучше учитывает информацию из начала и конца промпта, чем из середины. Ключевые инструкции размещай ближе к началу или непосредственно перед данными.
  • Контекстное окно — это бюджет. Если ты даёшь модели большой документ на анализ, у тебя остаётся меньше места для инструкций и для самого ответа.

Процесс генерации — как модель «пишет»

Модель генерирует текст последовательно, токен за токеном. Она не пишет весь ответ сразу, а на каждом шаге выбирает следующий наиболее вероятный токен, учитывая всё, что уже есть в контексте.

Упрощённо процесс выглядит так:

Промпт: "Столица Франции —"

Шаг 1. Модель смотрит на контекст и вычисляет вероятности следующего токена:

"Париж"     → вероятность 92%
"Пари"      → вероятность 3%
"город"     → вероятность 1%
... другие варианты ...

Шаг 2. Модель выбирает токен "Париж" (самый вероятный).

Шаг 3. Теперь контекст: "Столица Франции — Париж". Модель вычисляет следующий токен:

"."         → вероятность 78%
","         → вероятность 8%
", а"       → вероятность 4%
... другие варианты ...

И так далее, пока модель не сгенерирует специальный токен «конец ответа» или не достигнет лимита.

Важный нюанс: модель не всегда выбирает самый вероятный токен. Параметр temperature (о котором мы поговорим в модуле 10) управляет «креативностью» — чем выше temperature, тем чаще модель выбирает менее вероятные варианты, делая текст разнообразнее, но и непредсказуемее.

Почему это знание меняет промпты

Теперь, понимая механику, ты можешь формулировать промпты точнее:

Знание о моделиКак применить в промпте
Модель генерирует токен за токеномПроси пошаговый вывод: «Сначала опиши подход, потом решение»
Модель лучше видит начало и конецКлючевые инструкции — в начало, данные — ближе к концу
Модель не помнит между диалогамиВ каждом промпте давай весь нужный контекст
Лимит токенов — общий на вход и выходДержи промпт компактным, если ждёшь длинный ответ

Практический пример: считаем токены

Давай посмотрим на конкретном примере, как длина промпта в токенах влияет на возможности ответа.

Вход (короткий промпт):

Переведи на английский: "Как дела?"

Этот промпт занимает примерно 15–20 токенов. При контекстном окне в 8 000 токенов модель может сгенерировать около 7 980 токенов ответа — огромный запас.

Вход (длинный промпт):

Я дам тебе статью на русском языке. Переведи её на английский,
сохраняя стиль и тон оригинала. Обрати внимание на терминологию:
если встречаешь специализированный термин, используй устоявшийся
английский эквивалент, а не дословный перевод.

СТАТЬЯ:
[далее 6 000 токенов текста статьи]

Теперь промпт занимает ~6 050 токенов, оставляя лишь ~1 950 на ответ. Если статья длинная, ответ может не поместиться — модель оборвёт перевод на середине.

Вывод: перед отправкой большого документа подумай: хватит ли оставшегося места для ответа? Для длинных текстов иногда лучше разбить их на части и обрабатывать по очереди.

Проверь себя

Ты отправляешь модели промпт из 6 000 токенов. Контекстное окно модели — 8 000 токенов. Сколько токенов осталось на ответ?

Ответ: примерно 2 000 токенов (8 000 − 6 000). Это около 1 500 слов русского текста — достаточно для короткой статьи, но не для развёрнутого отчёта.

Типичная ошибка: невидимая история

Ты работаешь в веб-интерфейсе, ведёшь долгий диалог с моделью — 20, 30, 50 сообщений. Кажется, что модель «помнит» всё. Но на самом деле приложение добавляет историю диалога в каждый новый запрос, и она съедает контекстное окно.

Длинная история может занимать 6 000–7 000 токенов. Когда ты дописываешь новый вопрос, на ответ остаётся всего 1 000 токенов. Модель начинает отвечать коротко, обрывать предложения или «забывать» инструкции, которые ты дал в начале.

Решение: если диалог стал длинным, а модель ведёт себя странно — начни новый чат и перенеси в него ключевые инструкции.

Итог

  • Токен — минимальная единица текста для модели. Русский текст занимает больше токенов на слово, чем английский.
  • Контекстное окно — это фиксированный бюджет токенов на промпт и ответ вместе. Длинный промпт оставляет меньше места для ответа.
  • Модель генерирует текст последовательно, токен за токеном, выбирая наиболее вероятное продолжение.
  • Модель не имеет памяти между разговорами — всё, что ей нужно знать, должно быть в промпте.

Что дальше

Мы разобрали, как модель работает внутри. Теперь посмотрим на разнообразие самих моделей: какие типы LLM существуют, чем они отличаются и как это влияет на написание промптов.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике