Большие языковые модели и промпт-инжиниринг: Полное руководство
На основе материалов каналов о LLM-архитектуре и промпт-инжиниринге. Документ написан простым языком с примерами для каждой концепции.
Часть 1. Что такое большая языковая модель (LLM)
1.1. Одна задача — предсказание следующего слова
Все современные LLM — GPT-5, Claude, Llama, Gemini — делают ровно одну вещь: предсказывают следующее слово (точнее, токен).
Это проще понять на примере автодополнения на телефоне. Когда ты набираешь «Доброе утро, как», клавиатура предлагает три варианта: «дела», «ты», «поживаешь». Она выбирает из трёх слов, опираясь на пару предыдущих.
LLM делает то же самое, но в другом масштабе:
- Клавиатура телефона: ~3 варианта, контекст в 2–3 слова.
- LLM: ~50 000+ вариантов (токенов), контекст в тысячи слов.
Пример работы модели:
Дано предложение: Кошка сидела на
Модель вычисляет вероятность для каждого из 50 000 возможных следующих токенов:
| Токен | Вероятность |
|---|---|
| коврике | 18% |
| полу | 12% |
| столе | 9% |
| земле | 8% |
| диване | 6% |
| ... | ... |
Модель выбирает наиболее вероятный — «коврике» — и добавляет его к предложению. Теперь предложение стало Кошка сидела на коврике. И процесс повторяется: модель снова предсказывает следующий токен, потом ещё, и так до конца ответа.
Именно поэтому ChatGPT выдаёт ответ слово за словом — он буквально вычисляет по одному токену за раз.
Важно понимать: модель не «думает» о кошках и ковриках. Она не понимает смысл. Она вычисляет наиболее вероятное продолжение текста, основываясь на паттернах из триллионов слов, на которых была обучена. По сути, это автодополнение, масштабированное до размеров интернета.
1.2. Анатомия модели: путь от слова до предсказания
Разберём шаг за шагом, как модель обрабатывает текст. В качестве примера возьмём GPT-2 Small.
Шаг 1. Токенизация
Входное предложение The cat sat on the разбивается на токены — это кусочки слов из словаря модели. Каждому токену присваивается числовой ID:
| Слово | Токен ID |
|---|---|
| The | 464 |
| cat | 3797 |
| sat | 3332 |
| on | 319 |
| the | 262 |
Что такое токен? Токен — это не всегда слово целиком. Длинные или редкие слова разбиваются на части. Например, слово «programming» может стать двумя токенами: «program» + «ming». Типичная модель имеет словарь из ~50 000 токенов.
Шаг 2. Embedding (векторное представление)
Каждый токен «ищет» свою строку в гигантской таблице — embedding matrix (матрице эмбеддингов). Эта таблица имеет размер:
- 50 257 строк — по одной на каждый токен в словаре.
- 768 столбцов — каждая строка это вектор из 768 чисел.
Что значат эти 768 чисел? Представь, что каждое число — это координата в 768-мерном пространстве. Слова с похожим значением оказываются «рядом» в этом пространстве. Например, вектора слов «кот» и «котёнок» будут ближе друг к другу, чем вектора «кот» и «самолёт».
Упрощённая аналогия в 2D:
В реальности вместо 2 измерений — 768, и каждое «кодирует» какой-то аспект значения слова (не всегда интерпретируемый человеком).
После этого шага наши 5 токенов превращаются в матрицу размером 5 × 768.
Шаг 3. Positional Embeddings (позиционные эмбеддинги)
Проблема: матрица эмбеддингов знает, что за слово, но не знает, где оно стоит в предложении. «Кот сидел на коврике» и «Коврик сидел на коте» дали бы одинаковые эмбеддинги (просто в другом порядке строк).
Решение: к каждому вектору добавляется ещё один вектор, который кодирует позицию (первое слово, второе, третье...). Теперь модель знает и что за слово, и где оно стоит.
Шаг 4. Трансформерные блоки (12 штук)
Это сердце модели. Данные проходят через 12 одинаковых по структуре блоков, каждый из которых делает две вещи:
а) Multi-Head Attention (многоголовое внимание)
Каждый токен «решает», насколько сильно ему нужно обращать внимание на каждый другой токен. Но есть критическое правило — каузальная маска (causal masking): каждый токен видит только те токены, которые стоят до него.
Зачем маска? Если модель может «подсмотреть» следующее слово, ей не нужно его предсказывать. Маска заставляет модель «честно» предсказывать будущее, не заглядывая вперёд.
Визуально (✓ = видит, ✗ = не видит):
The cat sat on the
The [ ✓ ✗ ✗ ✗ ✗ ]
cat [ ✓ ✓ ✗ ✗ ✗ ]
sat [ ✓ ✓ ✓ ✗ ✗ ]
on [ ✓ ✓ ✓ ✓ ✗ ]
the [ ✓ ✓ ✓ ✓ ✓ ]
Последний токен «the» видит все предыдущие слова — именно он будет предсказывать следующее слово.
б) Feed-Forward Network (полносвязная сеть)
После attention каждый токен проходит через небольшую нейросеть, которая расширяет вектор с 768 до 3072 измерений (×4), применяет нелинейную функцию, и сжимает обратно до 768. Это позволяет модели «обдумать» информацию, полученную через attention.
в) Residual Connection (остаточное соединение)
Результат каждого шага прибавляется к входу, а не заменяет его. Это как конспект: вы не стираете оригинал, а дописываете заметки поверх. Без этого глубокие модели (много блоков) не смогли бы учиться — градиенты «затухали» бы.
Один такой блок (attention → feed-forward → residual) повторяется 12 раз в GPT-2 Small. Каждый блок имеет ту же структуру, но свои собственные обученные параметры (веса).
Шаг 5. Финальная проекция и softmax
На выходе из 12-го блока, у последнего токена (the) есть вектор размером 768. Этот вектор умножается на матрицу, которая проецирует его в 50 257 значений — по одному на каждый токен в словаре.
Softmax преобразует эти «сырые» значения (logits) в вероятности, которые в сумме дают 1.0:
Logits (сырые): [4.2, 3.5, 2.8, 2.4, ...]
↓ softmax
Вероятности: [0.18, 0.12, 0.09, 0.08, ...]
Токены: [mat, floor, table, ground, ...]
Как работает softmax — простое объяснение:
Softmax берёт каждое число, возводит e (≈2.718) в степень этого числа, потом делит на сумму всех таких значений.
Пример с тремя токенами и logits [2.0, 1.0, 0.1]:
e^2.0 = 7.39
e^1.0 = 2.72
e^0.1 = 1.11
Сумма = 11.22
Вероятности: 7.39/11.22 = 0.659 (65.9%)
2.72/11.22 = 0.242 (24.2%)
1.11/11.22 = 0.099 (9.9%)
Итого: 1.000 (100%)
Большие logits получают бо́льшую вероятность, а маленькие — почти нулевую. Это и есть итоговые «бары вероятностей», которые мы видели в начале.
1.3. Три семейства трансформеров
Оригинальный Transformer (2017) состоял из двух половин: encoder (кодировщик) и decoder (декодировщик). Из этой архитектуры выросли три семейства:
Encoder-only: BERT (2018)
- Каждый токен видит все другие токены (двунаправленное внимание).
- Вся таблица внимания «заполнена» — слово видит и прошлое, и будущее.
- Отлично подходит для задач понимания: классификация текста, поиск, определение тональности.
- Не может генерировать текст — он уже «видел» ответ.
Decoder-only: GPT (2018)
- Каузальная маска: каждый токен видит только предшествующие токены.
- Идеально для генерации: нельзя предсказать слово, если ты его уже видел.
- Именно эта архитектура используется в GPT-5, Claude, Llama, Gemini.
Encoder-Decoder: T5
- Использует обе половины.
- Практически не применяется в новых моделях.
Почему победил decoder-only?
- Эффективность инференса: При генерации текста ключевые (key/value) матрицы предыдущих токенов можно переиспользовать — не нужно пересчитывать для каждого нового токена.
- Естественный порядок: Промптинг и генерация идут слева направо — это естественно ложится на каузальную архитектуру.
- Масштаб компенсирует: При достаточном масштабе преимущество двунаправленного внимания BERT почти исчезает.
1.4. Три оси масштабирования
Распространённое заблуждение: «больше параметров = лучше модель». На самом деле, мощность LLM определяется тремя факторами одновременно:
| Ось | Что это | Аналогия |
|---|---|---|
| Параметры | Количество обучаемых чисел в модели | Размер мозга |
| Данные | Объём текста для обучения | Количество прочитанных книг |
| Compute | Вычислительная мощность при обучении | Время на учёбу |
История, которая это доказала:
В 2021 году DeepMind создала Gopher: 280 млрд параметров, обучена на 300 млрд токенов.
В 2022 они же создали Chinchilla: 70 млрд параметров (в 4 раза меньше!), но обучена на 1.4 трлн токенов (в 4.7 раза больше данных).
Результат: Chinchilla победила Gopher на каждом бенчмарке. Модель в 4 раза меньше, но обученная на значительно бо́льших данных, оказалась сильнее.
Эмпирическое правило: примерно 20 токенов обучающих данных на каждый параметр. Если у модели 10 млрд параметров, ей нужно ~200 млрд токенов данных. Меньше — модель «недоучена», сколько бы параметров у неё ни было.
Законы масштабирования (scaling laws):
Производительность модели улучшается по степенному закону от параметров, данных и compute. Что это значит?
Степенной закон — это зависимость вида y = x^a, где увеличение x в 10 раз даёт предсказуемое улучшение y. Эти законы настолько точны, что OpenAI предсказала производительность GPT-4, натренировав модели в 1000 раз меньше и экстраполировав кривую.
1.5. Эмерджентные способности: ступенчатый эффект масштаба
Масштабирование — это не просто «модель становится точнее в том, что умеет». На определённых порогах возникают качественно новые способности, которых не было вообще.
Ступени:
| Масштаб | Что умеет модель |
|---|---|
| Миллионы параметров | Базовая грамматика |
| ×10 | Связные абзацы |
| ×100 | Перевод |
| ~100 млрд+ | Новые способности, которых раньше не было: in-context learning, следование инструкциям, многошаговое рассуждение |
Самый яркий пример:
Вопрос: Сколько будет 47 × 83?
- GPT-2 (1.5 млрд параметров): выдаёт бессмысленный набор цифр.
- GPT-3 (175 млрд параметров): отвечает 3901 — правильно.
Та же архитектура, тот же принцип обучения, в 100 раз больше параметров — и арифметика «включается». Это называют эмерджентными способностями (emergent capabilities) — как вода, которая внезапно замерзает при 0°C. Нет постепенного перехода: при меньшем масштабе способности просто нет.
1.6. Реальный ландшафт моделей
| Модель | Год | Параметры | Ключевая способность |
|---|---|---|---|
| GPT-1 | 2018 | 117 млн | Дополнение предложений |
| GPT-2 | 2019 | 1.5 млрд | Связные абзацы |
| GPT-3 | 2020 | 175 млрд | In-context learning |
| GPT-4 | 2023 | ~1.76 трлн* | Mixture of Experts |
| GPT-5 | 2025 | Не раскрыто | Единая система с роутером: быстрые ответы или глубокое рассуждение |
*GPT-4 использует архитектуру Mixture of Experts (MoE) — не все параметры активны одновременно.
Физический масштаб: 175 млрд параметров GPT-3 в 16-битной точности занимают 350 ГБ памяти. Один GPU имеет ~80 ГБ. Нужно минимум 5 GPU только для того, чтобы модель поместилась.
1.7. Чатбот — это тонкий слой
Модель обучается в два этапа:
-
Pre-training (предобучение): Модель учится предсказывать следующий токен на огромных массивах текста — интернет, книги, Википедия, код. Это основной этап, требующий колоссальных вычислений.
-
Instruction tuning (настройка на инструкции): Гораздо меньший этап, где «сырой предсказатель» превращается в полезного ассистента, который отвечает на вопросы, следует инструкциям и ведёт диалог.
Чат-интерфейс, который вы видите в ChatGPT или Claude — это тонкий поведенческий слой поверх гигантского движка предсказания текста.
Часть 2. Промпт-инжиниринг: как управлять моделью
2.1. Каждый символ имеет значение
Промпт-инжиниринг — это не «придумать красивую формулировку». Это точная инженерная дисциплина, где каждый пробел, каждая запятая влияет на результат.
Поразительный пример:
Два промпта для одной и той же задачи классификации, на одной и той же модели. Единственное различие — пробел после двоеточия в формате ввода:
| Формат | Пример | Точность |
|---|---|---|
| А (с пробелом) | Label: positive | 100% |
| Б (без пробела) | Label:positive | 21.7% |
78 процентных пунктов потеряно из-за одного пробела.
Это не единичный случай. Исследователи протестировали 53 задачи на нескольких моделях:
- Медианный разброс точности от форматирования: 7.5 п.п.
- Смена метки с римской цифры «I» на букву «A»: минус 25.4 п.п.
- Смена регистра букв: минус 10 п.п.
- В 14.1% сравнений моделей лидер и аутсайдер менялись местами просто из-за формата промпта.
2.2. Библиотечная метафора: что промпт делает на самом деле
Представьте обучающие данные модели как огромную библиотеку с миллионами полок. На каждой полке — навык, который модель выучила во время pre-training.
Когда вы даёте модели промпт, вы не учите её чему-то новому. Вы даёте поисковый запрос библиотекарю, чтобы он нашёл нужную полку.
Zero-shot (без примеров): Вы говорите библиотекарю: «Найди что-нибудь про классификацию тональности.» Он смотрит вокруг, подсвечивает несколько возможных полок, но не уверен, какая именно нужна.
Few-shot (с примерами): Вы добавляете: «Вот пример положительного отзыва, вот отрицательный.» Луч сужается. Библиотекарь находит именно ту полку.
Ключевое понимание: Примеры в промпте — это не обучающие данные. Это поисковые запросы к знаниям, которые модель уже имеет.
2.3. От zero-shot к few-shot: практический пример
Задача: Классифицировать отзыв на фильм.
Отзыв: «Операторская работа потрясающая, но сюжет не имеет никакого смысла.»
Правильный ответ: mixed (смешанный) — есть и похвала, и критика.
Попытка 1: Zero-shot
Просто просим модель классифицировать без примеров:
Classify the sentiment: "The cinematography was breathtaking,
but the plot made no sense."
Ответ модели: positive ❌
Модель «зацепилась» за слово «breathtaking» и пропустила критику.
Попытка 2: Few-shot (с примерами)
Добавляем три примера в промпт:
"Amazing film. Loved every minute." → positive
"Terrible acting. Waste of time." → negative
"Great visuals, but weak storyline." → mixed
Now classify: "The cinematography was breathtaking,
but the plot made no sense."
Ответ модели: mixed ✓
Примеры помогли модели понять, что наличие «но» + критика = mixed.
Попытка 3: Instruction prompting (с инструкцией)
You are a film critic. Classify reviews as positive,
negative, or mixed. Consider both praise AND criticism.
Review: "The cinematography was breathtaking,
but the plot made no sense."
Ответ модели: mixed ✓ (стабильно при повторениях)
Реальные цифры из исследований (GPT-3):
| Метод | Точность на вопросах |
|---|---|
| Zero-shot | 81.5% |
| One-shot (+1 пример) | 84.0% |
| Few-shot | 85.0% |
На тривиа-вопросах прирост ещё больше: с 64.3% до 71.2%. Та же модель, те же веса — только другой промпт.
2.4. Эксперимент с рандомными метками: доказательство поисковой природы
Это один из самых контринтуитивных экспериментов в области промптинга.
Обычный few-shot с правильными метками:
"Amazing film. Loved every minute." → positive ✓ правильно
"Terrible acting. Waste of time." → negative ✓ правильно
"Great visuals, but weak storyline" → mixed ✓ правильно
Модель выдаёт правильный ответ. ✅
Теперь перемешаем метки (все неправильные!):
"Amazing film. Loved every minute." → negative ✗ неправильно!
"Terrible acting. Waste of time." → mixed ✗ неправильно!
"Great visuals, but weak storyline" → positive ✗ неправильно!
Если модель «учится» из примеров, то с неправильными метками она должна ошибаться. Но что происходит?
Модель всё равно отвечает правильно. ✅
Этот результат воспроизведён на 26 датасетах, на моделях от GPT-2 до GPT-3.
Что это значит?
Модель читает из промпта четыре сигнала:
| Сигнал | Что это | Влияет? |
|---|---|---|
| Распределение входов | Какой тип текста подаётся | ✅ Да |
| Пространство выходов | Какие метки возможны (positive/negative/mixed) | ✅ Да |
| Формат | Как структурирован промпт | ✅ Да |
| Маппинг вход→выход | Какому входу какая метка | ❌ Почти нет |
Модель использует первые три сигнала, чтобы распознать задачу — и активировать уже имеющийся навык. Конкретные маппинги между примерами и метками ей практически не нужны.
Именно поэтому это называется in-context learning — не потому что модель учится чему-то новому, а потому что она распознаёт, какой навык из pre-training активировать.
2.5. Стек промптинга: иерархия техник
Техники промптинга — это не отдельные инструменты, а слои, каждый из которых исправляет проблему предыдущего:
┌─────────────────────────────────────┐
│ 6. Self-Consistency (голосование) │ ← Устраняет случайные ошибки
├─────────────────────────────────────┤
│ 5. Chain of Thought (рассуждение) │ ← Решает сложные задачи
├─────────────────────────────────────┤
│ 4. Структура (теги, шаблоны) │ ← Контролирует формат вывода
├─────────────────────────────────────┤
│ 3. Инструкции (роль, ограничения) │ ← Задаёт контекст и правила
├─────────────────────────────────────┤
│ 2. Few-shot (примеры) │ ← Сужает «поиск» по навыкам
├─────────────────────────────────────┤
│ 1. Zero-shot (просто описание) │ ← Начальная точка
└─────────────────────────────────────┘
Начинай снизу. Добавляй слои только когда предыдущий не справляется.
2.6. Chain of Thought: учим модель рассуждать
Идея проста: вместо того чтобы просить модель сразу выдать ответ, попросите её рассуждать пошагово.
Без Chain of Thought:
Q: В магазине 23 яблока. Продали 8, потом завезли ещё 15. Сколько яблок?
A: 38 ❌
С Chain of Thought:
Q: В магазине 23 яблока. Продали 8, потом завезли ещё 15. Сколько яблок?
Давай рассуждать пошагово.
A: Начинаем с 23 яблок.
Продали 8: 23 - 8 = 15.
Завезли 15: 15 + 15 = 30.
Ответ: 30. ✅
Достаточно добавить фразу «Давай рассуждать пошагово» (или «Let's think step by step»), чтобы значительно повысить точность на математических и логических задачах.
2.7. Self-Consistency: голосование побеждает ошибки
Это один из самых элегантных приёмов. Вместо того чтобы спросить модель один раз и доверять ответу, мы спрашиваем несколько раз с повышенной температурой (чтобы пути рассуждения отличались) и берём ответ большинством голосов.
Пример: «В магазине 23 яблока. Продали 8, завезли 15. Сколько?»
| Попытка | Ход рассуждения | Ответ |
|---|---|---|
| 1 | 23 − 8 = 15, потом 15 + 15 = 30 | 30 |
| 2 | 23 + 15 = 38, потом 38 − 8 = 30 | 30 |
| 3 | 15 + 15 = 29 (ошибка!) | 29 |
| 4 | 23 − 8 + 15 = 30 | 30 |
| 5 | 23 − 8 = 15 + 15 = 30 | 30 |
Голосование: 30 — 4 раза, 29 — 1 раз. Побеждает 30.
Ошибка в попытке 3 «перебита» большинством. На математических бенчмарках self-consistency повышает точность на ~18%. Никакой новой модели не нужно — просто спроси несколько раз и посчитай голоса.
Что такое температура?
Температура — это параметр, который управляет «случайностью» выбора следующего токена:
- Температура = 0: Модель всегда выбирает самый вероятный токен. Ответы детерминированные, одинаковые каждый раз.
- Температура = 1: Модель выбирает пропорционально вероятностям. Больше разнообразия.
- Температура > 1: Распределение вероятностей «сглаживается», менее вероятные токены получают больше шансов.
Математически это работает так: перед softmax все logits делятся на температуру.
Logits: [4.0, 2.0, 1.0]
Температура 1: softmax([4.0, 2.0, 1.0]) = [0.84, 0.11, 0.04]
→ почти всегда первый вариант
Температура 2: softmax([2.0, 1.0, 0.5]) = [0.59, 0.24, 0.17]
→ больше разнообразия
Температура 0.5: softmax([8.0, 4.0, 2.0]) = [0.97, 0.03, 0.00]
→ почти всегда первый
Для self-consistency нужна повышенная температура (обычно ~0.7–1.0), чтобы модель шла разными путями рассуждения.
2.8. Системный промпт: скрытая программа
Когда вы открываете ChatGPT или Claude и пишете сообщение, вы видите простой чат. Но за каждым сообщением стоит системный промпт — массивный блок инструкций, который загружается до вашего первого сообщения.
- Системный промпт Claude: ~16 700 слов (длиннее большинства рассказов).
- Системный промпт OpenAI: ~2 200 слов.
Этот невидимый промпт определяет:
- Идентичность модели (кто она, как себя ведёт)
- Ограничения безопасности
- Доступные инструменты
- Правила поведения
Когда вы общаетесь с чатботом, вы взаимодействуете с результатом чужого промпт-инжиниринга.
Лучшие практики для системных промптов:
- Длинные справочные документы — в начало промпта, пользовательский запрос — в конец. Это даёт прирост качества до 30%.
- Используйте структурированные теги (XML, markdown) для организации.
- Давайте конкретные позитивные инструкции («делай так»), а не списки запретов («не делай этого»).
2.9. Разрушаем мифы
| Миф | Реальность |
|---|---|
| «Промптинг — это подбор слов» | Один пробел стоит 78 п.п. точности. Модели-лидеры меняются местами в 14% случаев из-за формата. Это точная инженерия. |
| «Модель учится из примеров» | Нет. Рандомные метки дают почти такой же результат. Модель распознаёт задачу, а не учит маппинги. |
| «Больше примеров = лучше» | Отдача резко падает после 3–5 разнообразных примеров. 3 хорошо подобранных примера часто лучше 20 случайных. |
Итого: ключевые концепции
LLM — это:
- Один блок трансформера (attention + feed-forward), повторённый N раз
- Единственная задача: предсказать следующий токен
- Масштаб создаёт качественно новые способности (эмерджентность)
- Три оси масштабирования: параметры × данные × compute
Промпт — это программа:
- Промпт — это программа, LLM — среда выполнения
- Примеры — поисковые запросы к знаниям модели, а не обучающие данные
- Техники складываются в стек: zero-shot → few-shot → instructions → structure → CoT → self-consistency
- Каждый символ форматирования — часть сигнала
Документ составлен на основе видеоматериалов с YouTube, дополнен пояснениями и примерами.