Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
РазборНаучная статья · В песочницуHabr AI→ оригинал

Классификатор услуг на LLM вырос с 73% до 94%, но цепочка из трёх нод всё равно даёт 75%

Автор разбирает реальный кейс: LLM определяет код услуги для 402-й формы среди 50 классов. На внутреннем бенчмарке было 98%, на проде — 73%. Помогли не новые правила в промпте, а разбиение извлечения услуг на отдельные вызовы и динамические примеры из векторной базы: итог 94%. Но в цепочке из нескольких нод качество перемножается, и 90% на всю систему — уже хороший результат.

AI-обработка оригинала Habr AI; редакция Hamidun News
Классификатор услуг на LLM вырос с 73% до 94%, но цепочка из трёх нод всё равно даёт 75%
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Бенчмарк врёт98% в тестах превратились в 73% на проде
Ключевой факт #28 примеров в промпте дали 81%, список услуг — 89%, поиск похожих — 94%
Ключевой факт #3Цепочка 95% × 80% × 99% даёт всего 75% на выходе

Любая команда, которая запускала LLM в прод, знакома с этим разочарованием. На тестовом наборе модель выдаёт 98%, а на реальных данных выходит 73%. Автор разбора на Habr считает, что на проде редко удаётся получить качество всей системы выше 90%. Поэтому ориентироваться стоит именно на эту цифру. Некоторые проекты из-за высокой цены ошибки просто не сойдутся.

Задача: 50 классов и один справочник

Пример взят из реальной работы. По названию услуги нужно выбрать код для 402-й формы. Классификация плоская, 50 классов, каждый вид услуги соответствует ровно одному коду. Например, «842 — Разработка и установка программного обеспечения» или «7123 — Грузовые перевозки автомобильным транспортом». Задача выглядит простой, но на ней видно, как ведёт себя одна нода.

Первый инстинкт — дописывать в промпт исключения. Так промпт раздувается, и появляются три проблемы. Во-первых, модель может «потерять» часть длинного контекста: информация во входе есть, а в ответе её нет. Во-вторых, если в одном промпте десятки разных задач (скажем, извлечение 50 атрибутов, и для суммы уже целый абзац правил), часть правил выпадает. В-третьих, возникает аналог переобучения: вы подгоняете промпт под один и тот же бенчмарк, и он выучивает примеры вместо общего правила. Остановились на 8 примерах и получили 81%.

Что реально подняло качество ноды

Наивное разделение справочника пополам автор отвергает. Получатся два кандидата, и понадобится третий шаг, чтобы выбрать один код. Это новое место для ошибок.

Помог разбор логов и разговор с бизнесом. Выяснилось, что в одном документе может быть несколько услуг. Предыдущая нода записывала их одной строкой, и LLM выбирала один код, а остальные услуги терялись. Исправление такое: извлекать услуги списком, подавать каждую отдельно с нужным контекстом документа и собирать результат с кодом для каждой. Качество выросло до 89%. Проблема сидела в постановке задачи, а не в модели.

Следующий шаг — динамические примеры. Из размеченного бенчмарка делают таблицу «вектор названия услуги — класс». Для новой услуги ищут похожие и подставляют их в промпт вместе с правильными кодами. Получилось 94%. До 100% не дотянуть: таблица неполная, а векторы иногда сходятся ложно, и в промпт попадают неподходящие примеры.

Цепочки: качество перемножается

Главная мысль второй половины статьи: у цепочки вызовов итоговое качество равно произведению качества шагов. Пример из контакт-центра. Переписывание вопроса работает на 95%, RAG-поиск по базе знаний на 80%, финальный ответ на 99%. Итого 0,95 × 0,80 × 0,99 = 75%. Расчёт честен только на одном фиксированном датасете: нельзя мерить каждое звено на своём наборе и потом перемножать.

Соблазн понятен: добавить оркестрацию со стоп-листом проблемных вопросов. Она действительно отсекает часть случаев, и RAG на оставшихся работает лучше, допустим на 89%. Но сам оркестратор тоже ошибается, скажем в 5% случаев. Итог: 95% × 95% × 89% × 99% ≈ 79,5%. Прирост есть, но небольшой, а система стала сложнее. Идеальной она не стала: к цепочке добавился ещё один шаг со своей ошибкой.

Что делать на практике

  • Измеряйте качество на реалистичных данных, а не только на внутреннем бенчмарке. Разрыв 98% и 73% — типичный сценарий.
  • Прежде чем усложнять промпт, смотрите логи и разговаривайте с бизнесом. Часть «ошибок модели» окажется ошибками постановки задачи или предыдущего шага.
  • Дробите задачу по смыслу (одна услуга — один вызов), а не механически.
  • Считайте цепочку заранее: три шага по 90% дают около 73%.
  • Если цена ошибки высока, закладывайте человека в контур. 100% от LLM-системы ждать не стоит.

Ограничения

Цифры взяты из одного кейса автора, в котором он изменил вводные, сохранив общий смысл. Независимой проверки нет, а размер выигрыша от каждого приёма зависит от данных. Но логика универсальна: качество системы определяется самым слабым звеном и числом шагов, и ориентир в 90% лучше принять сразу.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: задача: 50 классов и один справочник?

Пример взят из реальной работы. По названию услуги нужно выбрать код для 402-й формы. Классификация плоская, 50 классов, каждый вид услуги соответствует ровно одному коду. Например, «842 — Разработка и установка программного обеспечения» или «7123 — Грузовые перевозки автомобильным транспортом». Задача выглядит простой, но на ней видно, как ведёт себя одна нода. Первый инстинкт — дописывать в промпт исключения. Так промпт раздувается, и появляются три проблемы.

Что известно по теме: что реально подняло качество ноды?

Наивное разделение справочника пополам автор отвергает. Получатся два кандидата, и понадобится третий шаг, чтобы выбрать один код. Это новое место для ошибок. Помог разбор логов и разговор с бизнесом. Выяснилось, что в одном документе может быть несколько услуг. Предыдущая нода записывала их одной строкой, и LLM выбирала один код, а остальные услуги терялись. Исправление такое: извлекать услуги списком, подавать каждую отдельно с нужным контекстом документа и собирать результат с кодом для каждой.

Что известно по теме: цепочки: качество перемножается?

Главная мысль второй половины статьи: у цепочки вызовов итоговое качество равно произведению качества шагов. Пример из контакт-центра. Переписывание вопроса работает на 95%, RAG-поиск по базе знаний на 80%, финальный ответ на 99%. Итого 0,95 × 0,80 × 0,99 = 75%. Расчёт честен только на одном фиксированном датасете: нельзя мерить каждое звено на своём наборе и потом перемножать. Соблазн понятен: добавить оркестрацию со стоп-листом проблемных вопросов.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Единое AI-пространство · Nomad

Протестируйте новые LLM и мультимодальные модели в одном окне

Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.

Открыть Nomad AI →Автономный Nomad Agent
Что вы думаете?
Загружаем комментарии…