Прия запускает промпт по истории про табели ENGAGE и получает одиннадцать тест-кейсов. Маркус запускает тот же промпт, на той же модели, в тот же день — и получает девять: два, которых у неё не было, и без трёх её кейсов. Ни один из них ничего не менял.

Описание
Two QA engineers sit at one table with a single teal laptop between them. Priya, on the left, holds a printout so long that it spills across the table; Marcus, on the right, holds a single half-page. They look at each other with raised eyebrows and a half-smile — puzzled, not alarmed. The picture shows that one prompt, sent twice to one model, produced two different test suites. It does not show which suite is correct: neither length is evidence of quality, and both need review.
В тестовом инструменте это дефект. Здесь это специфицированное поведение, и тестировщик, который этого не знает, потратит неделю на то, чтобы завести баг на модель.
Почему результат «плывёт»
Языковая модель не извлекает готовый ответ. Она раз за разом предсказывает следующий токен по распределению вероятностей — и затем сэмплирует из этого распределения, а не всегда берёт самый вероятный токен. Два запуска проходят двумя разными путями по одним и тем же вероятностям, и как только они разошлись на одном токене, каждый следующий токен предсказывается из другой истории.
Описание
A left-to-right pipeline. The prompt is split into tokens, tokens become embedding vectors, the transformer relates every token to every other one, and the result is a probability distribution over the next token. The highlighted step is sampling, where one token is picked from that distribution. The picked token is appended to the output and the whole loop runs again for the next token. The sampling step is where two runs of the same prompt can part ways.
Всю работу здесь делает слово правдоподобный. Модель порождает текст, статистически вероятный с учётом её обучающих данных и вашего промпта. Вероятное — не то же самое, что верное, и ничто в механизме эту разницу не проверяет.
Снижение температуры сужает распределение, но не превращает модель в функцию. Даже при температуре 0 провайдеры не гарантируют одинаковый вывод от вызова к вызову — пакетная обработка и арифметика с плавающей точкой на общем оборудовании могут склонить почти равный выбор между двумя токенами в другую сторону. Подробно вы разберёте это в u15; пока планируйте вариативность, а не надейтесь её отключить.
Отсюда следствие, которым вы будете пользоваться весь курс: вывод LLM на тестовой задаче — это свидетельство, а не результат. Его проверяют так, как проверяли бы первый черновик коллеги, — не потому что модель джуниор, а потому что по одному выводу нельзя сказать, какие его части она знала, а какие сконструировала.
Что модель на самом деле читает
Ваш промпт попадает в модель не словами.
Токенизация разбивает текст на токены. Для обычной английской прозы рабочее
эмпирическое правило — около четырёх символов, или трёх четвертей слова, на
токен. Идентификаторы это правило нарушают: login, скорее всего, один токен,
ENGAGE_TIMESHEET_SUBMIT_BTN — скорее всего, шесть или больше. Тестовые
артефакты полны идентификаторов, стек-трейсов и GUID, поэтому стоят больше
токенов, чем подсказывает число слов.
Эмбеддинги превращают каждый токен в вектор, расположенный так, что токены,
которые употребляются похожим образом, оказываются рядом. Поэтому модель может
связать «элемент отправки» в вашем промпте с submitButton в вашем коде, хотя
ей не говорили, что это одно и то же, — и поэтому иногда она связывает две вещи,
которые лишь выглядят похоже.
Трансформер — архитектура, которая позволяет модели взвешивать, как каждый токен соотносится с каждым другим на протяжении длинного фрагмента. Благодаря ей модель может удерживать в уме всю пользовательскую историю целиком, а не читать её по строке.
Окно и то, что происходит на его границе
Контекстное окно — это сколько текста, измеренного в токенах, модель может учитывать одновременно: ваш промпт, ваши входные данные и её собственный ответ, всё вместе. В 2026 году окна от 128 000 до 1 000 000 токенов — обычное дело. Звучит как безлимит, пока не посчитаете:
- регрессионный набор из 400 кейсов по ~120 слов на кейс — это ~48 000 слов, примерно 64 000 токенов, ещё до того как идентификаторы поднимут цифру;
- полный лог ночного прогона 2891 — десятки мегабайт, миллионы токенов. Он не помещается никуда.
Что происходит при превышении, зависит от того, с каким слоем вы говорите:
- Напрямую через API слишком большой запрос отклоняется с ошибкой длины контекста. Громко, и обработать это легко.
- Через чат-инструмент, ассистента в IDE или агента окном управляет инструмент. Он может отбросить самые ранние реплики, обрезать вложение, пересказать его или извлечь только фрагменты, которые сочтёт релевантными, — а потом ответить ровно с той же уверенностью, как если бы прочитал всё.
Со вторым случаем тестировщики и сталкиваются, и он опасный: ничто в ответе не говорит, что часть ввода так и не была прочитана. Проверяйте это, как проверяли бы любое непроверенное утверждение: спросите о том, что, как вы знаете, находится в конце ввода, или сравните число падений, которое называет модель, с числом в файле.
Большое окно тоже не бесплатно. Больше токенов — больше вычислений, задержки и стоимости вызова; к этой нити вы вернётесь в u21, когда будете оценивать, сколько стоит запускать задачу каждую ночь. А к материалу в середине очень длинного контекста модели внимательны менее надёжно, чем к его началу и концу: критическое ограничение, зарытое на 80 000-м токене, слабее того же ограничения в самом верху.
Где находится GenAI
Вам встретятся четыре термина, и они не синонимы. Каждый — подмножество предыдущего по тому, как он учится.
Описание
Symbolic AI stands in its own box on the left: it encodes explicit rules, such as routing defects by keyword. To its right, a frame labelled machine learning contains classical ML — learning from data with features a human chose, such as a severity predictor — and a nested frame labelled deep learning, where the model learns its own features. Inside deep learning sit a screenshot classifier and, highlighted, generative AI, which produces new content such as test cases drafted by an LLM. Dashed arrows name the line crossed at each step: from rules to data, from chosen to learned features, from classifying to generating.
- Символьный ИИ кодирует знания как явные правила. Детерминированный, прозрачный для проверки, хрупкий.
- Классическое машинное обучение учится на данных, которые вы подготовили, и признаках, которые вы выбрали. Модели триажа дефектов обычно именно такие.
- Глубокое обучение само выучивает признаки на больших наборах данных.
- Генеративный ИИ использует глубокое обучение, чтобы порождать новый контент — текст, код, изображения, — моделируя закономерности того, на чём его обучали.
Почему GenAI пришёл в команды тестирования, а остальные в основном нет: он предобучен. Не нужно собирать датасет, и нет фазы обучения до того, как он принесёт пользу в понедельник. Именно это удобство и делает юниты о рисках достойными трети этого курса.
Ещё одно следствие «порождает, а не извлекает»: если инструмент явно не дал модели документ — через retrieval, вложение или коннектор, — модель ничего не искала. Фраза, которая звучит так, будто взята с вашей страницы в Confluence, порождена из закономерностей. Инструменты, которые действительно получают материал, вы встретите в u18 и u19.
Что вы теперь знаете
Недетерминированность заложена в конструкцию, и температура 0 сужает её, не устраняя. Токены — это то, что модель читает и за что вы платите, и идентификаторы дороги. На границе окна API падает громко, а инструмент — тихо. И «правдоподобно» — это настоящая цель модели; правильность — ваша.
