- Дата публикации
AWS запустила мультимодальные «судьи» для проверки ИИ по картинкам и документам
Что нового
AWS добавила в SDK Strands Evals четыре мультимодальных оценщика (MLLM-as-a-Judge) для задач image-to-text:
- MultimodalOverallQualityEvaluator — общая оценка качества (шкала Лайкерта 1–5).
- MultimodalCorrectnessEvaluator — бинарная проверка фактической точности и полноты ответа относительно изображения и запроса.
- MultimodalFaithfulnessEvaluator — бинарная проверка «приземлённости» к изображению, без галлюцинаций.
- MultimodalInstructionFollowingEvaluator — бинарная проверка следования инструкциям (формат, количество, тема, рамки ответа).
Ключевые особенности:
- Работа именно с изображением, а не только с текстом: в запрос к «судье» передают картинку, текстовый запрос, ответ модели и при желании эталонный ответ.
- Два режима для каждого оценщика:
- reference-based — сравнение с «золотым» ответом (если есть разметка);
- reference-free — оценка только по картинке и ответу (для продовых сценариев без ground truth).
- Формат вывода — числовой скор (1–5 или 0/1) + строка с объяснением, почему «судья» поставил именно такую оценку.
- Интеграция с существующим пайплайном Strands Evals: Case → Experiment → Report. Новые мультимодальные оценщики можно подставить вместо текстовых без переписывания всего контура.
- Рекомендованный дефолтный «судья» на Amazon Bedrock — Anthropic Claude Sonnet 4.6. Авторы сравнили несколько мультимодальных моделей по:
- совпадению с человеческими оценками;
- стоимости запроса;
- задержке. Sonnet 4.6 показал лучший баланс точности и цены среди протестированных вариантов.
- Результаты экспериментов по дизайну промптов:
- запрос «сначала рассуждай, потом ставь оценку» заметно повышает совпадение с людьми;
- несколько калибрующих примеров в промпте стабильно улучшают качество;
- раздельные метрики (точность, следование инструкциям, полнота, связность) полезнее одной общей.
Gartner прогнозирует, что к 2030 году 80% корпоративного софта будет мультимодальным (против <10% в 2024). На этом фоне автоматическая проверка image-to-text становится обязательной инфраструктурой.
Как это работает
Общая схема
Новый контур оценки в Strands Evals выглядит так:
- На вход:
- изображение (фото, скриншот, документ, график);
- текстовый запрос к системе (инструкция);
- ответ вашей модели;
- опционально — эталонный ответ.
- SDK собирает мультимодальный промпт для «судьи» — мультимодальной LLM на Amazon Bedrock.
- «Судья» (например, Claude Sonnet 4.6) получает картинку + текст и возвращает:
- числовой скор (Likert 1–5 или 0/1);
- текстовое объяснение, на чём основана оценка.
- Strands Evals агрегирует результаты по кейсам в Report:
- scores, test_passes, reasons для каждого оценщика.
Схема поддерживает оба режима:
- reference-based — промпт включает эталонный ответ; оценка идёт по содержанию и совпадению с ним.
- reference-free — «судья» опирается только на картинку, запрос и ответ.
Какие ошибки ловят разные оценщики
- Overall Quality (1–5)
- Вопрос: «Насколько хорош ответ в целом?»
- Ловит: слабую релевантность, неточность, поверхностность, низкую полноту.
- Correctness (0/1)
- Вопрос: «Ответ фактически корректен и полон относительно изображения и запроса?»
- Ловит: неверные атрибуты, числа, положения объектов, пропуски важных деталей.
- Faithfulness (0/1)
- Вопрос: «Все ли утверждения опираются на картинку, без выдумок?»
- Ловит: галлюцинации объектов, людей, элементов UI, не подтверждённые картинкой выводы, утечку внешних знаний.
- Instruction Following (0/1)
- Вопрос: «Ответ следует формату и ограничениям запроса?»
- Ловит: неверный формат, неправильное количество элементов, уход в сторону от темы, игнорирование рамок.
Базовый класс и кастомные рубрики
Все четыре оценщика наследуются от MultimodalOutputEvaluator. Можно задать свой рубрикатор под домен. Пример для медицины:
from strands_evals.evaluators import MultimodalOutputEvaluator
medical_eval = MultimodalOutputEvaluator(rubric="""Rate diagnostic accuracy:
- 1.0: All findings correctly identified with proper terminology.
- 0.5: Key findings identified but imprecise terminology.
- 0.0: Critical findings missed or misidentified.""")
SDK сам подставит эту рубрику в промпт к мультимодальному «судье».
Выбор модели-судьи на Amazon Bedrock
Авторы протестировали несколько мультимодальных LLM на Bedrock и сделали два обобщения:
- Большие reasoning-модели надёжнее в роли судьи, чем маленькие.
- Среди «способных» моделей дорогие не дали заметного выигрыша по качеству оценки относительно mid-tier.
Рекомендованный дефолт: Anthropic Claude Sonnet 4.6.
Что показали эксперименты с промптом
- Обязательное рассуждение
- Если просить модель сразу выдать только скор, совпадение с людьми падает.
- Формат «сначала объясни, потом поставь оценку» даёт лучший результат.
- Примеры в промпте
- Переход от zero-shot к нескольким разнообразным примерам улучшает качество «судьи».
- Многомерная рубрика
- Разделение на визуальную точность, следование инструкциям, полноту и связность помогает не смешивать разные типы ошибок в один скор.
Почему текстовый «судья» не заменяет мультимодальный
AWS сравнила три варианта:
- MLLM-as-a-Judge: судья видит картинку + текст.
- LLM-as-a-Judge + длинное автоописание картинки.
- LLM-as-a-Judge + короткое описание.
Мультимодальный «судья» лучше совпал с человеческими оценками, чем оба текстовых варианта. При этом текстовый путь требует дополнительного вызова LLM для генерации описания, поэтому не выигрывает ни по цене, ни по скорости.
Вывод: если у вас есть доступ к мультимодальной модели-судье, выгоднее использовать её напрямую.
Что это значит для вас
Когда это полезно
Новые оценщики закрывают почти все массовые сценарии image-to-text:
- Визуальный шопинг и e-commerce
- Проверка описаний товаров по фото.
- Ловля галлюцинаций: несуществующие цвета, материалы, элементы.
- Документы и OCR
- Счета, инвойсы, чеки: сверка сумм и реквизитов с исходным документом.
- Проверка, что модель не «додумала» поля, которых нет.
- Дэшборды и графики
- Автоматическая проверка описаний графиков, трендов, аномалий.
- Ловля ситуаций, когда модель уверенно «видит» тренд, которого нет.
- Скриншоты и UI-анализ
- Резюме экранов, описания интерфейсов, QA UI-агентов.
- Проверка, что модель не придумывает кнопки, поля или статусы.
- VQA и ассистенты на камеру
- Вопросы о содержимом сцены, объектах, тексте на изображении.
Как встроить в ваш пайплайн
- Если вы уже используете Strands Evals с текстовыми оценщиками, можно заменить их на мультимодальные без переделки архитектуры.
- Подходит для:
- A/B-тестов разных моделей и промптов;
- регулярных регрессионных прогонов;
- автотестов в CI: падение метрик по картинкам — повод блокировать релиз.
Где это экономит деньги
- Вместо ручной разметки и массового просмотра скриншотов или документов команда получает автоматический, достаточно «человеко-подобный» скор.
- Причём не только число, но и объяснение причины — удобно для отладки и анализа фейлов.
Ограничения и подводные камни
- Всё завязано на Amazon Bedrock. Нужен аккаунт AWS и права
InvokeModelна выбранный judge-модель. - Для пользователей в России доступ к AWS и Bedrock может требовать VPN и юридическую оценку рисков. Strands Evals как Python-пакет можно установить откуда угодно, но без Bedrock мультимодальные «судьи» работать не будут.
- Качество оценки зависит от выбранной LLM-судьи. Авторы прямо советуют не использовать маленькие модели в роли судьи.
- Reference-based режим требует размеченного датасета. Если у вас только продовые данные без эталонов, придётся полагаться на reference-free оценку.
Практические советы от AWS
- Для быстрых sanity-checkов начинайте с MultimodalOverallQualityEvaluator.
- Если видите проблемы, добавляйте точечные бинарные метрики:
- Correctness — ловит фактические ошибки;
- Faithfulness — ловит галлюцинации;
- Instruction Following — ловит нарушения формата и рамок.
- Для метрик, завязанных на контент (correctness, faithfulness, overall quality), используйте эталонные ответы, если они есть.
- Для Instruction Following лучше не подмешивать эталон, он отвлекает «судью» от проверки структуры.
- Не отказывайтесь от reason+score даже ради экономии: когда оставляют только скор, совпадение с людьми заметно падает.
Место на рынке
Контекст
Gartner ждёт, что к 2030 году 80% корпоративного ПО станет мультимодальным. Сейчас (2024) таких решений меньше 10%. Это значит, что:
- компании массово будут внедрять визуальных ассистентов, аналитику по графикам, «читающие» документы системы;
- без автоматической мультимодальной оценки они застрянут между:
- дорогой ручной проверкой;
- ненадёжными текстовыми прокси.
Strands Evals с мультимодальными судьями закрывает именно этот зазор.
Сравнение подходов
1. Текстовый судья + описание картинки
- Плюсы: можно использовать уже развернутые текстовые LLM.
- Минусы по данным AWS:
- хуже совпадение с человеческими оценками, чем у мультимодального судьи;
- нужен дополнительный вызов LLM для генерации описания, что съедает экономию по цене и задержке.
2. Мультимодальный судья напрямую (MLLM-as-a-Judge)
- Плюсы:
- лучшее совпадение с оценками людей в экспериментах AWS;
- один вызов вместо двух (описание + судья);
- прямой доступ к пикселям, а не к чужой интерпретации изображения.
- Минусы:
- зависимость от мультимодальных моделей на Bedrock;
- стоимость выше, чем у маленьких текстовых LLM.
Позиция Anthropic Claude Sonnet 4.6
Среди протестированных мультимодальных моделей на Amazon Bedrock Claude Sonnet 4.6 стал рекомендуемым дефолтом для роли судьи. Причины:
- высокая корреляция с человеческими оценками;
- цена запроса и задержка, которые авторы считают оптимальными среди доступных вариантов.
Других конкретных цифр по сравнению с, например, GPT-4o или другими мультимодальными моделями в материале нет, поэтому корректно говорить только о том, что Sonnet 4.6 выбран как лучший баланс точности и стоимости в рамках экспериментов AWS.
Установка
Для работы с новыми мультимодальными оценщиками нужен Python 3.10+ и несколько пакетов:
pip install strands-agents-evals
pip install strands-agents
Также потребуется:
- аккаунт AWS с доступом к Amazon Bedrock;
- локально настроенные AWS-credentials (например, через
aws configureили IAM-роль) с правомInvokeModelдля выбранной judge-модели.
Как запустить: базовый пример с графиком
Ниже — полный пример из AWS, как оценить задачу чтения графика.
Шаг 1. Описать кейс и список оценщиков
from strands import Agent
from strands_evals import Case, Experiment
from strands_evals.evaluators import (
MultimodalOverallQualityEvaluator,
MultimodalCorrectnessEvaluator,
MultimodalFaithfulnessEvaluator,
MultimodalInstructionFollowingEvaluator,
)
from strands_evals.types import ImageData, MultimodalInput
cases = [
Case[MultimodalInput, str](
name="revenue-chart-1",
input=MultimodalInput(
media=ImageData(source="revenue_chart.jpeg"),
instruction="Which region has the highest average revenue? "
"State the region name and the dollar amount shown in the chart.",
),
expected_output="U.S. and Canada has the highest at $13.32.",
metadata={"dataset": "ChartQA"},
),
]
evaluators = [
MultimodalOverallQualityEvaluator(), # Likert 1-5
MultimodalCorrectnessEvaluator(), # Binary
MultimodalFaithfulnessEvaluator(), # Binary
MultimodalInstructionFollowingEvaluator(), # Binary
]
Здесь MultimodalInput содержит картинку (ImageData) и инструкцию. Наличие expected_output включает reference-based режим для тех оценщиков, которые его поддерживают.
Шаг 2. Запустить задачу и эксперимент
agent = Agent(callback_handler=None)
task_output = None
def run_task(case):
global task_output
image = case.input.media
messages = [
{"image": {"format": image.format or "png", "source": {"bytes": image.to_bytes()}}},
{"text": case.input.instruction},
]
task_output = str(agent(messages))
return task_output
reports = await Experiment(cases=cases, evaluators=evaluators).run_evaluations_async(
task=run_task,
max_workers=1,
)
run_task — это ваша тестируемая система. В примере это простой vision-агент, который отвечает на вопрос по графику. Strands Evals прогоняет все кейсы через task и потом запускает указанные оценщики.
Если вы хотите проверить, даёт ли картинка реальную пользу, можно заменить MultimodalInput на обычный текстовый инпут (например, заранее сгенерированное описание графика) и сравнить оценки.
Шаг 3. Посмотреть отчёт
print(f"Task Output:\n\n{task_output}\n\n")
print("=" * 50)
for name, report in zip(
["Quality", "Correctness", "Faithfulness", "Instruction"],
reports,
):
reason = report.reasons[0] if report.reasons else ""
status = "PASS" if report.test_passes[0] else "FAIL"
print(f"{name}: {report.scores[0]:.2f} [{status}]")
print(f" Reason: {reason}\n")
Пример вывода для графика среднего дохода на подписку по регионам:
Task Output:
According to the chart, the U.S. and Canada region has the highest average revenue per paying streaming membership at $13.32.
==================================================
Quality: 1.00 [PASS]
Reason: The response correctly identifies U.S. and Canada as the highest revenue region at $13.32, directly addressing both parts of the instruction. The answer is factually accurate based on the chart data and provides appropriate context.
Correctness: 1.00 [PASS]
Reason: The factual claims are accurate. U.S. and Canada is correctly identified as the region with the highest bar in the chart, and $13.32 is the exact dollar amount visible on that bar. No factual errors found.
Faithfulness: 1.00 [PASS]
Reason: The response is fully grounded in the image. Each claim can be directly verified against the chart. U.S. and Canada shows $13.32 and is visibly the highest bar. No hallucinations detected.
Instruction: 1.00 [PASS]
Reason: Response perfectly follows instruction by stating both required elements: region name (U.S. and Canada) and dollar amount ($13.32). Matches expected output factually with no constraint violations.
Здесь хорошо видно, зачем нужен reason-текст: он даёт быструю диагностику, что именно проверил каждый «судья» и почему пропустил/завалил кейс.
Как начать использовать
- Установите Strands Evals:
pip install strands-agents-evals
- Ознакомьтесь с документацией по пайплайну Case → Experiment → Report.
- Посмотрите справочник по мультимодальным оценщикам:
MultimodalInput,ImageData, встроенные рубрики и четыре готовых подкласса. - Запустите пример с мультимодальными оценщиками в репозитории Strands Agents.
- Если чего-то не хватает — авторы предлагают оставлять запросы и баги в GitHub Issues.
Если вы строите продукты вокруг визуального шопинга, анализа документов, графиков или UI, эти мультимодальные «судьи» — готовый способ автоматизировать проверку и перестать полагаться только на ручной просмотр и текстовые костыли.