AI не напишет за вас требования. Но он может сделать то, на что уходит 80% времени аналитика: прочитать 40 страниц переписки, выцепить из интервью реальные потребности, найти противоречия и разложить всё по шаблонам. Если вы до сих пор делаете это вручную — вы тратите свой самый дорогой ресурс на механическую работу.
В этой статье — не теория «AI изменит профессию», а конкретный pipeline: промпты, которые я использую в работе, и схема, по которой это собирается в рабочий процесс. Базовые понятия ФТ/НФТ и шаблоны User Story/Use Case предполагаем известными; если нужно освежить — вот разбор функциональных и нефункциональных требований с шаблонами и статья про User Story и Use Case. А теперь — к делу.
Почему LLM, а не «просто шаблон в Jira»
Проблема не в том, что аналитики ленятся писать требования. Проблема в объёме сырого материала, через который надо продраться. Часовая запись интервью со стейкхолдером — это 10–15 тысяч слов. Переписка в чате по фиче за две недели — ещё столько же. Плюс комментарии к задаче, плюс письма, плюс «а давайте ещё учтём вот это».
Прочитать всё это и вычленить именно требования, а не эмоции и не «было бы неплохо когда-нибудь» — работа на несколько часов. LLM делает её за минуты. И главное — не пропускает ничего. Человек после третьего абзаца переписки начинает читать по диагонали (я проверял на себе, да). Модель — нет.
Важно: LLM не заменяет аналитика. Она работает как стажёр-трудоголик, который идеально структурирует информацию, но не принимает решений. Решение — всегда за вами.
Pipeline: от сырого ввода до структурированных требований
Весь процесс укладывается в 6 шагов. Давайте посмотрим на схему целиком, а потом разберём каждый этап с промптами.
Диаграмма показывает сквозной конвейер: сырой материал (серый) попадает в предобработку (жёлтый), оттуда параллельно уходит на извлечение функциональных и нефункциональных требований (синие блоки). Оба потока сходятся в генерации User Story и Use Case (фиолетовый), затем проходят проверку на противоречия (жёлтый) и выходят готовым структурированным результатом (зелёный). Аналитик (фиолетовый, пунктирные связи) контролирует ключевые точки: направляет предобработку, уточняет промпты и принимает финальный результат.
Примечательно, что промпты не пишутся один раз и навсегда. Вы начинаете с базовой версии, прогоняете пару интервью, смотрите на выдачу, правите промпт — и к пятому-шестому разу он превращается в инструмент. Ниже — те промпты, которые у меня прижились.
Шаг 1. Предобработка: транскрибация и очистка
С аудио — проще простого. Whisper от OpenAI (или локальный faster-whisper) даёт транскрибацию за минуты. С текстовыми переписками сложнее: они полны «привет, как дела», эмодзи, обсуждения погоды и параллельных веток про баги двухлетней давности.
Промпт для очистки переписки:
Ты — системный аналитик. Ниже — фрагмент рабочей переписки командыпо продукту. Удали из него:1. Приветствия, прощания, small talk.2. Обсуждения, не относящиеся к требованиям (баги, DevOps, отпуска).3. Повторяющиеся сообщения (кто-то переспросил — оставь один, наиболее полный вариант).4. Эмодзи и реакции.
Оставь только содержательные высказывания о том, ЧТО система должнаделать, ДЛЯ КОГО и ПРИ КАКИХ УСЛОВИЯХ. Сохрани контекст: к каждомуоставленному сообщению добавь, от кого оно (роль: разработчик,продакт, заказчик, аналитик) и в какой ветке обсуждения прозвучало.
Выведи результат в виде структурированного текста с заголовкамипо темам обсуждения. Не добавляй ничего от себя.
[текст переписки]Шаг 2. Извлечение функциональных требований
После очистки у вас есть документ на 2–5 тысяч слов — уже без шума, но всё ещё не требования. Промпт, который превращает это в ФТ:
На основе текста ниже выдели все функциональные требования.Для каждого укажи:
1. Идентификатор (FR-001, FR-002, ...).2. Краткое название (до 10 слов).3. Полное описание: что система должна делать.4. Действующее лицо (Actor): кто инициирует это действие.5. Предусловие: что должно быть выполнено до начала.6. Основной поток: шаги по порядку.7. Альтернативные потоки: что если что-то пошло не так.8. Связанные требования: укажи ID других ФТ, на которые ссылается это требование.
Если в тексте недостаточно информации для какого-либо пункта —напиши «[ТРЕБУЕТ УТОЧНЕНИЯ]». Не выдумывай.
Текст для анализа:[очищенная переписка или транскрибация интервью]Модель выдаёт таблицу. Её можно сразу в Confluence или в виде JSON для дальнейшей обработки. Скажу по опыту: в 60% случаев часть полей будет с пометкой «требует уточнения». Это не баг — это фича. Теперь вы знаете, какие вопросы задать стейкхолдерам на следующей встрече. Раньше эти пробелы всплывали бы на этапе разработки, когда переделывать в 10 раз дороже.
Шаг 3. Извлечение нефункциональных требований
НФТ сложнее — они часто не формулируются явно. В переписке редко пишут «время отклика должно быть не более 200 мс». Зато пишут «клиенты жалуются, что форма тормозит» или «нам нужно, чтобы выдерживало пиковые нагрузки перед праздниками». LLM нужно явно попросить искать такие сигналы.
На основе текста ниже выдели все нефункциональные требования.Ищи не только явные формулировки (типа «должно работать быстро»),но и косвенные сигналы: жалобы на производительность, упоминанияобъёмов данных, требований к безопасности, интеграций, сроковхранения, доступности.
Для каждого НФТ укажи:
1. Идентификатор (NFR-001, NFR-002, ...).2. Категория: Производительность / Безопасность / Надёжность / Масштабируемость / Удобство использования / Совместимость / Регуляторные требования / Логирование и мониторинг.3. Описание: что именно требуется.4. Метрика (если применимо): конкретное измеримое значение. Например: «время ответа API ≤ 200 мс для 95-го перцентиля».5. Источник в тексте: процитируй фрагмент, из которого сделан вывод.6. Статус: Явное (прямо указано) / Косвенное (выведено из контекста) — [ТРЕБУЕТ ПОДТВЕРЖДЕНИЯ].
Не добавляй требования, не упомянутые в тексте. Там, где нетметрики — укажи «[ТРЕБУЕТ КОЛИЧЕСТВЕННОЙ ОЦЕНКИ]».
Текст для анализа:[очищенная переписка или транскрибация]Шаг 4. Генерация User Story и Use Case
Теперь у вас есть два списка — ФТ и НФТ. Самое время превратить функциональные требования в истории и сценарии. Это тот этап, где LLM особенно полезна: шаблонизация — её родная стихия.
У тебя есть список функциональных требований (ниже). Для каждогосгенерируй:
A) User Story по шаблону: Как <роль>, я хочу <действие>, чтобы <ценность>.
Роль бери из поля Actor. Ценность формулируй так, чтобы она отвечала на вопрос «зачем это пользователю», а не «что делает система».
B) Критерии приёмки (Acceptance Criteria) — 3–5 пунктов в формате Gherkin (Given/When/Then). Каждый критерий должен быть проверяемым: если тестировщик не может однозначно сказать «пройдено / не пройдено» — критерий плохой.
C) Для требований с пометкой «[ТРЕБУЕТ УТОЧНЕНИЯ]» — сформулируй конкретные вопросы стейкхолдеру. Не «уточнить детали», а «какой максимальный размер загружаемого файла?» или «должен ли повторный платёж для того же заказа блокироваться на уровне интерфейса или на уровне API?».
Список ФТ:[результат шага 2]Пара итераций — и у промпта появляется «характер»: он начинает формулировать ценность в стиле вашей команды, а не абстрактным канцеляритом. Это не silver bullet, но экономия часов five-six в неделю для аналитика — это реальные цифры, а не маркетинг.
Проверка требований на полноту и противоречия
Самый недооценённый этап. Когда у вас 40 требований, человеческий глаз перестаёт замечать, что FR-012 говорит «пользователь может редактировать заказ до оплаты», а FR-034 — «после нажатия “Оформить” изменения запрещены». Это не одно и то же. И такие конфликты живут в документах неделями, пока разработчик не споткнётся и не спросит на дейлике: «так можно редактировать или нельзя?»
Промпт для кросс-проверки:
Проверь список требований ниже на противоречия, дубликатыи пробелы. Для каждого найденного конфликта укажи:
1. Тип: Противоречие / Дубликат / Пропущенное требование.2. Идентификаторы затронутых требований.3. Суть проблемы (одно предложение).4. Варианты разрешения: минимум два варианта с аргументами за и против.
Дополнительно проверь:- Все ли роли (actors), упомянутые в переписке, фигурируют хотя бы в одном требовании?- Все ли интеграции упомянуты?- Нет ли требований без предусловий, где они объективно нужны?- Совпадают ли НФТ по безопасности с функциональными требованиями (например, если заявлена аутентификация — есть ли соответствующие ФТ)?
Список требований:[результаты шагов 2, 3 и 4]Здесь LLM выступает как ревьюер. Практика показывает: на 40–50 требований модель находит 2–4 конфликта, которые реально упустили. Это не магия — это просто алгоритмическая проверка, которую человеку делать скучно, и он её саботирует.
Что LLM делает плохо (и зачем всё равно нужен аналитик)
Справедливости ради — вот где модель спотыкается:
Приоритизация. LLM не знает, что для бизнеса важнее: интеграция с CRM (чтобы продажники не бунтовали) или экспорт в Excel (чтобы бухгалтерия не парализовала запуск). Приоритеты — это всегда компромисс между людьми, а не между данными. Модель может предложить варианты, но решение принимаете вы.
Доменный контекст. Если вы делаете продукт для страхования, а промпт не содержит страховой терминологии — модель выдаст требования в стиле e-commerce. Потому что e-commerce-примеров в её обучении больше. Выход — зашить глоссарий домена прямо в системный промпт.
Неявные знания. Требование «нужно учитывать сезонность» — модель распишет буквально: фильтр по датам, группировка по кварталам. Но она не знает, что в вашем бизнесе «сезон» стартует не 1-го числа, а в первый вторник ноября. Эти детали — только от вас.
Тон переписки. В чате поддержки пользователь пишет «у вас всё тормозит, я полчаса жду!!!». LLM честно извлечёт НФТ: «время отклика должно быть приемлемым». А на самом деле там проблема с конкретным отчётом на 200 тысяч строк. LLM нужно явно просить искать не только формулировки, но и эмоциональные триггеры в тексте — жалобы, капслок, множественные восклицательные знаки.
Таблица: что LLM делает за аналитика, а что — нет
| Задача | LLM справляется | Нужен аналитик |
|---|---|---|
| Выделение ФТ из переписки | Отлично: структурирует, не пропускает детали | Проверить, что ничего не потеряно и не домыслено |
| Выделение НФТ из косвенных сигналов | Хорошо: находит 70–80% скрытых требований | Добрать оставшиеся 20% через интервью |
| Генерация User Story по шаблону | Отлично: ровно по структуре, без канцелярита | Докрутить ценность — модель формулирует её общо |
| Критерии приёмки в Gherkin | Хорошо: Given/When/Then корректны | Убедиться, что они тестируемы не в теории, а в вашем CI |
| Поиск противоречий между требованиями | Отлично: находит 80%+ реальных конфликтов | Принять решение, какое из требований главнее |
| Приоритизация требований | Плохо: не знает бизнес-контекст | Полностью ответственность аналитика и продакта |
| Оценка трудозатрат | Неприменимо | Story points ставит команда, а не модель |
| Верификация НФТ-метрик | Частично: может подсказать типичные значения | Конкретные цифры — от архитектора и DevOps |
Это не серебряная пуля. LLM — инструмент, который снимает с аналитика механическую работу, но не снимает ответственность за результат.
Как это выглядит в реальном проекте: пример из e-commerce
Берём реальный кейс: интернет-магазин, задача — «добавить систему промокодов». Есть 15-минутное интервью с продакт-оунером, 3 страницы переписки в чате команды и письмо от маркетинга с пожеланиями.
Транскрибируем → очищаем → прогоняем через промпты. На выходе получаем:
- 12 функциональных требований — от базового «применить промокод к корзине» до специфического «запретить комбинацию промокода и товара со скидкой».
- 5 нефункциональных требований — включая «проверка промокода ≤ 50 мс» (маркетинг хочет применять код мгновенно, а то «пользователь уйдёт»).
- 14 User Story — включая роли «покупатель», «менеджер по маркетингу» и «администратор».
- 3 конфликта — например, требование «промокод не должен суммироваться со скидкой постоянного покупателя» противоречило письму маркетинга, где сказано «лояльным клиентам — двойная выгода».
Аналитик потратил 25 минут: 10 — на настройку промптов, 10 — на прогон, 5 — на финальную валидацию. Без LLM это заняло бы 3–4 часа. Разница не в том, что модель умнее. Разница в том, что она не отвлекается на уведомления в Slack.
Заключение
LLM не заменит системного аналитика. Но аналитик, использующий LLM, заменит того, кто не использует. Старая максима, но в случае с обработкой требований она бьёт точнее, чем хотелось бы.
Pipeline, который мы разобрали, закрывает главную боль: ручной разбор гигантских объёмов неструктурированной информации. Вы по-прежнему принимаете решения. Вы по-прежнему спорите со стейкхолдерами о приоритетах. Но три часа чтения переписок и выписывания требований в табличку заменяются тремя минутами промпта и пятью минутами проверки.
Попробуйте на одном ближайшем интервью: запишите, транскрибируйте, скормите модели. Если результат будет сырым — доработайте промпт. Ко второму-третьему разу вы получите инструмент, который останется с вами надолго. А механическая работа по вытаскиванию требований из текста пусть останется в прошлом — у неё там своё почётное место, рядом с факсами и модемами на 56 килобит.
P.S. Если вы дочитали до этого места и подумали «ну, можно попробовать на следующем проекте» — отлично. Если подумали «я и так всё руками делаю, зачем мне эти игрушки» — приходите через полгода. Когда ваш коллега будет закрывать спринт за два дня, а вы всё ещё читать сорокастраничную переписку. Нет, серьёзно.