Schéma de jeu de données d’évaluation dans Microsoft Foundry

Chaque ligne d’un fichier JSONL d’évaluation contient un cas de test d’évaluation. Le scénario d’évaluation détermine sa colonne principale obligatoire, tandis que les évaluateurs sélectionnés peuvent nécessiter des colonnes supplémentaires.

Scénario d’évaluation Colonne principale requise Les colonnes supplémentaires dépendent de
Évaluer une interaction existante messages Évaluateurs sélectionnés.
Évaluer une entrée et une sortie distinctes stockées query, response Évaluateurs sélectionnés.
Évaluer un modèle ou une cible d’agent Saisie capturée dans la colonne query ou messages ; Foundry génère la réponse Évaluateurs sélectionnés.
Évaluer les conversations simulées test_case_description Conseils de simulation facultatifs, tels que desired_num_turns.

Des exigences supplémentaires dépendent des évaluateurs sélectionnés. Par exemple, un évaluateur de similarité textuelle peut exiger ground_truth, l’ancrage peut nécessiter context lorsque query et response sont des chaînes, et un évaluateur d’agent peut exiger tool_definitions. Pour connaître les exigences de l’évaluateur, consultez les évaluateurs intégrés.

Les évaluations basées sur des traces existantes, des ID de réponse ou des requêtes synthétiques générées ne nécessitent pas de jeu de données d’entrée.

Colonnes standard

Les colonnes standard varient selon que l’évaluation utilise des données d’interaction de modèle ou d’agent ou une simulation de conversation.

Colonnes d’évaluation des modèles et des agents

Utilisez un format d’interaction pour chaque cas de test : soit la colonne messages, soit les colonnes distinctes query et response.

Column Obligatoire quand Qu’est-ce qu’il contient ?
messages Utilisation du format messages pour une interaction enregistrée ou une entrée cible de modèle ou d’agent Pour les interactions stockées, les messages d’entrée et de sortie. Pour une cible de modèle ou d’agent, saisissez les messages d’entrée que Foundry envoie à la cible pour générer une réponse. Les messages peuvent inclure des instructions système, l’historique des conversations, le contenu texte typé, les appels d’outils et les résultats de l’outil.
query Utilisation du format de requête et de réponse distincts L’entrée et tout historique d’interaction, fournis sous forme de chaîne de caractères ou de tableau de messages, utilisés comme contexte lors de l’évaluation de response.
response Évaluation d’une réponse stockée ; non requis pour un modèle ou une cible d’agent Réponse évaluée.
ground_truth Un évaluateur compare la sortie avec une réponse de référence Réponse attendue ou référence.
tool_definitions Un évaluateur requiert les schémas des outils disponibles pour l’agent Noms d’outils, descriptions et schémas de paramètres. Cette colonne est facultative pour la plupart des évaluations.
context Un évaluateur spécifique nécessite un contexte de prise en charge distinct Informations complémentaires utilisées principalement avec les valeurs de query de chaîne et de response lorsque le contexte nécessaire n’est pas déjà fourni dans les messages.

Colonnes de simulation de conversation

Column Obligatoire Qu’est-ce qu’il contient ?
test_case_description Oui La situation, l’objectif, les contraintes et le comportement de l’utilisateur que le simulateur doit simuler.
desired_num_turns Non Conseils pour la longueur attendue de la conversation simulée.

Format des messages

La messages colonne est un tableau. Chaque message identifie un rôle et son contenu. Une ligne peut contenir un échange ou une conversation complète à plusieurs tours.

L’exemple d’exécution suivant contient une interaction de prise en charge de compte courte :

{
  "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."}
  ]
}

Cet exemple comprend une réponse d’agent enregistrée, de sorte que le message final a pour rôle assistant. Pour un modèle ou une cible d’agent, terminez le messages tableau par un user message. Foundry envoie les messages à la cible, génère la réponse de l’Assistant suivant et évalue cette réponse.

Pour l’évaluation à l’échelle du tour, les messages précédents servent de contexte à la réponse en cours d’évaluation. Dans cet exemple, un évaluateur peut noter les instructions de réinitialisation de mot de passe finales à l’aide des messages précédents en tant que contexte. Pour l’évaluation au niveau de la conversation, un évaluateur note l’interaction complète. Le paramètre evaluation_level de l’exécution sélectionne le niveau de notation ; la ligne messages reste la même.

Pour plus d’informations, consultez Choisir un niveau d’évaluation.

Structure des messages

Chaque message a un role et content. La content valeur peut être une chaîne ou un tableau d’éléments de contenu typés. Les messages de résultat de l’outil utilisent tool_call_id également pour identifier l’appel d’outil correspondant.

Les messages texte s’alignent sur la structure des messages Réponses OpenAI. Les messages d’entrée peuvent utiliser input_textet la sortie de l’Assistant peut utiliser output_text. L’évaluation Foundry prend également en charge la forme abrégée text ainsi que les éléments de contenu normalisés tool_call et tool_result présentés dans cet article.

[
  {
    "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 Instructions d’application qui sont prioritaires sur les messages utilisateur.
system Instructions de l’agent.
user Messages et demandes utilisateur.
assistant Réponses de l’agent, y compris les appels à des outils.
tool Résultats d’exécution de l’outil.

Messages avec des tableaux de contenu

La content valeur peut également être un tableau d’éléments de contenu typés au lieu d’une chaîne. Cet exemple utilise l’API Responses input_text et les types 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?"}
      ]
    }
  ]
}

Messages avec appels à des outils

Cette variante de l’exemple en cours d’exécution inclut un appel d’outil et son résultat :

{
  "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."}]}
  ]
}

Colonnes spécifiques à l’évaluateur

La plupart des évaluations n’ont besoin que de la colonne d’interaction principale. Ajoutez des colonnes supplémentaires lorsqu’un évaluateur sélectionné les nécessite.

Vérité de terrain

ground_truth est une chaîne contenant la réponse attendue ou de référence. Incluez-le lorsqu’un évaluateur compare le modèle ou la sortie de l’agent avec une réponse connue.

{
  "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."
}

Définitions d’outils

tool_definitions décrit les outils disponibles pour l’agent. Le messages tableau indique les éléments appelés par l’agent. tool_definitions fournit les noms, descriptions et schémas de paramètres de tous les outils que l’agent peut utiliser.

Incluez cette colonne lorsqu’un évaluateur doit comparer le comportement des outils aux outils 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"]
      }
    }
  ]
}

Pour obtenir le schéma complet, consultez le format des définitions d’outils.

Contexte

context contient des informations complémentaires utilisées pour évaluer une réponse. Cette colonne s’avère principalement utile avec les chaînes de caractères query et les valeurs response lorsque les informations nécessaires ne figurent pas déjà dans l’historique des messages. Pour plus d’informations sur cette représentation, consultez le format de requête et de réponse distincts.

Par exemple, un évaluateur de l’ancrage peut utiliser context comme contenu source devant étayer la réponse :

{
  "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."
}

Simulation de conversation

Une amorce de simulation, également appelée scénario de test, décrit une situation que le simulateur doit reproduire en se faisant passer pour l’utilisateur. test_case_description est la seule colonne requise. desired_num_turns est des conseils de simulation facultatifs.

L’exemple suivant reprend l’exemple de connexion à un compte :

{
  "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 utilise un simulateur pour jouer le rôle de l’utilisateur et interagir avec l’agent cible. Les évaluateurs chargés d’évaluer l’ensemble de la conversation notent ensuite la conversation simulée, et non la ligne initiale.

Pour connaître la procédure de simulation, consultez Simuler des conversations. Pour générer des lignes initiales au lieu de les créer, consultez Générer un jeu de données de départ de simulation.

Format de requête et de réponse distincts

Certains évaluateurs et flux de travail utilisent des colonnes response et query distinctes. Ce format reste pris en charge. Les deux colonnes peuvent contenir des chaînes ou des tableaux de messages qui utilisent la même structure que messages.

Utilisez des valeurs de type chaîne pour un cas de test simple en un seul tour qui ne nécessite pas d’historique de conversation ni de détails sur les appels d’outils :

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

S’il query s’agit d’un tableau de messages, il peut inclure des instructions système, des tours précédents, des appels d’outils et des résultats de l’outil. Les évaluateurs utilisent cet historique comme contexte lors du scoring 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."}
  ]
}

Lorsque les valeurs de chaîne query et response nécessitent des informations complémentaires distinctes, ajoutez une colonne context.

Si une exécution d’évaluation appelle une cible de modèle ou d’agent, Foundry génère une nouvelle réponse pour chaque entrée. Tout response déjà stocké dans la ligne est ignoré.

CSV est également pris en charge pour les lignes response et query simples basées sur des chaînes de caractères. Consultez Évaluer un jeu de données CSV.

Quand vous avez besoin d’un mappage de données

Vous pouvez omettre data_mapping lorsqu’un évaluateur compatible utilise les colonnes standard dans votre jeu de données. Ajoutez un mappage dans les cas suivants :

  • Votre jeu de données utilise un nom différent, comme question au lieu de query.
  • Un modèle ou une cible d’agent génère du texte au moment de l’exécution et l’évaluateur requiert une réponse de texte. Par exemple, la cohérence exige que la réponse provienne de {{sample.output_text}}.
  • Une cible d’agent génère une sortie structurée et l’évaluateur nécessite des appels d’outils ou d’autres éléments structurés. Par exemple, le respect de la tâche exige que la réponse soit mise en correspondance à partir de {{sample.output_items}}.
  • Un fichier CSV utilise des en-têtes de colonne non standard.

Pour la syntaxe de mappage de {{item.*}} et {{sample.*}}, avec des exemples exécutables, voir Configurer des évaluateurs et des mappages de données. Pour choisir un flux de travail global, consultez Exécuter des évaluations à partir du Kit de développement logiciel (SDK).

Étape suivante

Configurez une exécution d’évaluation qui utilise votre jeu de données :