К содержимому
MoranaLabs.
Инженерные гайды3 мин чтения3 просмотра

Eval ИИ как дисциплина: контур проверки агентов до того, как они напортачат 

Как один сбой автономного агента обошелся нам в 43 000$ за два часа, почему ручное тестирование LLM не масштабируется, и как выстроить контур оценки, который остановит регрессию еще в CI/CD.

0xReality

43 000$ за два часа — столько сжег наш агент техподдержки на API-вызовах к GPT-4, когда решил рекурсивно искать ответы в собственных галлюцинациях. Это случилось пару лет назад, когда все только нащупывали способы затаскивать автономные пайплайны в бой, и мы наивно полагали, что ручного тестирования на паре сотен логов диалогов будет достаточно. Спойлер: ручная проверка стохастических систем не масштабируется в принципе. В промпт прилетает чуть измененный контекст, модель решает сменить цепочку рассуждений (reasoning path), игнорирует системные инструкции, и все летит в пропасть. Именно тогда мы на своей шкуре усвоили, что eval ИИ как дисциплина: контур проверки агентов и LLM до того, как они напортачат в проде — это не корпоративная блажь, а базовый инстинкт самосохранения.

Рынок до сих пор обожает играть в русскую рулетку. Собрали агента из готовых кубиков, потыкали в песочнице, выкатили. Наш подход в MoranaLabs другой: мы относимся к LLM не как к магии, а как к нестабильному, капризному узлу системы, который сломается при первой возможности. Поэтому мы нарезаем проверку на три жестких слоя. Сначала unit-eval — проверяем отдельные атомарные шаги (например, способность модели стабильно вытаскивать строго типизированный JSON из сырого пользовательского текста). Затем end-to-end — прогоняем агента целиком по графу действий, тестируя, достигает ли он финального стейта. И онлайн-eval — легковесные асинхронные классификаторы на боевом трафике, которые ловят регрессии и выбросы в реалтайме.

Казалось бы, почему не автоматизировать это в лоб и не натравить сильную модель оценивать слабую? LLM-as-judge — это же индустриальный стандарт. Мы тоже пытались заливать проблемы железом и токенами. Проблема в том, что судья сам галлюцинирует ничуть не хуже подсудимого. Он страдает от position bias (всегда предпочитает первый вариант ответа из списка) и verbosity bias (считает длинный текст более умным и релевантным). Чтобы судья работал, его нужно загонять в рамки параноидально четких рубрик, где каждый балл расписан как статья уголовного кодекса, а сам промпт судьи должен тестироваться на отдельных мета-эвалах.


Реальный переход от игрушек к production-ML начинается с создания golden set — набора из нескольких сотен вручную размеченных эталонных примеров. В нем должны быть собраны краевые случаи (edge cases), инъекции и самый проблемный исторический трафик. Каждый коммит, меняющий системный промпт, температуру или код инструмента, обязан проходить через этот сет.

def test_agent_e2e(ci_commit, golden_set):
    results = run_eval_pipeline(
        agent_version=ci_commit,
        dataset=golden_set,
        judge_model="gpt-4-turbo",
        rubric=STRICT_EVAL_RUBRIC
    )
    
    # Хардкод лимитов. Компромиссам в проде не место.
    assert results["success_rate"] >= 0.95, f"Degradation detected: {results['success_rate']}"
    assert results["safety_violations"] == 0, "Agent leaked system instructions"
    assert results["avg_cost_per_task"] < 0.05, "Cost threshold exceeded, possible recursive loop"

В системах с инструментами вызова внешнего API (tools) классические NLP-метрики типа BLEU или ROUGE не имеют никакого смысла. Всем плевать, насколько стилистически гладко агент сгенерировал отказ, если перед этим он удалил базу данных. Нас волнуют только суровые эксплуатационные метрики:

  • Success rate: процент задач, где агент совершил правильную последовательность API-вызовов и закрыл тикет, а не просто вежливо попрощался.
  • Безопасность (Safety): устойчивость к prompt injection, отсутствие утечек внутреннего контекста и контроль над тем, чтобы модель не галлюцинировала в критичных сущностях вроде ценников или идентификаторов.
  • Стоимость на задачу (Cost per task): безжалостный трекинг расхода токенов. Агент в цикле размышлений может выжечь бюджет проекта за ночь, если у него нет принудительного ограничения на глубину графа.

Никаких иллюзий: continuous eval — это дорого. Это постоянный налог на инфраструктуру, на разметку эталонных датасетов живыми инженерами и на вызовы LLM-судей. Но мы платим этот налог ради одной цели — чтобы пороги алертинга отработали четко, и если модель начнет деградировать после скрытого обновления весов на стороне провайдера (что происходит регулярно), пайплайн просто заблокировал релиз. В тот день, когда мы отдали 43 тысячи долларов за бесконечный цикл рассуждений агента, мы купили этот опыт по рыночной цене. Вы можете забрать его бесплатно.

  • #AI Agents
  • #Continuous Eval
  • #LLM
  • #MLOps
  • #Production ML
ПоделитьсяTelegramX
рассылка

Новые статьи — на почту

Лонгриды про ML в проде, edge и компьютерное зрение — сразу после выхода.

Канал в Telegram: morana.log

Без спама. Нажимая «Подписаться», соглашаетесь с обработкой персональных данных

бесплатный pdf-гайд

Edge AI или облако: когда тащить нейросеть на железо

Признаки, фреймворк выбора и прикидка экономии — короткий PDF-гайд на почту.

PDF · 5 страниц · без спама. Нажимая «Получить», соглашаетесь с обработкой персональных данных

Читать дальше
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Сюда напишем — это быстрее всего

Или сразу написать в Telegram

Без спама и звонков-роботов. Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и обработкой персональных данных.