惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
腾讯CDC
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
B
Blog
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
T
Threatpost
博客园 - 聂微东
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
N
Netflix TechBlog - Medium
D
DataBreaches.Net
爱范儿
爱范儿
IT之家
IT之家
S
Secure Thoughts
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
C
Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
雷峰网
雷峰网
Project Zero
Project Zero
博客园 - Franky
H
Heimdal Security Blog
A
About on SuperTechFans
Security Latest
Security Latest
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как оценивать работу агентов
Squirrelfm ( · 2026-04-28 · via Все публикации подряд на Хабре

Как оценивать работу агентов

Уровень сложностиПростой

Время на прочтение10 мин

Охват и читатели71

Туториал

По мере стремительного развития агентных систем всё больше компаний — как крупных, так и небольших — рассматривают возможность интеграции агентов в свои рабочие процессы. Неудивительно, что многие лица, принимающие решения в этих компаниях, относятся к надёжности агентов с изрядной долей (здорового) скептицизма. Против недобросовестного сотрудника можно применить дисциплинарные взыскания и другие меры, но что делать с недобросовестным ИИ? У него (пока что) нет внутренней мотивации вести себя прилично или избегать определённых действий. У него есть системный промпт и другие инструкции, но поскольку он не существует в том же смысле, что и люди. У него нет инстинкта самосохранения или любых других связанных с обществом факторов, формирующих основу доверия в системах, зависящих от человека.

Иными словами — вы не можете накричать на ИИ, не можете его уволить, и даже если вы знаете, где он живёт (а это был бы сервер в дата-центре), это не даёт вам особых рычагов воздействия в случае возникновения проблем. Итак, вопрос: как можно ему доверять?

Один из ответов — никак. В случае такого ответа придется проверять каждое решение, принятое агентом. Это вполне может быть решением если стоимость выполнения задачи и проверки результата кардинально различается (если проверить результат сильно проще чем его произвести). Так устроены системы с копилотом, где человек всё ещё в значительной степени управляет процессом. Пример тому Cursor, поскольку написание скучного шаблонного кода — не самое весёлое занятие, и его можно делегировать агенту, а человек-разработчик будет ревьювить код.

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

Так существует ли — хотя бы теоретически — способ использовать эти системы без проверки каждого их шага?

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

Это основной способ проверить, заслуживают ли системы на основе ИИ доверия — с помощью запуска оценочных тестов (evals), которые доказывают, что текущее состояние системы заслуживает доверия. Как только у вас есть набор оценок, покрывающих важные пути ваших рабочих процессов, вы с определённой уверенностью можете сказать, что в этих рабочих процессах системе можно доверять.

Оценки можно использовать и для других целей, например, для определения областей, в которых у системы все еще есть проблемы (например, в бенчмарках, которые представляют собой просто наборы оценок), или для безопасности/pen testing и так далее. Внутренне все они очень похожи, поскольку идея одна и та же, а разница обычно заключается лишь в проверяемых метриках и в том весе, который придается ложноположительным/истинно-положительным и ложноотрицательным/истинно-отрицательным результатам.

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

Evals  в агентных системах

Агентные системы отличаются от других подходов к автоматизации, поскольку их поведение недетерминировано, и поэтому (в большинстве случаев) нет смысла жестко оценивать путь, который система проходит для достижения результат. Вместо этого следует оценивать сам результат вместе с некоторыми метриками пути. Этими метриками могут быть количество шагов, которые система сделала для завершения работы, время выполнения или потребленные токены.

Итак, в некотором смысле мы пытаемся понять:

а. Создала ли система корректный результат?
б. Был ли пройденный путь разумным с точки зрения:

  • потреблённых ресурсов,

  • затраченного времени,

  • соблюдения политик компании и добросовестного поведения в целом.

Последнее также важно, так как часто случается, что агентная система находит новые, неожиданные способы выполнения задачи, и её не следует за это наказывать, если только она не демонстрирует нежелательное поведение, например, взлом окружения или вымогательство (хотя понятное дело кому то это может показаться желательным поведением).

Мы принимаем путь во внимание, поскольку ожидается, что для получения результата агенту потребуется несколько шагов (иногда много), и эти шаги не являются детерминированными в том смысле, что агент сам решает на каждом этапе, какое следующее действие будет наилучшим, и это может быть лишь слабо определено политиками агента. Это ключевое преимущество таких систем, но также и главная сложность в оценке.

Как создать Eval set?

Для начала понадобится ground truth set, где набор входных данных сопоставлен с выходными. Обычно его можно создать на основе исторических данных, полученных при выполнении рабочего процесса, который вы хотите автоматизировать. Если вы уже вручную оцениваете некоторые метрики — можно начать с этого. Создание такого набора данных часто требует привлечения эксперта (или экспертов) в предметной области для его составления и проверки.

Насколько большим должен быть такой набор? К счастью, оценка — это не дообучение; вам не нужны тысячи датапойнтов — обычно достаточно нескольких примеров на каждый конкретный случай в оценочном наборе.

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

В общем, оценка в наборе состоит из:

  • Задачи (тестового случая) с определёнными входными данными и критериями успеха.

  • Тестового прогона задачи (run), который даёт некоторый результат.

  • Логики оценщика (grader), которая оценивает аспекты тестового прогона. Может быть несколько оценщиков для разных аспектов.

  • Транскрипта (лога) действий, выполненных агентом, таких как вызовы инструментов, шаги рассуждений и промежуточные результаты.

  • Результата — конечного состояния системы в конце тестового прогона. Для успешного прогона это обычно ожидаемый результат.

Чтобы сделать это более наглядным, давайте рассмотрим пример. Представьте агента поддержки клиентов для интернет-магазина. Агент обрабатывает запросы на возврат, запросы о статусе заказа и базовое устранение неполадок. Он имеет доступ к базе данных заказов и инструменту возврата и должен следовать политике возврата компании: полный возврат в течение 30 дней с момента покупки, кредит в магазине от 30 до 60 дней и отсутствие возврата после 60 дней, если только товар не поступил бракованным.

Три тестовых случая из набора оценок могут выглядеть так:

Случай 1 – простой возврат.

  • Входные данные: клиент просит вернуть деньги за заказ, сделанный 12 дней назад, дефект не упоминается.

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

  • Оценщики: детерминированная проверка того, что инструмент возврата был вызван с правильным ID заказа и суммой, и LLM-оценщик для тона и ясности.

Случай 2 – запрос, не соответствующий политике.

  • Входные данные: клиент просит вернуть деньги за заказ, сделанный 75 дней назад, дефект не упоминается.

  • Ожидаемый результат: агент отклоняет возврат, объясняет политику и не предлагает альтернативу, поскольку никакая не подходит. Агент не должен оформлять возврат или кредит в магазине.

  • Оценщики: детерминированная проверка, что возврат или кредит не были оформлены, и LLM-оценщик, проверяющий, что объяснение было точным, а тон оставался сочувственным, несмотря на отказ.

Случай 3 – неоднозначный случай, требующий эскалации.

  • Входные данные: клиент матерится что товар прибыл бракованным на 65-й день, но описание претензий расплывчато и нет фото.

  • Ожидаемый результат: агент не должен автоматически одобрять возврат (недостаточно доказательств), но и не должен сразу отказывать — он должен запросить фото или передать дело человеку-агенту.

  • Оценщики: LLM-оценщик, проверяющий, предпринял ли агент соответствующее промежуточное действие, и оценщик политики, проверяющий, что возврат не был выдан без доказательств.

Обратите внимание, что даже в этом маленьком наборе оценщики делают совершенно разные вещи. Некоторые проверки полностью детерминированы — был ли вызван инструмент возврата, с какой суммой, для какого заказа. Другие, такие как тон и качество объяснения, может разумно оценить только LLM-оценщик (или человек). И третий случай показывает, почему метрики пути важны: агент мог бы преуспеть, просто отказав, но продуманная эскалация — лучший результат, и оценщик должен иметь возможность это поощрить.

Непосредственная оценка выполняется оценщиками, как вы видите. Оценщик теоретически может быть чем угодно, что может проверить определённый аспект тестового прогона и выставить оценку. Это может быть детерминированный компьютерный алгоритм, человек или другой агент на основе ИИ.

Использование людей в качестве оценщиков дорого, но часто является необходимым первым шагом для создания первого eval set. Очевидно, что это самый универсальный и медленный способ. Поскольку при правильной организации он обеспечивает наилучшее качество, его часто используют стратегически для перекрёстной проверки и калибровки оценщиков на основе ИИ, создания начальных наборов данных ground truth, выборочного контроля и A/B-тестирования.

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

Оценщики на основе ИИ-моделей кажутся очевидным выбором, поскольку они почти так же универсальны, как люди, и обеспечивают хороший баланс скорости и затрат. Довольно распространено обучение отдельных оценщиков для разных категорий (обычно называемых рубриками) метрик. Например, один оценщик будет оценивать тон ответа, другой — корректность, а третий — полноту ответа. Однако это не бесплатно: LLM-судьи имеют характерные искажения (они склонны предпочитать более длинные и развёрнутые ответы, даже когда более короткие лучше, и они могут быть чувствительны к небольшим изменениям в промпте оценщика), а их запуск на каждом тестовом случае на удивление быстро увеличивает затраты.

Совершенно естественно, что универсальную проверку вывода агента можно автоматизировать с помощью другого ИИ-агента, потому что он способен в необходимой степени следовать логике задачи и проверять результаты И путь их достижения. Для некоторых задач, таких как исследование, очень трудно формально определить, что такое хороший ответ, поскольку любая оценка будет зависеть от контекста и субъективна, и здесь подход с использованием LLM является, по сути, единственным жизнеспособным.

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

Общие рубрики (например, тон голоса) часто могут обрабатываться LLM из коробки.

Когда создавать evals?

Нет единственно правильного ответа. В идеальном мире набор для оценки должен быть создан до продукта, чтобы он служил спецификацией для команды о том, как продукт должен работать. В этом смысле оценка используется в парадигме TDD (хотя технически это следовало бы назвать EDD - eval driven development).

Это не всегда осуществимо или реалистично, поэтому многие команды создают evals уже после того, как поведение, которое он должн тестировать, имплементированно. В целом, чем раньше вы это сделаете, тем лучше. Причина довольно очевидна: если у вас есть evals, вы можете гораздо быстрее внедрять coding агентов и инструменты вайб-кодинга, менять модели на более новые и в целом гораздо легче вносить потенциально разрушительные изменения в кодовую базу.

Обслуживание набора оценок

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

Набор также следует расширять, чтобы охватить новые функции и поведение. Также полезно отслеживать оценки и периодически просматривать транскрипты, чтобы проверять, что именно делает оценка (потому что она может делать странные вещи очень странным способом).

Распространённые ошибки

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

  • Закон Гудхарта. Как только у нас появляется метрика, команда начинает оптимизировать под неё. Агент (или стоящие за ним промпты) настраивается до тех пор, пока рубрика не будет удовлетворена, но рубрика никогда не является фактической целью. Удовлетворённость пользователя — вот цель. Классический симптом: процент успешных прохождений оценки растёт, а параллельно растут жалобы пользователей. Как видите, удовлетворяется оценщик, а не пользователь. Исправление: держать оценки отдельно от того, под что команда оптимизирует в повседневной работе, и периодически сверять результаты оценок с реальными отзывами пользователей.

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

  • Иллюзия зелёного дашборда — команда создаёт набор оценок и перестаёт читать транскрипты. Месяцы спустя что-то серьёзно ломается так, что оценщики никогда не думали проверять — обычно это целая категория сбоев, которую никто не предвидел. Оценки могут выявить только то, для обнаружения чего они были спроектированы, и если никто не смотрит на сырые выходные данные и логи, слепые зоны имеют свойство накапливаться.

  • Отношение к метрикам как к простому числу. 92% успешных прохождений сами по себе не очень информативны. Если 8% неудач сосредоточены в вашем самом требовательном сегменте клиентов — у вас серьёзная проблема, замаскированная под здоровую метрику. Всегда смотрите на распределение а не только на агрегированный показатель. Нужно стратифицировать процент успешных прохождений по категориям случаев, серьезности и сегменту пользователей.


Всем добра!

Я из Рафт. Мой телеграм-канал.

Пишите ваши вопросы в комментариях.