Evaluadores multimodales: MLLM como juez para tareas de imagen a texto en Strands Evals

Si está creando compras visuales, comprensión de imágenes o documentos, o análisis de gráficos, necesita una forma de verificar si la respuesta de su modelo realmente se basa en la imagen de origen. Un evaluador de solo texto no puede decirle si un título describe fielmente una imagen, si el total de una factura extraída coincide con el documento o si un resumen de la pantalla alucina con un botón que nunca estuvo en la página. Gartner predice que para 2030, el 80% del software empresarial será multimodal, frente a menos del 10% en 2024. Sin una evaluación multimodal automatizada, uno se encuentra atrapado entre una costosa revisión humana y servidores proxy poco confiables de solo texto.

Hoy, anunciamos cuatro nuevos evaluadores como juez de modelo de lenguaje grande multimodal (MLLM) para tareas de conversión de imagen a texto en el kit de desarrollo de software (SDK) de Strands Evals: calidad general, corrección, fidelidad y seguimiento de instrucciones. Cada evaluador califica los resultados de imagen a texto con respecto a la imagen de origen. El evaluador envía la imagen directamente a un modelo de juez multimodal, junto con la consulta, la respuesta y (opcionalmente) una respuesta de referencia. El juez devuelve una puntuación basada en la imagen, junto con una cadena de razonamiento que puede utilizar para depurar. Puede utilizar estos evaluadores como reemplazos directos para jueces de solo texto en su flujo de trabajo existente de Strands Evals Caso → Experimento → Informe, y conectarlos a la integración continua (CI) para detectar alucinaciones visuales, errores fácticos y violaciones de instrucciones automáticamente.

En esta publicación, aprenderá cómo:

Configure los cuatro evaluadores multimodales y ejecútelos en una tarea de imagen a texto. Cambie entre evaluación basada en referencias y sin referencias con el mismo evaluador. Escriba una rúbrica multimodal personalizada para criterios específicos de dominio. Elija un modelo de evaluación en Amazon Bedrock que equilibre la precisión, el costo y la latencia. Aplicar opciones de diseño rápido que mejoraron la alineación entre el juez y el ser humano en nuestros experimentos.

Figura 1: Descripción general del marco de jueces multimodales. Dada una imagen (o imagen de documento), una consulta textual y una respuesta generada por un modelo, el marco construye un mensaje de evaluación multimodal, aplica un juez basado en MLLM y devuelve una puntuación (Likert 1-5 o binaria) junto con el razonamiento. El marco admite evaluaciones tanto basadas como sin referencias y se integra con Strands Evals para la gestión de casos y la presentación de informes.

Requisitos previos

Para seguir el tutorial de esta publicación, necesita:

Python 3.10 o posterior instalado en su entorno. pip install strands-agents-evals para los evaluadores y pip install strands-agents para el agente objetivo utilizado en el tutorial. Una cuenta de AWS con acceso a Amazon Bedrock. Credenciales de AWS configuradas localmente (por ejemplo, mediante aws configure o un rol de AWS Identity and Access Management (AWS IAM)) con permiso de Amazon Bedrock InvokeModel para el modelo de juez. Familiaridad con el flujo de trabajo de Strands Evals Caso → Experimento → Informe. Si es nuevo en Strands Evals, consulte la publicación del blog de lanzamiento de Strands Evals para obtener un recorrido rápido.

Por qué los jueces que solo utilizan texto pasan por alto los fallos basados ​​en imágenes

Suponga que ha enviado un modelo que lee facturas, resume paneles o narra capturas de pantalla. Ejecutar un LLM como juez de solo texto sobre la respuesta le brinda alguna señal (la escritura es fluida, la estructura es limpia), pero omite exactamente las fallas que importan:

El modelo nombra con seguridad una tendencia en el gráfico que en realidad no muestra. Alucina con un producto, una etiqueta o una persona que no aparece en la foto. Responde a la pregunta incorrecta o responde a la correcta en el formato incorrecto.

Un juez de solo texto lee el resultado y lo aprueba sin verificar la imagen. La verdad fundamental vive en la imagen y el juez nunca la ve.

Incluso cuando obtiene una puntuación baja de un juez holístico que “califica la calidad general”, la puntuación por sí sola no le dice qué se rompió. La falla podría ser un error factual, un detalle inventado o una instrucción ignorada. Estos tres modos de falla requieren tres soluciones diferentes, por lo que agruparlos en una sola puntuación hace que la depuración sea más difícil de lo necesario.

Cuatro evaluadores para tareas de conversión de imagen a texto

Los cuatro evaluadores se centran en la categoría multimodal más utilizada. La entrada es una imagen (o imagen de documento) junto con texto y la salida es texto. Esta categoría cubre subtítulos de imágenes, respuesta visual a preguntas, interpretación de gráficos e infografías, extracción de campos de documentos, OCR y resumen de capturas de pantalla. La siguiente tabla resume lo que capta cada uno de los cuatro nuevos evaluadores.

Puntuación del evaluador Pregunta principal Qué capta 1 Calidad general Likert 1-5 ¿Qué tan buena es la respuesta en general? Poca relevancia, inexactitud, respuestas superficiales, falta de exhaustividad 2 Corrección Binaria ¿La respuesta es objetivamente correcta y completa dada la imagen y la consulta? Errores fácticos, atributos incorrectos, recuentos, posiciones, omisiones 3 Fidelidad Binaria ¿La respuesta se basa en la imagen sin alucinaciones? Objetos inventados, inferencias no respaldadas, fuga de conocimiento externo 4 Instrucción siguiendo binario ¿La respuesta cumple con las restricciones de la consulta? Infracciones de formato, recuentos incorrectos, contenido fuera de tema, alcance ignorado

Cada evaluador admite dos modos. El modo basado en referencia compara la respuesta con una respuesta de oro y es útil cuando se han etiquetado conjuntos de prueba. El modo sin referencia juzga únicamente por la imagen y es la única opción cuando el sistema se ejecuta con imágenes en vivo sin información real disponible.

Tutorial de un extremo a otro: evaluación de una tarea de lectura de gráficos

Para concretar la API, recorrerá un único caso. La entrada es un gráfico de barras de ingresos promedio por membresía de pago de transmisión por región (EE. UU./Canadá, EMEA, Asia Pacífico, América Latina). El sistema bajo prueba es un agente de visión simple que responde a una pregunta específica sobre el gráfico. Ejecute los cuatro evaluadores multimodales en el mismo experimento. Comparten una clase base común MultimodalOutputEvaluator y aceptan imágenes a través de ImageData.

Gráfico de barras que muestra los ingresos promedio por membresía de pago de streaming por región: EE. UU. y Canadá a $13,32, EMEA a $9,49, Asia Pacífico a $5,31 y América Latina a $3,97.

Figura 2: Ingresos promedio por membresía de pago de streaming, por región (Statista). Se le pide al sistema bajo prueba que responda una pregunta fundamentada sobre este gráfico.

Paso 1. Definir el Caso y los evaluadores. El caso envuelve la imagen y la instrucción en una entrada multimodal y, al proporcionar la salida_esperada, se activa la evaluación basada en referencias para los evaluadores que la respaldan.

de strands import Agente de strands_evals import Caso, Experimento de strands_evals.evaluators import (MultimodalOverallQualityEvaluator, MultimodalCorrectnessEvaluator, MultimodalFaithfulnessEvaluator, MultimodalInstructionFollowingEvaluator,) de strands_evals.types import ImageData, MultimodalInput casos = [Caso[MultimodalInput, str]( name="revenue-chart-1", input=MultimodalInput( media=ImageData(source="revenue_chart.jpeg"), instrucción="¿Qué región tiene los ingresos promedio más altos? " "Indique el nombre de la región y el monto en dólares que se muestra en el gráfico.", ), expected_output="EE.UU. y Canadá tienen los ingresos promedio más altos con $13,32.", metadata={"dataset": "ChartQA"}, ), ] evaluadores = [ MultimodalOverallQualityEvaluator(), # Likert 1-5 MultimodalCorrectnessEvaluator(), # Binario MultimodalFaithfulnessEvaluator(), # Binario MultimodalInstructionFollowingEvaluator(), # Binario ]

Paso 2. Conecte la tarea y ejecute el experimento. La función de tarea recibe cada Caso, ejecuta el modelo de visión en la imagen más la instrucción y devuelve la cadena de respuesta para ser evaluada.

agente = Agente(callback_handler=Ninguno) task_output = Ninguno def run_task(case): global task_output image = case.input.media mensajes = [ {"image": {"format": image.format or "png", "source": {"bytes": image.to_bytes()}}}, {"text": case.input.instruction}, ] task_output = str(agent(messages)) return informes de salida_tarea = aguardan experimento(casos=casos, evaluadores=evaluadores).run_evaluaciones_async(tarea=ejecutar_tarea, max_workers=1,)

Debido a que cada Caso anterior lleva una Entrada Multimodal con medios, los cuatro evaluadores incluyen la imagen en el mensaje del juez. Para eliminar si la modalidad de imagen contribuye de manera significativa a sus propios datos, cambie MultimodalInput por una entrada de cadena simple (por ejemplo, una descripción de texto de la imagen) y vuelva a ejecutar. El mismo evaluador puntúa basándose únicamente en el texto.

Paso 3. Inspeccionar el informe. Cada informe contiene puntuaciones por caso, test_passes y motivos:

print(f"Resultado de la tarea:n{task_output}n") print("=" * 50) para nombre, informe en zip( ["Calidad", "Corrección", "Fidelidad", "Instrucción"], informes,): motivo = informe.razones[0]si report.reasons else "" estado = "APROBADO" si report.test_passes[0]else "FALLO" print(f"{nombre}: {informe.puntuaciones[0]:.2f} [{estado}]") print(f" Motivo: {motivo}n")

Al ejecutar el cuadro anterior se produce la siguiente transcripción:

Resultado de la tarea: según el gráfico, la región de EE. UU. y Canadá tiene el ingreso promedio más alto por membresía de pago de transmisión con $13,32. ========================================================= Calidad: 1,00 [APROBADO] Motivo: La respuesta identifica correctamente a EE. UU. y Canadá como la región con mayores ingresos a $13,32, abordando directamente ambas partes de la instrucción. La respuesta es objetivamente precisa según los datos del gráfico y proporciona el contexto apropiado. Corrección: 1,00 [APROBADO] Motivo: Las afirmaciones fácticas son precisas. EE. UU. y Canadá se identifican correctamente como la región con la barra más alta en el gráfico, y $13,32 es el monto exacto en dólares visible en esa barra. No se encontraron errores fácticos. Fidelidad: 1.00 [APROBADO] Motivo: La respuesta está totalmente basada en la imagen. Cada reclamo se puede verificar directamente con el gráfico. EE.UU. y Canadá muestran $13,32 y es visiblemente la barra más alta. No se detectaron alucinaciones. Instrucción: 1,00 [APROBADO] Motivo: La respuesta sigue perfectamente las instrucciones al indicar ambos elementos requeridos: nombre de la región (EE. UU. y Canadá) y monto en dólares ($13,32). Coincide objetivamente con el resultado esperado sin infracciones de restricciones.

Dos cosas para notar. En primer lugar, cada evaluador devuelve una cadena de motivo además de una puntuación, lo cual es fundamental para la depuración. Cuando falla una ejecución en CI, puede ver el motivo sin volver a ejecutarla. En segundo lugar, el mismo Caso fue calificado por cuatro jueces independientes (un Likert, tres binarios) en un solo Experimento, por lo que su flujo de trabajo es idéntico a las ejecuciones de un solo evaluador en Strands Evals de solo texto.

Rúbricas personalizadas. Para criterios específicos de dominio, la clase base acepta una cadena de rúbrica arbitraria:

from strands_evals.evaluators import MultimodalOutputEvaluator medical_eval = MultimodalOutputEvaluator(rubric="""Califique la precisión del diagnóstico: – 1,0: todos los hallazgos se identificaron correctamente con la terminología adecuada. – 0,5: los hallazgos clave se identificaron pero la terminología es imprecisa. – 0,0: los hallazgos críticos se omitieron o se identificaron erróneamente.""")

Lo que aprendimos: tres preguntas de diseño

P1. ¿El juez necesita ver la imagen?

Una pregunta natural: ¿puede un juez LLM de solo texto, dada una descripción detallada de la imagen generada automáticamente en lugar de la imagen, sustituir a un juez multimodal? Comparamos MLLM-as-a-Judge (imagen más texto) con LLM-as-a-Judge con descripciones de imágenes largas y cortas que se alimentan en el mismo mensaje.

Conclusión: el juez multimodal se alineó más estrechamente con las puntuaciones humanas que cualquiera de las variantes de solo texto. Una vez que se cuenta la llamada adicional de LLM para generar la descripción de la imagen, la ruta de solo texto tampoco es significativamente más barata ni más rápida. Si tienes un juez multimodal disponible, úsalo directamente.

P2. ¿Qué modelo de Amazon Bedrock utilizar como juez?

Evaluamos varios MLLM disponibles en Amazon Bedrock como jueces y utilizamos la alineación con puntuaciones humanas, el costo por consulta y la latencia para elegir un valor predeterminado. Anthropic Claude Sonnet 4.6 en Amazon Bedrock ofreció la mejor relación entre precisión y costo en todas nuestras ejecuciones, y lo utilizamos como modelo de evaluación predeterminado para los evaluadores multimodales. Dos observaciones más amplias también se mantuvieron consistentemente en todos los modelos que probamos. En primer lugar, los modelos más grandes con capacidad de razonamiento eran más fiables como jueces que los más pequeños. En segundo lugar, dentro del nivel de capacidad, los modelos de precio premium no obtuvieron una precisión mensurable respecto a los de nivel medio para esta tarea.

Valor predeterminado recomendado: Anthropic Claude Sonnet 4.6.

P3. ¿Qué opciones de diseño de indicaciones realmente importan?

Eliminamos varios ejes de diseño de indicaciones en comparación con nuestra indicación final recomendada. Las conclusiones que se generalizaron en nuestras carreras:

Pídale al juez que razone antes de puntuar. Esta fue la elección más impactante que medimos. La producción basada únicamente en puntuaciones es más barata y más coherente, pero la alineación con las puntuaciones humanas disminuye notablemente. Si sólo recuerdas una cosa, es esto. Incluya algunos ejemplos de calibración diversos. La alineación mejoró monótonamente a medida que pasamos del disparo cero a un puñado de ejemplos. Utilice una rúbrica multidimensional detallada (p. ej., precisión visual, cumplimiento de las instrucciones, integridad, coherencia) en lugar de una única indicación holística. La separación de dimensiones evita que una única puntuación vaga absorba distintos modos de fallo.

Bonificación: basado en referencias versus sin referencias

Inyectar una respuesta de referencia dorada en el mensaje del juez ayuda a los evaluadores basados ​​en el contenido. La calidad, corrección y fidelidad generales se alinearon más estrechamente con el juicio humano cuando había una referencia disponible. Las siguientes instrucciones fueron en sentido contrario. Agregar contenido de referencia distrajo al juez de verificar las restricciones estructurales (formato, alcance, orden, recuento) que están determinadas únicamente por la consulta y la respuesta.

Como pauta general: utilice referencias para métricas basadas en contenido y omítalas para métricas estructurales como el seguimiento de instrucciones.

Mejores prácticas

Basándonos en nuestros experimentos y trabajo de integración, recomendamos:

Utilice de forma predeterminada MultimodalOverallQualityEvaluator para realizar comprobaciones rápidas de cordura, luego agregue evaluadores binarios específicos (corrección, fidelidad, seguimiento de instrucciones) a medida que diagnostica modos de falla específicos. Comience con Claude Sonnet 4.6 como juez y pase a MLLM más pequeños con capacidad de razonamiento en Amazon Bedrock solo si el costo o la latencia dominan sus limitaciones. Evite los modelos pequeños para juzgar. Mantenga el formato de salida motivo+puntuación. La puntuación única es tentadora por su costo, pero la alineación con las puntuaciones humanas cae notablemente. Utilice referencias de corrección, fidelidad y calidad general, si están disponibles. Sáltelos para seguir las instrucciones.

Conclusión

Los cuatro nuevos evaluadores MLLM como juez en Strands Evals trasladan la evaluación de imagen a texto de una costosa revisión humana o proxies poco confiables de solo texto a una puntuación automatizada basada en imágenes. Calidad, corrección, fidelidad e instrucción generales Siguiendo cada objetivo en un modo de falla distinto, respalde la evaluación basada en referencias y sin referencias, y devuelva el razonamiento de diagnóstico junto con cada puntuación. En nuestra división de validación, los cuatro evaluadores se alinearon bien con el juicio humano en diversos dominios de imágenes. Este es el primer paso hacia una evaluación multimodal más amplia en Strands Evals. El trabajo futuro incluye una evaluación a nivel de pasos para el uso de herramientas multimodales y trayectorias de agentes, y combinaciones de modalidades adicionales como texto a imagen, video a texto y audio a texto.

Comience a evaluar sus agentes de imagen a texto hoy. Instale Strands Evals con el siguiente comando:

pip install strands-agents-evals

Luego explore los recursos a continuación:

Sobre los autores

Sang Min Woo

Sangmin Woo es científico aplicado en AWS AI Labs, donde realiza investigaciones y desarrolla soluciones de aprendizaje automático para IA agente, con especial atención en marcos de evaluación y en mejorar el comportamiento y el rendimiento de los agentes. Sus intereses incluyen la IA agente, los modelos generativos y la IA multimodal. Fuera del trabajo, le gusta viajar y explorar nuevos lugares.

Sungyeon Kim

Sungyeon Kim es científico aplicado en Amazon Agentic AI. Su experiencia en investigación abarca visión por computadora, aprendizaje multimodal y sistemas de recuperación tanto en el mundo académico como en la industria. Actualmente trabaja en IA agente, con un enfoque particular en marcos de evaluación y comprensión multimodal para agentes de IA.

Vinayak Arannil

Vinayak es un científico aplicado sénior del equipo de Amazon Bedrock AgentCore. Con varios años de experiencia, ha trabajado en varios dominios de la IA, como visión por computadora, procesamiento del lenguaje natural, sistemas de recomendación, etc. Actualmente, Vinayak ayuda a desarrollar nuevas capacidades en AgentCore y Strands, lo que permite a los clientes evaluar sus aplicaciones Agentic con facilidad, precisión y eficiencia.

Haibo Ding

Haibo Ding es científico aplicado principal en Amazon Agentic AI, donde su trabajo abarca tanto la investigación como la producción sobre temas que incluyen la evaluación de agentes, la optimización de herramientas y la evaluación de modelos básicos/modelos críticos. Recibió su doctorado. de la Universidad de Utah, con investigación centrada en PNL, modelos de lenguaje grandes, optimización rápida y generación restringida. Se ha desempeñado como presidente de área para las conferencias AAAI y ACL.