Habr AI→ оригинал

Habr AI a montré comment préparer une entrée structurée pour un agent AI plutôt qu’un cahier des charges brut

Habr AI a publié une analyse utile des données d’entrée pour un agent AI qui vérifie un cahier des charges. Au lieu d’un document entier, l’auteur propose de dé

Habr AI a montré comment préparer une entrée structurée pour un agent AI plutôt qu’un cahier des charges brut
Источник: Habr AI. Коллаж: Hamidun News.

На Habr AI вышел подробный разбор того, что именно нужно подавать AI-агенту на вход, если задача — проверять технические требования, а не просто пересказывать их. Главная идея: вместо целого ТЗ агент получает набор атомарных требований в виде JSON-паспортов.

Почему одного ТЗ мало

Автор статьи начинает с проблемы, знакомой почти всем, кто пытался отдавать нейросети большой документ целиком. Когда модель получает многостраничное ТЗ без предварительной подготовки, она теряет фокус, смешивает требования из разных разделов и даёт слишком общие замечания. В итоге система может заметить отдельные неточности, но ей трудно объяснить, какой именно пункт плох, почему он плох и что с ним нужно исправить.

Поэтому документ сначала режется на отдельные требования: одно действие, одно правило или одно ограничение на каждый фрагмент. Чтобы при таком дроблении не потерять контекст, к каждому элементу добавляются поля вроде `parent_section` и `parent_object`, а логически связанные пункты помечаются как `linked`. Это важно, если несколько требований должны проверяться вместе: например, когда система обязана отправлять уведомление и на почту, и в Telegram, а не только в один канал из двух.

Паспорт требования

Следующий шаг — превратить человеческую формулировку в набор признаков, с которыми уже может работать классификатор. В этой схеме LLM не выступает финальным судьёй и не пытается «понять всё». Её роль намного уже: она вытаскивает из текста структурированные сигналы и складывает их в JSON.

Такой подход даёт контроль: признаки можно проверить, сравнить и при необходимости поправить постобработкой. Как формулирует автор, > «агент работает не с текстом, а с такими структурами». В статье описаны шесть базовых признаков, на которых держится этот паспорт.

Вместо абстрактной оценки качества модель ищет конкретные сигналы: числа, размытые слова, исключения, границы и явных участников сценария. На практике такой паспорт превращает фразу вроде «пользователь должен гибко настраивать отчёт» в понятный набор флажков, по которым сразу видно, чего именно не хватает требованию. Именно эта интерпретируемость отличает схему от попытки просто попросить модель оценить текст целиком.

`has_numbers` — есть ли в требовании числа, лимиты, даты и другие конкретные параметры `stopword_score` — насколько формулировка размыта из-за слов вроде «гибко», «удобно» или «быстро» `has_negative_keywords` — описаны ли исключения и ошибки `boundary_conditions_mentioned` — указаны ли пустые значения, максимумы, минимумы или другие границы * `actor_count` — сколько участников явно фигурирует в требовании Сами признаки извлекаются через JSON mode и few-shot примеры, чтобы модель не расползалась по формату. Если LLM всё же пропускает что-то очевидное, например цифры в тексте, это добивается постобработкой через регулярные выражения. Дальше вступает в дело дерево решений: оно получает числовые признаки и присваивает требованию метку вроде `ok`, `unverifiable`, `no_negative`, `no_boundary` или `ambiguity`.

Для обучения автор разметила 90 ТЗ, разбила их на 270 требований и получила около 82% accuracy на тестовой выборке.

Критик и масштаб На этом пайплайн не заканчивается.

Даже хороший классификатор видит только одно требование за раз, а значит легко пропускает противоречия между разделами. Для таких случаев используется отдельный агент-критик, который получает весь текст ТЗ, список JSON-паспортов и предсказанные метки. Его задача — не переоценивать каждую фразу заново, а смотреть на документ сверху и искать конфликты, пробелы в правах доступа и ошибки в маппинге интеграций.

Такой критик, например, может заметить, что в одном месте поле «Склад» обязательно, а в другом допускается пустое значение. Чтобы схема работала не только на коротких примерах, требования обрабатываются параллельно через `ThreadPoolExecutor`, а локальные модели запускаются в Ollama. Автор пишет, что на обычном игровом ПК система спокойно выдерживает 4–6 параллельных запросов без заметной деградации, а на пакете из сотни требований это даёт ускорение примерно в 3–4 раза.

Связанные требования при этом остаются в одном потоке, чтобы не ломать порядок и общий контекст проверки.

Что это значит

Разбор на Habr AI хорошо показывает, куда движется практическая разработка AI-агентов: от попыток «скормить модели всё сразу» к узким, контролируемым пайплайнам с явными признаками, локальными моделями и отдельным уровнем арбитража. Если команда хочет строить прикладного агента для аналитики, QA или работы с документацией, ей придётся думать не только о выборе модели, но и о том, как устроены входные данные, разметка и финальная проверка результата.

ЖХ
Hamidun News
AI‑новости без шума. Ежедневный редакторский отбор из 400+ источников. Продукт Жемала Хамидуна, Head of AI в Alpina Digital.
Загружаем комментарии…