Esquema del conjunto de datos de evaluación en Microsoft Foundry

Cada línea de un archivo JSONL de evaluación contiene un caso de prueba de evaluación. El escenario de evaluación determina su columna principal requerida, mientras que los evaluadores seleccionados pueden requerir columnas auxiliares.

Escenario de evaluación Columna principal requerida Las columnas adicionales dependen de
Evaluación de una interacción existente messages Evaluadores seleccionados.
Evaluación de una entrada y salida independientes almacenadas query, response Evaluadores seleccionados.
Evaluación de un modelo o destino del agente Entrada introducida en la columna messages o query; Foundry genera la respuesta. Evaluadores seleccionados.
Evaluación de conversaciones simuladas test_case_description Instrucciones de simulación opcionales, como desired_num_turns.

Los requisitos adicionales dependen de los evaluadores seleccionados. Por ejemplo, un evaluador de similitud textual puede requerir ground_truth, la fundamentación puede requerir context cuando query y response son cadenas, y un evaluador de agente puede requerir tool_definitions. Para conocer los requisitos del evaluador, consulte Evaluadores integrados.

Las evaluaciones basadas en seguimientos existentes, identificadores de respuesta o consultas sintéticas generadas no requieren un conjunto de datos de entrada.

Columnas estándar

Las columnas estándar dependen de si la evaluación usa datos de interacción del modelo o agente o simulación de conversación.

Columnas de evaluación de modelos y agentes

Utilice un formato de interacción para cada caso de prueba: o bien la columna messages, o bien las columnas independientes response y query.

Columna Obligatorio cuando Qué contiene
messages Uso del formato messages para una interacción almacenada, un modelo o una entrada de destino de agente Para las interacciones almacenadas, los mensajes de entrada y de salida. Para un destino de modelo o agente, introduzca los mensajes que Foundry envía al destino para generar una respuesta. Los mensajes pueden incluir instrucciones del sistema, historial de conversaciones, contenido de texto escrito, llamadas a herramientas y resultados de herramientas.
query Usar el formato de consulta y respuesta independientes La entrada y cualquier historial de interacción, proporcionados como una cadena o un array de mensajes, que se usan como contexto al asignar una puntuación a response.
response Evaluación de una respuesta almacenada; no es necesario para un modelo o destino del agente Respuesta que se va a evaluar.
ground_truth Un evaluador compara la salida con una respuesta de referencia. Respuesta esperada o de referencia.
tool_definitions Un evaluador requiere los esquemas de las herramientas disponibles para el agente. Nombres de herramientas, descripciones y esquemas de parámetros. Esta columna es opcional para la mayoría de las evaluaciones.
context Un evaluador específico requiere un contexto auxiliar independiente Información de apoyo que se utiliza principalmente con los valores de cadena query y response cuando el contexto necesario todavía no se refleja en los mensajes.

Columnas de simulación de conversación

Columna Obligatorio Qué contiene
test_case_description La situación, el objetivo, las restricciones y el comportamiento del usuario que el simulador debe representar.
desired_num_turns No Guía para la longitud esperada de la conversación simulada.

Formato de mensajes

La messages columna es una matriz. Cada mensaje identifica un rol y su contenido. Una fila puede contener un intercambio o una conversación completa de varios turnos.

El siguiente ejemplo contiene una breve interacción con el soporte de cuentas:

{
  "messages": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": "What error message do you see?"},
    {"role": "user", "content": "It says my password is incorrect."},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page. If the reset email doesn't arrive, check your spam folder or contact account support."}
  ]
}

Este ejemplo incluye una respuesta almacenada de un agente, por lo que el mensaje final tiene el rol assistant. Para un modelo o un objetivo de agente, finalice el messages array con un mensaje user. Foundry envía los mensajes al destino, genera la siguiente respuesta del asistente y evalúa esa respuesta.

Para la evaluación por turno, los mensajes anteriores proporcionan contexto para la respuesta que se evalúa. En este ejemplo, un evaluador puede puntuar la guía de restablecimiento de contraseña final mediante el uso de los mensajes anteriores como contexto. Para la evaluación de nivel de conversación, un evaluador puntúa la interacción completa. El ajuste evaluation_level en la ejecución determina el nivel de puntuación; la fila messages sigue igual.

Para obtener más información, vea Elegir un nivel de evaluación.

Estructura de mensajes

Cada mensaje tiene un role y content. El valor content puede ser una cadena o un array de elementos de contenido tipado. Los mensajes de resultado de la herramienta también usan tool_call_id para identificar la llamada a la herramienta correspondiente.

Los mensajes de texto se ajustan a la estructura de mensajes de OpenAI Responses. Los mensajes de entrada pueden usar input_text, y la salida del asistente puede usar output_text. La evaluación de Foundry también admite la forma abreviada text y los elementos de contenido normalizados tool_call y tool_result que se muestran en este artículo.

[
  {
    "role": "developer" | "system" | "user" | "assistant" | "tool",
    "tool_call_id": "string",              // For role "tool"
    "content": "string" | [                // String or content-item array
      {
        "type": "text" | "input_text" | "output_text" | "tool_call" | "tool_result",
        "text": "string",                  // For text content
        "tool_call_id": "string",          // When type is tool_call
        "name": "string",                  // Tool name for tool_call
        "arguments": { ... },              // Tool arguments for tool_call
        "tool_result": { ... }             // Result for tool_result
      }
    ]
  }
]
Role Description
developer Instrucciones de aplicación que tienen prioridad sobre los mensajes de usuario.
system Instrucciones del agente.
user Mensajes y solicitudes de usuario.
assistant Respuestas del agente, incluidas las llamadas a herramientas.
tool Resultados de ejecución de herramientas.

Mensajes con matrices de contenido

El valor content también puede ser un array de elementos de contenido tipados en lugar de una cadena. En este ejemplo se usan la API Responses input_text y los tipos output_text:

{
  "messages": [
    {
      "role": "developer",
      "content": [
        {"type": "input_text", "text": "You are an account support assistant."}
      ]
    },
    {
      "role": "user",
      "content": [
        {"type": "input_text", "text": "I can't sign in to my account."}
      ]
    },
    {
      "role": "assistant",
      "content": [
        {"type": "output_text", "text": "What error message do you see?"}
      ]
    }
  ]
}

Mensajes con llamadas a herramientas

Esta variación del ejemplo en ejecución incluye una llamada a herramienta y su resultado:

{
  "messages": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": [{"type": "tool_call", "tool_call_id": "call_123", "name": "get_sign_in_guidance", "arguments": {"error": "incorrect password"}}]},
    {"role": "tool", "tool_call_id": "call_123", "content": [{"type": "tool_result", "tool_result": {"recommended_action": "password reset"}}]},
    {"role": "assistant", "content": [{"type": "text", "text": "Use the password-reset link on the sign-in page. If the reset email doesn't arrive, check your spam folder or contact account support."}]}
  ]
}

Columnas específicas del evaluador

La mayoría de las evaluaciones solo necesitan la columna de interacción principal. Agregue columnas auxiliares cuando un evaluador seleccionado los requiera.

Verdad de referencia

ground_truth es una cadena que contiene la respuesta esperada o de referencia. Inclúyelo cuando un evaluador compare la salida del modelo o del agente con una respuesta conocida.

{
  "messages": [
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ],
  "ground_truth": "Direct the user to reset their password from the sign-in page."
}

Definiciones de herramientas

tool_definitions describe las herramientas disponibles para el agente. La messages matriz muestra lo que llamó el agente. tool_definitions proporciona los nombres, descripciones y esquemas de parámetros de todas las herramientas que el agente podría usar.

Incluya esta columna cuando un evaluador necesite comparar el comportamiento de las herramientas con las herramientas que estaban disponibles.

{
  "messages": [
    {"role": "user", "content": "I can't sign in to my account."},
    {"role": "assistant", "content": [{"type": "tool_call", "tool_call_id": "call_123", "name": "get_sign_in_guidance", "arguments": {"error": "incorrect password"}}]},
    {"role": "tool", "tool_call_id": "call_123", "content": [{"type": "tool_result", "tool_result": {"recommended_action": "password reset"}}]},
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ],
  "tool_definitions": [
    {
      "name": "get_sign_in_guidance",
      "description": "Get troubleshooting guidance for a sign-in error.",
      "parameters": {
        "type": "object",
        "properties": {
          "error": {"type": "string"}
        },
        "required": ["error"]
      }
    }
  ]
}

Para obtener el esquema completo, consulte Formato de definiciones de herramientas.

Contexto

context contiene información auxiliar que se usa para evaluar una respuesta. Esta columna resulta especialmente útil con valores de cadena query y response cuando la información necesaria todavía no está reflejada en el historial de mensajes. Para obtener más información sobre esta representación, consulte Formato de consulta y respuesta independientes.

Por ejemplo, un evaluador de fundamentación puede usar context como material fuente que debe respaldar la respuesta:

{
  "query": "How can I reset my password?",
  "response": "Use the password-reset link on the sign-in page.",
  "context": "Users can reset their password from the sign-in page."
}

Simulación de conversación

Una semilla de simulación, también denominada escenario de prueba, describe una situación que el simulador debe representar como si fuera el usuario. test_case_description es la única columna necesaria. desired_num_turns es una guía de simulación opcional.

La siguiente semilla continúa con el ejemplo de inicio de sesión en la cuenta:

{
  "test_case_description": "Act as a user who can't sign in and initially provides little detail. After the agent asks a clarifying question, explain that your password is being rejected. Continue until the agent gives clear password-reset guidance.",
  "desired_num_turns": 4
}

Foundry usa un simulador para desempeñar el rol del usuario e interactuar con el agente de destino. Los evaluadores a nivel de conversación puntúan entonces la conversación simulada, no la fila de la semilla.

Para ver el procedimiento de simulación, consulte Simulate conversations (Simular conversaciones). Para generar filas de inicialización en lugar de crearlas manualmente, vea Generar un conjunto de datos de inicialización de simulación.

Formato de consulta y respuesta independientes

Algunos evaluadores y flujos de trabajo usan columnas independientes response y query. Este formato sigue siendo compatible. Ambas columnas pueden contener cadenas o arrays de mensajes que usan la misma estructura que messages.

Use valores de cadena para un caso de prueba simple de un solo turno que no necesite el historial de conversaciones ni los detalles de la llamada a la herramienta:

{"query":"I can't sign in to my account.","response":"Use the password-reset link on the sign-in page."}

Si query es una matriz de mensajes, puede incluir instrucciones del sistema, turnos anteriores, llamadas a herramientas y resultados de herramientas. Los evaluadores usan este historial como contexto al puntuar response.

{
  "query": [
    {"role": "system", "content": "You are an account support assistant."},
    {"role": "user", "content": "I can't sign in."},
    {"role": "assistant", "content": "What error do you see?"},
    {"role": "user", "content": "It says my password is incorrect."}
  ],
  "response": [
    {"role": "assistant", "content": "Use the password-reset link on the sign-in page."}
  ]
}

Cuando los valores de cadena query y response necesiten información complementaria independiente, agregue una columna context.

Si una ejecución de evaluación invoca un modelo o un objetivo de agente, Foundry genera una nueva respuesta para cada entrada. Se omite cualquier response ya almacenado en la fila.

CSV también es compatible con response y query filas basadas en cadenas simples. Consulte Evaluación de un conjunto de datos CSV.

Cuando necesites un mapeo de datos

Puede omitir data_mapping cuando un evaluador compatible usa las columnas estándar del conjunto de datos. Añade una asignación en los siguientes casos:

  • El conjunto de datos usa un nombre diferente, como question en lugar de query.
  • Un destino de modelo o agente genera texto en tiempo de ejecución y el evaluador requiere una respuesta de texto. Por ejemplo, Coherence requiere que la respuesta se asigne desde {{sample.output_text}}.
  • Un objetivo de agente genera una salida estructurada y el evaluador requiere invocaciones de herramientas u otros elementos estructurados. Por ejemplo, Task Adherence requiere que la respuesta se asigne a partir de {{sample.output_items}}.
  • Un archivo CSV usa encabezados de columna no estándar.

Para conocer la sintaxis de asignación de {{item.*}} y {{sample.*}}, con ejemplos ejecutables, consulta Configuración de evaluadores y asignaciones de datos. Para elegir un flujo de trabajo general, consulte Ejecución de evaluaciones desde el SDK.

Paso siguiente

Configure una ejecución de evaluación que use el conjunto de datos: