T
traeai
登录
返回首页
AWS Machine Learning Blog

多模态评估器:Strands Evals中图像到文本任务的MLLM-as-a-Judge

8.5Score
多模态评估器:Strands Evals中图像到文本任务的MLLM-as-a-Judge

TL;DR · AI 摘要

AWS发布了四种多模态评估器(Overall Quality, Correctness, Faithfulness, Instruction Following),使用MLLM-as-a-Judge方法,通过直接向模型提供图像源数据,评估多模态任务中模型响应是否与图像内容一致,可有效检测视觉幻觉和事实错误。

核心要点

  • Gartner预测到2030年,80%的企业软件将采用多模态技术,比2024年不足10%大幅增长,凸显自动化多模态评估的重要性。
  • 四种评估器(Overall Quality, Correctness, Faithfulness, Instruction Following)支持基于参考和无
  • 通过Amazon Bedrock可选择不同平衡准确率、成本和延迟的法官模型,并使用特定提示设计改善评估一致性。

结构提纲

按章节快速跳转。

  1. 文本评估无法验证模型响应是否与图像一致,而多模态软件比例将从2024年不足10%增长至2030年的80%。

  2. AWS发布四种多模态评估器(Overall Quality, Correctness, Faithfulness, Instruction Following),可直接向模型提供图像源数据。

  3. 评估器将图像、查询、响应和参考答案直接发送给多模态法官模型,返回基于图像的评分和推理过程。

  4. Python环境需安装strands-agents-evals和strands-agents,并配置AWS Bedrock访问权限。

  5. 可为特定领域编写自定义多模态评分标准,并在不同法官模型间选择平衡准确率、成本和延迟的模型。

  6. 通过特定提示设计选择改善评估器与人类评估的一致性,提高评估可靠性。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 多模态评估器
    • 技术原理
      • MLLM-as-a-Judge
      • 直接提供图像源数据
      • 基于图像的评分系统
    • 评估类型
      • Overall Quality
      • Correctness
      • Faithfulness
      • Instruction Following
    • 应用场景
      • 购物应用
      • 文档理解
      • 图表分析

金句 / Highlights

值得收藏与分享的关键句。

  • 没有自动化多模态评估,您将陷入昂贵的人工审查和不可靠的纯文本代理之间。

    第 2 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 评估器将图像直接发送给多模态法官模型,同时提供查询、响应和(可选)参考答案。法官返回基于图像的评分以及可用于调试的推理字符串。

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 纯文本评估器读取输出内容并在不验证图像的情况下批准它。真实依据存在于图像中,而评估器从未看到过图像。

    第 2 节

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Gartner预测到2030年,80%的企业软件将采用多模态技术,比2024年不足10%大幅增长。

    第 1 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#AWS#多模态评估#Strands Evals#MLLM-as-a-Judge#图像理解
打开原文

如果您正在构建视觉购物、图像或文档理解,或图表分析功能,您需要一种方法来验证模型的响应是否真正基于源图像。纯文本评估器无法告诉您字幕是否忠实地描述了图像,提取的发票总额是否与文档匹配,或者屏幕摘要是否编造了页面上从未存在的按钮。Gartner 预测 到 2030 年,80% 的企业软件将是多模态的,而 2024 年这一比例不到 10%。如果没有自动化的多模态评估,您将陷入昂贵的人工审查和不可靠的纯文本代理之间。

今天,我们宣布在 Strands Evals 软件开发工具包 (SDK) 中推出四种新的多模态大语言模型 (MLLM) 即法官评估器,用于图像到文本任务:总体质量正确性忠实性指令遵循性。每个评估器都会根据源图像对图像到文本的输出进行评分。评估器将图像直接发送到多模态法官模型,同时发送查询、响应以及(可选)参考答案。法官模型返回基于图像的评分,以及可用于调试的推理字符串。您可以将这些评估器作为即插即用的替代品,替换现有 Strands EvalsCaseExperimentReport 工作流中的纯文本法官,并将它们集成到持续集成 (CI) 中,以自动捕获视觉幻觉、事实错误和指令违规。

在本文中,您将学习如何:

  • 设置四种多模态评估器并在图像到文本任务上运行它们。
  • 使用同一评估器在基于参考和无参考评估之间切换。
  • 编写针对特定领域标准的多模态评分标准。
  • Amazon Bedrock 上选择一个平衡准确性、成本和延迟的法官模型。
  • 应用在我们的实验中提高了法官与人类一致性的提示设计选择。
图 1:多模态法官框架概述。给定图像、文本查询和模型生成的响应,该框架构建评估提示,应用基于 MLLM 的法官,并返回带有推理的评分。

_图 1:多模态法官框架概述。给定图像(或文档图像)、文本查询和模型生成的响应,该框架构建多模态评估提示,应用基于 MLLM 的法官,并返回评分(李克特 1-5 或二元评分)以及推理。该框架支持基于参考和无参考评估,并与 Strands Evals 集成以进行案例管理和报告。_

先决条件

要遵循本文中的演练,您需要:

  • 在您的环境中安装 Python 3.10 或更高版本。
  • 使用 pip install strands-agents-evals 安装评估器,使用 pip install strands-agents 安装演练中使用的目标代理。
  • 一个可以访问 Amazon Bedrock 的 AWS 账户。
  • 在本地配置 AWS 凭证(例如,通过 aws configure 或 AWS 身份与访问管理 (AWS IAM) 角色),并为法官模型配置 Amazon Bedrock InvokeModel 权限。
  • 熟悉 Strands Evals 的 CaseExperimentReport 工作流。如果您是 Strands Evals 的新用户,请查看 Strands Evals 发布博客文章 以快速了解。

为什么纯文本法官会遗漏基于图像的失败

假设您已经发布了一个读取发票、总结仪表板或描述屏幕截图的模型。对响应运行纯文本 LLM 即法官会为您提供一些信号(写作流畅,结构清晰),但它恰恰错过了重要的失败情况:

  • 模型自信地命名了一个图表实际并未显示的趋势。
  • 它编造了图片中不存在的产品、标签或人物。
  • 它回答了错误的问题,或者以错误的格式回答了正确的问题。

纯文本法官读取输出并批准它,而无需验证图像。真相存在于图像中,而法官从未见过它。

即使您确实从整体性的"评估总体质量"法官那里获得了低分,仅凭分数也无法告诉您哪里出了问题。失败可能是事实错误、编造的细节或被忽略的指令。这三种失败模式需要三种不同的修复方法,因此将它们合并为一个评分会使调试变得比必要的更困难。

图像到文本任务的四种评估器

这四种评估器针对最广泛使用的多模态类别。输入是图像(或文档图像)和文本,输出是文本。此类别包括图像标注、视觉问答、图表和信息图表解释、文档字段提取、OCR 和屏幕截图总结。下表总结了这四种新评估器各自捕捉的内容。

评估器分数核心问题检测内容 1整体质量李克特量表1-5 回应的整体质量如何?相关性差、不准确、回答肤浅、缺乏全面性 2正确性二元 给定图像和查询,回应在事实上是否正确且完整?事实错误、错误属性、计数、位置、遗漏 3忠实性二元 回应是否基于图像且没有幻觉?虚构对象、无支持的推理、外部知识泄露 4指令遵循二元 回应是否遵循查询的约束?格式违规、错误计数、离题内容、忽略范围

每个评估器支持两种模式。基于参考模式将回应与黄金答案进行比较,当您有标记测试集时非常有用。无参考模式仅从图像本身进行判断,当系统在没有真实可用数据的实时图像上运行时,这是唯一的选择。

端到端演示:评估图表阅读任务

为了使API具体化,您将遍历单个Case。输入是一个按地区(美国/加拿大、欧洲、中东和非洲、亚太地区、拉丁美洲)划分的每付费流媒体会员平均收入的柱状图。被测系统是一个简单的视觉代理,它回答关于图表的狭义问题。您在同一个Experiment中运行四个多模态评估器。它们共享一个通用的MultimodalOutputEvaluator基类,并通过ImageData接受图像。

图2:显示按地区划分的每付费流媒体会员平均收入的柱状图:美国和加拿大为13.32美元,欧洲、中东和非洲为9.49美元,亚太地区为5.31美元,拉丁美洲为3.97美元。

_图2:按地区划分的每付费流媒体会员平均收入(Statista)。被测系统被要求回答关于此图表的有根据的问题。_

第1步。定义案例和评估器。 Case将图像和指令包装在MultimodalInput中,提供expected_output会激活支持它的评估器的基于参考的判断。

code
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="哪个地区的平均收入最高? "
                        "说明地区名称和图表中显示的美元金额。",
        ),
        expected_output="美国和加拿大最高,为13.32美元。",
        metadata={"dataset": "ChartQA"},
    ),
]

evaluators = [
    MultimodalOverallQualityEvaluator(),       # 李克特量表1-5
    MultimodalCorrectnessEvaluator(),          # 二元
    MultimodalFaithfulnessEvaluator(),         # 二元
    MultimodalInstructionFollowingEvaluator(), # 二元
]

Python

第2步。连接任务并运行实验。 task函数接收每个Case,在图像加指令上运行视觉模型,并返回要评估的响应字符串。

code
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,
)

Python

因为上面的每个Case都携带带有媒体的MultimodalInput,所以四个评估器在判断提示中包含图像。为了消融图像模态是否在您自己的数据上有意义地贡献,请将MultimodalInput替换为纯字符串输入(例如,图像的文本描述)并重新运行。相同的评估器仅从文本获得分数。

第3步。检查报告。 每个Report包含每个案例的scorestest_passesreasons

code
print(f"任务输出:\n{task_output}\n")
print("=" * 50)
for name, report in zip(
    ["质量", "正确性", "忠实性", "指令"], reports,
):
    reason = report.reasons[0] if report.reasons else ""
    status = "通过" if report.test_passes[0] else "失败"
    print(f"{name}: {report.scores[0]:.2f} [{status}]")
    print(f"  原因: {reason}\n")

Python

在上面的图表上运行会产生以下记录:

code
任务输出:
根据图表,美国和加拿大地区的每付费流媒体会员平均收入最高,
为13.32美元。

==================================================
质量: 1.00 [通过]
  原因: 回应正确地将美国和加拿大识别为收入最高的地区,金额为13.32美元,
  直接解决了指令的两个部分。答案基于图表数据在事实上是准确的,
  并提供了适当的上下文。

正确性: 1.00 [通过]
  原因: 事实声明是准确的。美国和加拿大被正确识别为图表中条形最高的地区,
  13.32美元是该条形上可见的确切美元金额。未发现事实错误。

忠实性: 1.00 [通过]
  原因: 回应完全基于图像。每个声明都可以直接与图表进行验证。
  美国和加拿大显示13.32美元,并且明显是最高的条形。未检测到幻觉。

指令: 1.00 [通过]
  原因: 回应完美地遵循指令,说明了两个必需元素:地区名称(美国和加拿大)
  和美元金额(13.32美元)。在事实上与预期输出匹配,没有违反约束。

纯文本

有两点需要注意。首先,每个评估器除了返回分数外,还会返回一个reason字符串,这对于调试至关重要。当CI中的运行失败时,您可以重新运行就能看到失败原因。其次,在同一个Experiment中,同一个Case由四个独立的评估者(一个Likert量表,三个二元评估)进行评分,因此您的工作流程与纯文本Strands Evals中的单评估器运行完全相同。

自定义评分标准。 对于特定领域的标准,基类接受任意评分标准字符串:

code
from strands_evals.evaluators import MultimodalOutputEvaluator

medical_eval = MultimodalOutputEvaluator(rubric="""评估诊断准确性:
- 1.0:所有发现均被正确识别并使用适当的术语。
- 0.5:关键发现被识别但术语不精确。
- 0.0:关键发现被遗漏或错误识别。""")

Python

我们学到的东西:三个设计问题

Q1. 评估者需要看到图像吗?

一个自然而然的问题:仅文本的LLM评估者,在提供详细的自动生成的图像描述代替图像的情况下,能否替代多模态评估者?我们比较了MLLM-as-a-Judge(图像加文本)与LLM-as-a-Judge(使用长和短图像描述输入到同一提示中)。

要点: 多模态评估者与人类评分的一致性比任何纯文本变体都更高。一旦计算生成图像描述的额外LLM调用,纯文本路线在成本或速度上并没有明显优势。如果您有多模态评估者可用,请直接使用它。

Q2. 在Amazon Bedrock上使用哪个模型作为评估者?

我们评估了多个在Amazon Bedrock上可用的MLLM作为评估者,并使用与人类评分的一致性、每查询成本和延迟来选择默认模型。Amazon Bedrock上的Anthropic Claude Sonnet 4.6在我们的运行中提供了最佳准确性与成本的权衡,我们将其用作多模态评估器的默认评估模型。在我们尝试的模型中,两个更广泛的观察结果也始终一致。首先,更大的具有推理能力的模型作为评估者比小型模型更可靠。其次,在具有能力的模型层级中,对于此任务,高价模型在中端模型上没有获得可测量的准确度提升。

推荐默认值: Anthropic Claude Sonnet 4.6。

Q3. 哪些提示设计选择确实重要?

我们针对最终推荐的提示消除了几个提示设计轴。在我们运行中普遍适用的要点:

  1. 要求评估者在评分前进行推理。 这是我们测量的最具影响力的选择。仅输出分数更便宜且更具自洽性,但与人类评分的一致性明显下降。如果您只记住一件事,就是这个。
  2. 包含一些多样化的校准示例。 当我们从零样本移动到少量示例时,一致性单调提高。
  3. 使用细粒度的、多维度的评分标准(例如,视觉准确性、指令遵循度、完整性、连贯性),而不是单一的全面提示。分离维度可以防止一个模糊的分数吸收不同的失败模式。

奖励:基于参考与无参考

将黄金参考答案注入评估者提示有助于基于内容的评估者。当有参考可用时,整体质量、正确性和忠实性与人类判断的一致性更高。而指令遵循则相反。添加参考内容分散了评估者检查仅由查询和响应确定的结构约束(格式、范围、顺序、数量)的注意力。

作为一般指导原则: 对于基于内容的指标使用参考,对于像指令遵循这样的结构指标则跳过它们。

最佳实践

基于我们的实验和集成工作,我们建议:

  • 默认使用`MultimodalOverallQualityEvaluator`进行快速健全性检查,然后在诊断特定故障模式时添加目标二元评估器(正确性、忠实性、指令遵循)。
  • 以Claude Sonnet 4.6作为评估者开始,只有当成本或延迟成为主要约束时,才降级到Amazon Bedrock上更小的具有推理能力的MLLM。避免使用小型模型进行判断。
  • 保持reason+score输出格式。 仅输出分数在成本上很有吸引力,但与人类评分的一致性明显下降。
  • 如果可用,为正确性、忠实性和整体质量使用参考。为指令遵循跳过它们。

结论

Strands Evals中的四个新的MLLM-as-a-Judge评估器将图像到文本的评估从昂贵的人工审查或不可靠的纯文本代理转变为自动的、基于图像的评分。整体质量、正确性、忠实性和指令遵循各自针对不同的故障模式,支持基于参考和无参考的评估,并在每个分数旁边返回诊断推理。在我们保留的验证分割中,这四个评估者在多样化的图像领域中与人类判断保持良好的一致性。这是Strands Evals中更广泛多模态评估的第一步。未来的工作包括多模态工具使用和代理轨迹的步骤级评估,以及其他模态组合,如文本到图像、视频到文本和音频到文本。

今天开始评估您的图像到文本代理。使用以下命令安装Strands Evals:

pip install strands-agents-evals

Bash

然后探索以下资源:

  • * *

关于作者

AI 可能会生成不准确的信息,请核实重要内容