Skip to content

Avaliação multimodal de agentes

Avalie agentes que atuam além do texto: agentes de uso de computador e GUI, assistentes de voz, vídeo e agentes de documentos. O Potato adiciona esquemas feitos sob medida para trajetórias de GUI com ancoragem de cliques, linhas do tempo de voz full-duplex, ancoragem temporal de vídeo com IoU ao vivo, marcação de erros em transcrições de fala, raciocínio multimodal intercalado e estrutura de grade de tabela.

Os agentes atuam cada vez mais em modalidades além do texto: eles controlam GUIs, assistem a vídeos e mantêm conversas faladas. Cada modalidade precisa de uma tela de revisão que um widget de texto simples não consegue fornecer, uma captura de tela com o clique do agente, uma linha do tempo de voz de faixa dupla, um controle de avanço de vídeo com intervalos de referência. O Potato adiciona esquemas de anotação feitos sob medida para esses traces, ao lado de suas telas existentes de imagem, áudio e vídeo.

Cada esquema deriva seus passos, turnos ou segmentos do trace no momento da renderização, e cada um vem com um exemplo executável em examples/agent-traces/.

Trajetória de GUI / uso de computador (gui_trajectory)

Avalie um agente de uso de computador, GUI ou SO passo a passo (OSWorld, NeurIPS 2024; ScreenSpot-Pro; AndroidWorld). Cada passo mostra a captura de tela que o agente viu e a ação que ele realizou; o anotador julga a ação (correta / elemento errado / ação errada / alucinada). Quando um passo carrega coordenadas de clique, um marcador de ancoragem na captura de tela mostra se o clique acertou o elemento certo.

Passo de uso de computador com um veredito de ação e um marcador de ancoragem de cliqueRevise cada passo de uso de computador: correção da ação mais ancoragem do clique na captura de tela

yaml
annotation_schemes:
  - annotation_type: gui_trajectory
    name: gui_review
    description: "For each step: was the action correct and did the click land right?"
    steps_key: steps
    screenshot_key: screenshot   # field on each step holding an image URL / data-URI
    action_key: action           # field holding the action text
    coord_space: normalized      # normalized (0..1) | pixels — for the x/y grounding marker
    verdict_options: [correct, wrong_element, wrong_action, hallucinated]

Cada passo pode fornecer screenshot, action e, opcionalmente, x/y (ou um click: {x, y} aninhado). Armazenado como uma lista de {index, step, verdict, notes}.

Interação de voz / full-duplex (voice_interaction)

Anote uma conversa falada humano↔agente quanto à alternância de turnos e ao tratamento de interrupções (Full-Duplex-Bench, 2025). Uma linha do tempo de faixa dupla (faixa do usuário mais faixa do agente) posiciona cada turno por seus tempos de início e fim e destaca as regiões de sobreposição em que ambos os falantes falam ao mesmo tempo. O anotador classifica cada sobreposição (o agente deveria responder / deveria retomar / backchannel / incerto) e avalia a alternância de turnos geral; o áudio de origem é reproduzido em linha quando fornecido.

Linha do tempo de voz de faixa dupla com uma região de interrupção destacadaUma linha do tempo de voz de faixa dupla com detecção de interrupções e pontuação de alternância de turnos

yaml
annotation_schemes:
  - annotation_type: voice_interaction
    name: turn_taking
    description: "Classify each barge-in/overlap and rate the overall turn-taking."
    turns_key: turns           # list of {speaker, start, end, text} (seconds)
    speaker_key: speaker
    user_speakers: [user, human, caller]   # everything else is treated as the agent
    overlap_labels: [agent_should_respond, agent_should_resume, backchannel, uncertain]
    rating_scale: 5
    # audio_key: audio         # optional per-instance audio URL to enable the player

As sobreposições entre turnos de falantes diferentes são calculadas no momento da renderização. Armazenado como {"overlaps": {idx: label}, "rating": int}.

Ancoragem temporal de vídeo (temporal_grounding)

Marque intervalos de tempo de eventos em um vídeo para avaliação de ancoragem temporal (TimeScope, 2025; ET-Bench). Para cada prompt de evento, o anotador define o [start, end] de referência, capturando a posição de reprodução ou digitando os segundos. Quando os dados carregam um intervalo previsto pelo modelo, uma IoU ao vivo e uma minilinha do tempo de duas barras (previsto vs. referência) são atualizadas conforme você ajusta. Isto é feito sob medida para a pontuação de localização previsto-vs-referência, distinta da rotulagem geral de segmentos.

Controle de avanço de vídeo com um intervalo de referência e uma leitura de IoU ao vivoMarque intervalos de eventos de referência em vídeo com uma IoU ao vivo em relação à previsão do modelo

yaml
annotation_schemes:
  - annotation_type: temporal_grounding
    name: grounding
    description: "Mark the gold start/end interval for each event. IoU vs prediction updates live."
    video_key: video           # per-instance video URL
    events_key: events         # list of {prompt, predicted: {start, end}} (predicted optional)
    # duration: 120            # optional fixed timeline scale (else inferred from the video)

Armazenado como {"events": {idx: {start, end}}}.

Erros de fala em transcrição alinhada (speech_transcript)

Anote uma transcrição de fala alinhada no tempo, segmento por segmento, quanto a erros de ASR/TTS e de qualidade de fala (Speak & Improve, 2025). Cada segmento {start, end, text, speaker?} é um cartão mostrando seu timestamp e texto; o anotador marca erros (erro de ASR / artefato de TTS / pronúncia errada / disfluência) e pode digitar a transcrição corrigida. Este é o complemento em nível de segmento da visão de alternância de turnos em voice_interaction.

Segmentos de transcrição de fala com marcações de erro por segmento e correção em linhaMarque erros de ASR/TTS/pronúncia por segmento e corrija a transcrição em linha

yaml
annotation_schemes:
  - annotation_type: speech_transcript
    name: speech_errors
    description: "Tag speech errors on each segment and correct the transcript where needed."
    segments_key: segments       # list of {start, end, text, speaker?}
    error_types: [asr_error, tts_artifact, mispronunciation, disfluency]
    allow_correction: true
    # audio_key: audio           # optional per-item audio URL to enable the player

Armazenado como uma lista de {index, start, end, errors, correction}.

Raciocínio multimodal intercalado (multimodal_reasoning)

Avalie um trace de raciocínio texto ↔ imagem ↔ ferramenta ↔ ação intercalado, passo a passo (Multimodal RewardBench 2, 2025; Zebra-CoT). Cada passo é um bloco tipado, renderizado em linha por seu tipo; o anotador julga a coerência de cada passo, o raciocínio decorre da imagem e dos passos anteriores, ou o visual é alucinado?

Trace de raciocínio intercalado com uma alucinação visual sinalizadaAvalie cada passo de um trace de raciocínio texto-imagem-ferramenta quanto à coerência e à alucinação visual

yaml
annotation_schemes:
  - annotation_type: multimodal_reasoning
    name: reasoning_review
    description: "Judge each step: coherent reasoning and grounded visuals?"
    steps_key: steps
    type_key: type     # each step's 'type': text | image | tool | action (inferred if absent)
    verdict_options: [coherent, incoherent, visual_hallucination, uncertain]

Cada passo pode carregar text/content, image/image_url (+caption) ou tool/args. Armazenado como uma lista de {index, step, type, verdict, notes}.

Estrutura de grade de tabela (table_grid)

Anote a estrutura de células de uma imagem de tabela, a parte específica de documentos que caixas delimitadoras simples não conseguem capturar (OmniDocBench, CVPR 2025; RealHiTBench). O anotador define as dimensões da grade e clica nas células para marcar seu papel (dados / cabeçalho de coluna / cabeçalho de linha / vazia). As caixas de região por página já são cobertas executando a anotação de imagem por página, então este esquema foca na estrutura que essas caixas não conseguem expressar.

Imagem de tabela com células marcadas como cabeçalhos, dados e vaziasAnote a estrutura de células de tabela de documento: cabeçalhos de coluna e de linha, dados e células vazias

yaml
annotation_schemes:
  - annotation_type: table_grid
    name: structure
    description: "Set the grid size, then click cells to mark headers and empty cells."
    image_key: image           # per-instance table image URL / data-URI
    rows_key: rows             # optional initial dims from the data
    cols_key: cols
    roles: [data, col_header, row_header, empty]   # click cycles through these

Armazenado como {rows, cols, cells: {"r,c": role}}, mantendo apenas as células que não são data.

Relacionado

Para detalhes de implementação, consulte a documentação de origem.