Каскад моделей через один адрес: дешёвая обрабатывает поток

Самый большой выигрыш в расходе даёт не выбор модели подешевле, а отказ от одинакового обращения ко всем запросам. Часть из них простая, часть сложная, и обрабатывать их одинаково незачем.

КАСКАДПоток обрабатывает лёгкая модельК дорогой уходит только то, в чём она не уверенаВсе запросы100%лёгкая модельУверена~80%ответ готовСомнения~20%дорогая модельДолиусловныеСхема требует единого интерфейса: иначе переключение между моделями превращается во вторую интеграцию.
Поток обрабатывает лёгкая модель, к дорогой уходит только сомнительное

Как это работает

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

Второй уровень — дорогая модель, которая видит только сложные случаи. Их доля обычно невелика, а качество для пользователя остаётся прежним.

Схема требует единого интерфейса к обеим моделям. Без него переключение превращается во вторую интеграцию, которую никто не тестирует.

По каким признакам передавать дальше

ПРИЗНАКИКак понять, что модель не уверенаМодель сама помечает ответ как сомнительныйпросите отдельное поле в ответеОтвет не проходит проверку кодомсумма не сходится, поля пустыеВопрос не нашёлся в базе знанийподходящих фрагментов нетЗапрос попал в заранее сложную категориюжалоба, возврат, юридический вопросНадёжнее всего работает второй признак: проверка кодом не зависит от того, насколько честно модель оценила себя.
Надёжнее всего работает проверка кодом: она не зависит от самооценки модели

Четыре признака, и они дополняют друг друга.

Самооценка модели — самый простой в реализации и самый ненадёжный: модели склонны быть уверенными в неверных ответах.

Проверка кодом — самый надёжный. Сумма не сходится, обязательное поле пустое, артикул не существует в справочнике.

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

Категория запроса — жалобы, возвраты и юридические вопросы имеет смысл сразу направлять на второй уровень.

Чего это стоит

Схема не бесплатна, и считать нужно честно.

Сложный запрос оплачивается дважды: сначала лёгкой моделью, потом дорогой. При большой доле передач экономия исчезает.

Задержка для сложных случаев складывается из двух обращений. Для чата это заметно.

Сопровождать нужно два промпта вместо одного, и оба требуют тестового набора.

Точка окупаемости считается просто: если доля передач на второй уровень превышает примерно треть, выигрыш становится сомнительным.

Когда схема не нужна

Если поток однороден и все запросы одинаково сложные, делить нечего.

Если объём небольшой. На сотне запросов в день разница в расходе не окупит день работы на внедрение.

Если цена ошибки высока в каждом случае. В юридических и медицинских сценариях экономить на первом уровне не стоит.

Внедряйте каскад после того, как сделано простое: почищен системный промпт, свёрнута история диалога, включён кеш повторов. Эти три вещи дешевле и часто дают сопоставимый эффект.

Как внедрять по шагам

  1. Соберите тестовый набор из реальных запросов с эталонными ответами.
  2. Прогоните его на дорогой модели и запишите результат как ориентир.
  3. Прогоните на лёгкой и посмотрите, какая доля ответов приемлема.
  4. Добавьте проверки кодом и посчитайте, сколько случаев они отсеивают.
  5. Соберите схему и прогоните набор целиком.
  6. Сравните две цифры: качество и расход. Решение принимается по обеим сразу.

Что логировать

Обязательно фиксируйте, каким уровнем обработан каждый запрос. Без этого вы не узнаете реальную долю передач, а значит, не сможете проверить, окупается ли схема.

Заведите уведомление на рост этой доли. Он означает либо изменение характера запросов, либо деградацию лёгкой модели после обновления версии.

Частая ошибка

Настроить признаки передачи один раз и забыть. Поток меняется: появляются новые сценарии, пользователи формулируют иначе, обновляются модели.

Раз в квартал просматривайте выборку из тех запросов, которые ушли на второй уровень, и тех, что остались на первом. Обычно обнаруживается, что часть простых случаев зря уходит наверх, а часть сложных зря остаётся внизу.

Вариант попроще

Полноценный каскад нужен не всем. Часто достаточно более простой схемы: разные сценарии сразу идут на разные модели, без всякой передачи между уровнями.

Классификация писем, простановка тегов, извлечение даты — на лёгкую модель. Подготовка ответа клиенту, разбор договора, сводка по длинной переписке — на дорогую. Решение принимается один раз в коде, по типу задачи, а не по уверенности модели.

Такая схема внедряется за час, не требует тестирования признаков передачи и даёт заметную часть выигрыша. С неё имеет смысл начинать, а к настоящему каскаду переходить, только если поток внутри одного сценария действительно неоднороден.

Как считать экономию

Честный расчёт выглядит так: берёте фактический расход за неделю до внедрения и после, на сопоставимом объёме запросов. Не по прикидкам, а по выгрузке.

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

Если разница в пределах нескольких процентов, каскад не стоит сопровождения: два промпта, два тестовых набора и постоянное наблюдение обойдутся дороже сэкономленного.

Коротко

Каскад даёт наибольший эффект из всех приёмов оптимизации, но требует единого интерфейса, тестового набора и постоянного наблюдения. Считайте долю передач, проверяйте ответы кодом, а не самооценкой модели, и беритесь за схему только после того, как сделаны простые вещи.

Написать