К содержимому
L-SYSTEM

Тот же промпт — другой набор тестов

Превью-юнит: этот юнит открыт и без записи на курс. Остальные — после записи.

Занятие — на вашем языке: его ведёт ассистент. Материал: английский · Экзамен: английский, без перевода Как подключить ассистента

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

Priya and Marcus compare two printouts of different length produced by the same prompt
ИллюстрацияPriya and Marcus compare two printouts of different length produced by the same prompt
Описание

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.

В тестовом инструменте это дефект. Здесь это специфицированное поведение, и тестировщик, который этого не знает, потратит неделю на то, чтобы завести баг на модель.

Почему результат «плывёт»

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

prompt Your prompt (text) tok Tokenization text → tokens prompt->tok emb Embeddings tokens → vectors tok->emb tr Transformer weighs every token against every other emb->tr dist Probability distribution over the next token tr->dist samp Sampling pick one token dist->samp out Output so far samp->out out->tok append and repeat
ИллюстрацияHow a model produces text: tokenize, embed, transform, predict a distribution, sample one token, append, repeat
Описание

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

Вам встретятся четыре термина, и они не синонимы. Каждый — подмножество предыдущего по тому, как он учится.

cluster_ml Machine learning — learns from data cluster_dl Deep learning — learns its own features sym Symbolic AI explicit rules (defect routing by keyword) cml Classical ML human-chosen features (severity predictor) sym->cml rules → data dl Deep learning (screenshot classifier) cml->dl features → learned gen Generative AI produces new content (LLM drafting test cases) dl->gen classify → generate
ИллюстрацияThe AI spectrum: symbolic AI outside machine learning; classical ML, deep learning and generative AI nested inside it
Описание

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 падает громко, а инструмент — тихо. И «правдоподобно» — это настоящая цель модели; правильность — ваша.

Задания

Проверка здесь ничего не меняет: ответы начнут засчитываться после записи на курс.

  1. Два тестировщика с разницей в несколько минут отправляют одной и той же модели одинаковый промпт и получают разные наборы тест-кейсов. Что лучше всего это объясняет?

  2. Маркус ставит температуру 0 и пишет в тест-плане: «Вывод модели теперь детерминирован, поэтому одной проверки сгенерированного набора хватит для всех будущих запусков». Что здесь не так?

  3. На схеме цикла токенов: на каком шаге два запуска одного и того же промпта впервые могут разойтись?

  4. На открывающей иллюстрации распечатка Прии растекается по столу, а Маркус держит полстраницы. Какой вывод правильный для тест-лида?

  5. Что из этого, скорее всего, займёт больше всего токенов?

  6. Скрипт Тома отправляет весь лог ночного прогона модели напрямую через API провайдера. Лог больше контекстного окна модели. Что произойдёт?

  7. Прия вставляет тот же слишком большой лог в чат-ассистента. Он бегло отвечает списком падений. В чём настоящий риск?

  8. Лог ночного прогона длиной 47 минут не помещается в контекстное окно вашей модели, а вы работаете в чат-ассистенте. Опишите, как бы вы обнаружили, что часть лога не была прочитана, и что бы вы сделали вместо того, чтобы вставлять лог целиком.

    Это задание судит рубрика автора — её разбирает ассистент, а не сайт.

  9. В регрессионном наборе ENGAGE 400 тест-кейсов, в среднем около 120 слов каждый, со множеством идентификаторов элементов в шагах. Оцените его размер в токенах и скажите, можно ли отправить его одним вызовом модели с окном 128 000 токенов вместе с промптом на 2 000 токенов и запасом на ответ в 10 000 токенов. Покажите свои допущения.

    Это задание судит рубрика автора — её разбирает ассистент, а не сайт.

  10. Промпт Нади длиной 150 000 токенов, и ограничение «не выдумывай критерии приёмки» стоит в его середине. В чём риск?

  11. В обычном чате без вложений, без коннекторов и без поиска модель пишет: «Согласно вашей странице в Confluence, табель нужно сдать до пятницы 17:00». О чём это говорит?

  12. Отнесите каждую систему к нужной части спектра ИИ.

    1. Движок правил, который маршрутизирует дефекты по ключевым словам
    2. Модель, обученная на вашей размеченной истории дефектов предсказывать серьёзность по выбранным вами признакам
    3. Классификатор изображений, который сам выучивает признаки по скриншотам
    4. LLM, которая составляет тест-кейсы по пользовательской истории
  13. Дополните: трансформер порождает текст, который статистически , а это не то же самое, что верный.