Schéma d’entrée d’évaluation de l’agent
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article explique le schéma d’entrée requis par l’évaluation de l’agent pour évaluer la qualité, le coût et la latence de votre application.
- Pendant le développement, l’évaluation a lieu hors connexion et un jeu d’évaluation est une entrée requise pour l’évaluation de l’agent.
- Lorsqu’une application est en production, toutes les entrées de l’évaluation de l’agent proviennent de vos tables d’inférence ou journaux de production.
Le schéma d’entrée est identique pour les évaluations en ligne et hors connexion.
Pour plus d’informations générales sur les jeux d’évaluation, consultez Jeux d’évaluation.
Schéma d’entrée d’évaluation
Le tableau suivant montre le schéma d’entrée de l’évaluation de l’agent. Les deux dernières colonnes de la table font référence à la façon dont l’entrée est fournie à l’appel mlflow.evaluate()
. Découvrez comment fournir une entrée à une exécution d’évaluation pour plus d’informations.
Colonne | Type de données | Description | Application passée en tant qu’argument d’entrée | Sorties précédemment générées fournies |
---|---|---|---|---|
request_id | string | Identificateur unique de la requête. | Facultatif | Facultatif |
requête | Consultez Schéma pour la requête. | Entrée dans l’application à évaluer, question ou requête de l’utilisateur. Par exemple, {'messages': [{"role": "user", "content": "What is RAG"}]} ou « Qu’est-ce que RAG ? ». Lorsqu’elle request est fournie sous forme de chaîne, elle sera transformée messages avant son passage à votre agent. |
Requis | Requis |
response | string | Réponse générée par l’application en cours d’évaluation. | Générée par l’évaluation de l’agent | facultatif. Si non disponible, alors dérivée de la Trace. Soit response ou trace est nécessaire. |
expected_facts | tableau de chaînes | Liste des faits attendus dans la sortie du modèle. Consultez les instructions expected_facts. | Facultatif | Facultatif |
expected_response | string | Réponse de référence (correcte) pour la requête d’entrée. Consultez les instructions expected_response. | Facultatif | Facultatif |
expected_retrieved_context | tableau | Tableau d’objets contenant le contexte récupéré attendu pour la requête (si l’application inclut une étape de récupération). Schéma de tableau | Facultatif | Facultatif |
retrieved_context | tableau | Résultats de récupération générés par le récupérateur dans la chaîne en cours d’évaluation. Si l’application contient plusieurs étapes de récupération, il s’agit des résultats de récupération de la dernière étape (chronologiquement dans la trace). Schéma de tableau | Générée par l’évaluation de l’agent | facultatif. Si non disponible, alors dérivée de la Trace fournie. |
trace | Chaîne JSON de Trace MLflow | La trace MLflow de l’exécution de l’application sur la requête correspondante. | Générée par l’évaluation de l’agent | facultatif. Soit response ou trace est nécessaire. |
Instructions expected_facts
Le expected_facts
champ spécifie la liste des faits attendus dans une réponse de modèle correcte pour la demande d’entrée spécifique. Autrement dit, une réponse de modèle est jugée correcte si elle contient ces faits, quelle que soit la façon dont la réponse est formulée.
L’inclusion uniquement des faits requis et l’abandon des faits qui ne sont pas strictement requis dans la réponse permet à l’évaluation de l’agent de fournir un signal plus robuste sur la qualité de la sortie.
Vous pouvez spécifier au maximum l’un des éléments suivants expected_facts
expected_response
: Si vous spécifiez les deux, une erreur est signalée. Databricks recommande d’utiliser expected_facts
, car il s’agit d’une directive plus spécifique qui aide le juge d’évaluation de l’agent plus efficacement à la qualité des réponses générées.
Instructions expected_response
Le expected_response
champ contient une réponse entièrement formée qui représente une référence pour les réponses de modèle correctes. Autrement dit, une réponse de modèle est jugée correcte si elle correspond au contenu d’informations dans expected_response
. En revanche, expected_facts
répertorie uniquement les faits requis pour apparaître dans une réponse correcte et n’est pas une réponse de référence entièrement formée.
Similaire à expected_facts
, expected_response
ne doit contenir que l’ensemble minimal de faits requis pour une réponse correcte. Inclure uniquement les informations nécessaires et laisser de côté celles qui ne sont pas strictement requises dans la réponse permet à l’évaluation des agents de fournir un signal plus solide sur la qualité de la sortie.
Vous pouvez spécifier au maximum l’un des éléments suivants expected_facts
expected_response
: Si vous spécifiez les deux, une erreur est signalée. Databricks recommande d’utiliser expected_facts
, car il s’agit d’une directive plus spécifique qui aide le juge d’évaluation de l’agent plus efficacement à la qualité des réponses générées.
Schéma pour la requête
Le schéma de requête peut être l’un des suivants :
- Schéma d’achèvement de conversation OpenAI. Le schéma d’achèvement de conversation OpenAI doit avoir un tableau d’objets en tant que
messages
paramètre. Lemessages
champ peut encoder la conversation complète. - Si l’agent prend en charge le schéma d’achèvement de conversation OpenAI, vous pouvez passer une chaîne simple. Ce format prend uniquement en charge les conversations à tour unique. Les chaînes simples sont converties au
messages
format avant"role": "user"
d’être passées à votre agent. Par exemple, une chaîne"What is MLflow?"
simple est convertie en{"messages": [{"role": "user", "content": "What is MLflow?"}]}
avant d’être passée à votre agent. SplitChatMessagesRequest
. Un champ de chaînequery
pour la demande la plus récente et un champhistory
facultatif qui encode les tours précédents de la conversation.
Pour les applications de conversation multitours, utilisez la deuxième ou la troisième option ci-dessus.
L’exemple suivant montre les trois options de la même colonne request
du jeu de données d’évaluation :
import pandas as pd
data = {
"request": [
# Plain string. Plain strings are transformed to the `messages` format before being passed to your agent.
"What is the difference between reduceByKey and groupByKey in Spark?",
# OpenAI chat completion schema. Use the `messages` field for a single- or multi-turn chat.
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# SplitChatMessagesRequest. Use the `query` and `history` fields for a single- or multi-turn chat.
{
"query": "Explain broadcast variables in Spark. How do they enhance performance?",
"history": [
{
"role": "user",
"content": "What are broadcast variables?"
},
{
"role": "assistant",
"content": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine."
}
]
}
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question"
]
}
eval_dataset = pd.DataFrame(data)
Schéma pour les tableaux dans l’entrée d’évaluation
Le schéma des tableaux expected_retrieved_context
et retrieved_context
est présenté dans le tableau suivant :
Colonne | Type de données | Description | Application passée en tant qu’argument d’entrée | Sorties générées précédemment fournies |
---|---|---|---|---|
content | string | Contenu du contexte récupéré. Chaîne dans n’importe quel format, tel que HTML, texte brut ou Markdown. | Facultatif | Facultatif |
doc_uri | string | Identificateur unique (URI) du document parent d’où provient le bloc. | Requis | Requis |
Métriques calculées
Les colonnes du tableau suivant indiquent les données incluses dans l’entrée et ✓
indiquent que la métrique est prise en charge lorsque ces données sont fournies.
Pour plus d’informations sur la mesure de ces métriques, consultez Comment la qualité, le coût et la latence sont évalués par l’évaluation de l’agent.
Mesures calculées | request |
request et expected_response |
request , expected_response et expected_retrieved_context |
request et expected_retrieved_context |
---|---|---|---|---|
response/llm_judged/relevance_to_query/rating |
✓ | ✓ | ✓ | |
response/llm_judged/safety/rating |
✓ | ✓ | ✓ | |
response/llm_judged/groundedness/rating |
✓ | ✓ | ✓ | |
retrieval/llm_judged/chunk_relevance_precision |
✓ | ✓ | ✓ | |
agent/total_token_count |
✓ | ✓ | ✓ | |
agent/input_token_count |
✓ | ✓ | ✓ | |
agent/output_token_count |
✓ | ✓ | ✓ | |
response/llm_judged/correctness/rating |
✓ | ✓ | ||
retrieval/llm_judged/context_sufficiency/rating |
✓ | ✓ | ||
retrieval/ground_truth/document_recall |
✓ | ✓ |