Дата публикации
ai_products

AWS запустила мультимодальные «судьи» для проверки ИИ по картинкам и документам

Что нового

AWS добавила в SDK Strands Evals четыре мультимодальных оценщика (MLLM-as-a-Judge) для задач image-to-text:

  1. MultimodalOverallQualityEvaluator — общая оценка качества (шкала Лайкерта 1–5).
  2. MultimodalCorrectnessEvaluator — бинарная проверка фактической точности и полноты ответа относительно изображения и запроса.
  3. MultimodalFaithfulnessEvaluator — бинарная проверка «приземлённости» к изображению, без галлюцинаций.
  4. 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 выглядит так:

  1. На вход:
    • изображение (фото, скриншот, документ, график);
    • текстовый запрос к системе (инструкция);
    • ответ вашей модели;
    • опционально — эталонный ответ.
  2. SDK собирает мультимодальный промпт для «судьи» — мультимодальной LLM на Amazon Bedrock.
  3. «Судья» (например, Claude Sonnet 4.6) получает картинку + текст и возвращает:
    • числовой скор (Likert 1–5 или 0/1);
    • текстовое объяснение, на чём основана оценка.
  4. 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 и сделали два обобщения:

  1. Большие reasoning-модели надёжнее в роли судьи, чем маленькие.
  2. Среди «способных» моделей дорогие не дали заметного выигрыша по качеству оценки относительно mid-tier.

Рекомендованный дефолт: Anthropic Claude Sonnet 4.6.

Что показали эксперименты с промптом

  1. Обязательное рассуждение
    • Если просить модель сразу выдать только скор, совпадение с людьми падает.
    • Формат «сначала объясни, потом поставь оценку» даёт лучший результат.
  2. Примеры в промпте
    • Переход от zero-shot к нескольким разнообразным примерам улучшает качество «судьи».
  3. Многомерная рубрика
    • Разделение на визуальную точность, следование инструкциям, полноту и связность помогает не смешивать разные типы ошибок в один скор.

Почему текстовый «судья» не заменяет мультимодальный

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-текст: он даёт быструю диагностику, что именно проверил каждый «судья» и почему пропустил/завалил кейс.

Как начать использовать

  1. Установите Strands Evals:
pip install strands-agents-evals
  1. Ознакомьтесь с документацией по пайплайну Case → Experiment → Report.
  2. Посмотрите справочник по мультимодальным оценщикам: MultimodalInput, ImageData, встроенные рубрики и четыре готовых подкласса.
  3. Запустите пример с мультимодальными оценщиками в репозитории Strands Agents.
  4. Если чего-то не хватает — авторы предлагают оставлять запросы и баги в GitHub Issues.

Если вы строите продукты вокруг визуального шопинга, анализа документов, графиков или UI, эти мультимодальные «судьи» — готовый способ автоматизировать проверку и перестать полагаться только на ручной просмотр и текстовые костыли.


Читайте также