多模态评估器:用 MLLM 作为裁判评估图像到文本任务
在构建视觉购物、图像或文档理解、图表分析等应用时,如何验证模型输出是否真正基于源图像是一大挑战。纯文本评估器无法判断描述是否忠实反映图像、提取的发票金额是否与文档一致,或屏幕摘要是否虚构了不存在的按钮。Gartner 预测,到 2030 年,80% 的企业软件将具备多模态能力,而 2024 年这一比例还不足 10%。缺乏自动化多模态评估,企业只能在昂贵的人工审核和不可靠的纯文本代理之间左右为难。
如今,AWS 在 Strands Evals SDK 中推出了四种新的多模态大语言模型(MLLM)作为裁判的评估器,专门用于图像到文本任务:Overall Quality(整体质量)、Correctness(正确性)、Faithfulness(忠实性)和 Instruction Following(指令遵循)。每个评估器都会根据源图像对模型输出进行评分。评估器将图像直接发送给多模态裁判模型,同时附上查询、响应以及可选的参考答案。裁判模型返回基于图像的分数以及推理过程字符串,便于调试。
这些评估器可以无缝替换现有 Strands Evals 工作流中的纯文本评估器,并集成到持续集成(CI)中,自动捕捉视觉幻觉、事实错误和指令违规。本文将介绍如何设置这四种多模态评估器并运行图像到文本任务;如何在有参考和无参考评估之间切换;如何为特定领域标准编写自定义多模态评估标准;如何在 Amazon Bedrock 上选择平衡准确性、成本和延迟的裁判模型;以及如何应用提示设计选择来提升评估器与人类判断的一致性。
设置与使用
首先,确保已安装 Python 3.10 或更高版本。通过 Strands Evals SDK 可以快速调用这些评估器。示例代码如下:
from strands_evals import MultimodalEvaluator
evaluator = MultimodalEvaluator(
judge_model="anthropic.claude-3-sonnet-20240229-v1:0",
evaluator_type="faithfulness"
)
result = evaluator.evaluate(
image_path="invoice.jpg",
query="提取发票总金额",
response="总金额为 $123.45",
reference="$123.45" # 可选
)
print(result.score, result.reasoning)
自定义多模态评估标准
若需针对特定领域制定标准,可编写自定义评估标准。例如,在医疗影像报告中,可以定义“报告必须描述病变位置和大小”等规则,评估器将据此打分。
选择裁判模型
Amazon Bedrock 提供了多种多模态模型,如 Claude 3 Sonnet、Claude 3 Haiku 等。Claude 3 Sonnet 在准确性和延迟之间取得了良好平衡,适合大多数场景;而 Claude 3 Haiku 则更注重成本效益。用户可根据任务需求灵活选择。
提示设计技巧
实验表明,在提示中加入“逐步推理”指令(如“请先描述图像内容,再评估回答”)可以显著提升评估器与人类判断的一致性。此外,明确要求模型输出评分理由,有助于调试和审计。
通过引入多模态评估器,开发者可以更可靠地自动化评估图像到文本任务的输出质量,减少人工干预,加速 AI 应用的落地。