← Вайбкодинг · Вайбкодинг с OpenCode EN FR Курс 30/70 →

Модуль 01 — Как работают LLM

Время: 4 часа · Формат: теория 90 мин + практика 150 мин


Теория

1. Модель предсказывает текст

LLM — это функция next_token(контекст) → распределение вероятностей. Генерация — выбор из этого распределения, токен за токеном.

Три следствия, которые надо держать в голове:

  1. Модель не «знает», она «продолжает». Правдоподобное ≠ истинное.
  2. Модель не имеет памяти между вызовами. Всё, что не попало в контекст, не существует.
  3. Модель не «понимает» ваш проект. Она видит только то, что вы дали в этом запросе.

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. Почему модели «глупеют» в длинной сессии

Три причины:

  1. Контекст забит мусором от неудачных попыток.
  2. Ранние инструкции «размылись» среди тысяч токенов.
  3. Модель заякорилась на своём же ошибочном решении.

Лечение: новая сессия + точное описание того, что уже известно. Это не поражение, это нормальная гигиена.


Чек-лист понимания

  1. Почему temperature: 0 не даёт воспроизводимости?
  2. Что такое «lost in the middle» и как это влияет на структуру вашего запроса?
  3. Почему галлюцинации нельзя «вылечить промптом»?
  4. В каких задачах reasoning-токены окупаются, а в каких — нет?
  5. Назовите три признака, что сессию пора начинать заново.

Практика

См. practice.md.