Модуль 01 — Как работают LLM
Время: 4 часа · Формат: теория 90 мин + практика 150 мин
Теория
1. Модель предсказывает текст
LLM — это функция next_token(контекст) → распределение вероятностей.
Генерация — выбор из этого распределения, токен за токеном.
Три следствия, которые надо держать в голове:
- Модель не «знает», она «продолжает». Правдоподобное ≠ истинное.
- Модель не имеет памяти между вызовами. Всё, что не попало в контекст, не существует.
- Модель не «понимает» ваш проект. Она видит только то, что вы дали в этом запросе.
2. Токены
Текст режется на токены — куски по 3–4 символа (для русского хуже, чем для английского).
"Привет, мир" → [При, вет, ",", мир]
"hello world" → [hello, world]
Практические следствия:
- Лимиты измеряются в токенах, а не в символах: 1 000 000 токенов ≈ 700–900 КБ кода.
- Русский текст дороже английского на 20–40%.
- Код на JSON/YAML «дороже» обычного кода из-за пунктуации.
Правило: если можно объяснить короче — объясните короче. Каждый лишний токен умножается на число шагов агентного цикла.
3. Контекстное окно
[системный промпт][инструкции][файлы][история][ваш вопрос]
└────────────────── всё это = контекст ──────────────────┘
Ключевое свойство — «lost in the middle»: информация в середине длинного контекста используется хуже, чем в начале и в конце.
Практика:
- Самые важные требования — в начале или в самом вопросе.
- Огромный файл целиком хуже, чем нужный фрагмент + ссылка на путь.
- Когда контекст заполняется, агент не «умнеет», он начинает путаться.
4. Сэмплинг и недетерминизм
У модели есть параметры генерации:
| Параметр | Смысл | Когда трогать |
|---|---|---|
temperature |
случайность выбора | код: низкая; брейншторм: выше |
top_p |
отсечение хвоста распределения | почти всегда по умолчанию |
max_tokens |
длина ответа | ограничивать, чтобы не жечь бюджет |
Важно: temperature: 0 не гарантирует идентичный результат. Батчинг, кэш,
версии роутинга и обновления модели меняют вывод. «Вчера работало» — нормальное состояние.
5. Reasoning-токены
У «думающих» моделей есть скрытая фаза рассуждения: модель генерирует цепочку мыслей до ответа. Это:
- дороже (reasoning-токены тарифицируются);
- медленнее;
- качественнее на задачах «подумать» (архитектура, отладка, математика);
- почти бесполезно на «переименуй переменную».
6. Галлюцинации
Галлюцинация — не баг, а следствие устройства: модель генерирует правдоподобное.
Особенно опасные зоны:
- API и версии библиотек — модель помнит старые сигнатуры и уверенно их пишет.
- Флаги CLI — легко выдумать флаг, которого нет.
- Числа и даты — выдумываются с той же уверенностью, что и факты.
- Ссылки — URL генерируются по шаблону и часто не существуют.
Мера борьбы одна: проверка внешним источником (компилятор, тест, документация, запуск).
7. Знания и дата отсечки
Модель обучена на данных до определённой даты. Всё, что появилось позже, она знает плохо или не знает вовсе — но всё равно ответит.
Практика: давайте актуальную документацию в контекст, а не надейтесь на память модели.
8. Почему модели «глупеют» в длинной сессии
Три причины:
- Контекст забит мусором от неудачных попыток.
- Ранние инструкции «размылись» среди тысяч токенов.
- Модель заякорилась на своём же ошибочном решении.
Лечение: новая сессия + точное описание того, что уже известно. Это не поражение, это нормальная гигиена.
Чек-лист понимания
- Почему
temperature: 0не даёт воспроизводимости? - Что такое «lost in the middle» и как это влияет на структуру вашего запроса?
- Почему галлюцинации нельзя «вылечить промптом»?
- В каких задачах reasoning-токены окупаются, а в каких — нет?
- Назовите три признака, что сессию пора начинать заново.
Практика
См. practice.md.