Dépanner l'évaluation (MLflow 2)
Cet article décrit les problèmes que vous pourriez rencontrer lors de l'évaluation d'applications d'IA à l'aide d'Agent Evaluation, et comment les résoudre.
Erreurs du modèle
mlflow.evaluate(..., model=<model>, model_type="databricks-agent") Appelle le modèle fourni sur chaque ligne de l'ensemble d'évaluation. L'appel du modèle pourrait échouer, par exemple, si le modèle génératif est temporairement indisponible. Si cela se produit, la sortie comprend les lignes suivantes, où n est le nombre total de lignes évaluées et k est le nombre de lignes comportant une erreur :
**Evaluation completed**
- k/n contain model errors
Cette erreur apparaît dans l'interface utilisateur MLFlow lorsque vous affichez les détails d'une ligne particulière de l'ensemble d'évaluation.

Vous pouvez également afficher l'erreur dans le DataFrame des résultats d'évaluation. Dans ce cas, vous voyez des lignes dans les résultats d'évaluation contenant model_error_message. Pour afficher ces erreurs, utilisez l'extrait de code suivant :
result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
display(eval_results_df[eval_results_df['model_error_message'].notna()][['request', 'model_error_message']])

Si l'erreur est récupérable, vous pouvez relancer l'évaluation uniquement sur les lignes défectueuses :
result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
# Filter rows where 'model_error_message' is not null and select columns required for evaluation.
input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
eval_results_df['model_error_message'].notna(),
[col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
data=retry_df,
model=<your model>,
model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']
merged_results_df = eval_results_df.set_index('request_id').combine_first(
retry_result.tables['eval_results'].set_index('request_id')
).reset_index()
# Reorder the columns to match the original eval_results_df column order
merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)
La réexécution de mlflow.evaluate Logs des résultats et agrège les métriques à une nouvelle exécution MLflow. Le DataFrame fusionné généré ci-dessus peut être consulté dans le Notebook.
Erreurs de juge
mlflow.evaluate(..., model_type="databricks-agent") évalue les sorties du modèle à l’aide de juges intégrés et, facultativement, de vos juges personnalisés. Les juges peuvent échouer à évaluer une ligne de données d’entrée, par exemple en raison de TOKEN_RATE_LIMIT_EXCEEDED ou MISSING_INPUT_FIELDS.
Si un juge ne parvient pas à évaluer une ligne, le résultat inclut les lignes suivantes : n est le nombre total de lignes évaluées et k est le nombre de lignes en erreur :
**Evaluation completed**
- k/n contain judge errors
Cette erreur sera affichée dans l'interface utilisateur MLFlow. En cliquant sur une évaluation particulière, les erreurs du juge seront affichées sous les noms d'évaluation correspondants.

Dans ce cas, vous voyez des lignes dans les résultats de l'évaluation contenant <judge_name>/error_message, par exemple, response/llm_judged/faithfulness/error_message. Vous pouvez afficher ces erreurs en utilisant l'extrait de code suivant :
result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judged' in col and 'error_message' in col]
columns_to_display = ['request_id', 'request'] + llm_judges_error_columns
# Display the filtered DataFrame
display(eval_results_df[eval_results_df[llm_judges_error_columns].notna().any(axis=1)][columns_to_display])

Une fois l'erreur résolue ou si elle est réparable, vous pouvez réexécuter l'évaluation uniquement sur les lignes présentant des échecs en suivant cet exemple :
result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judges' in col and 'error_message' in col]
input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
eval_results_df[llm_judges_error_columns].notna().any(axis=1),
[col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
data=retry_df,
model=<your model>,
model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']
merged_results_df = eval_results_df.set_index('request_id').combine_first(
retry_result_df.set_index('request_id')
).reset_index()
merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)
La réexécution de mlflow.evaluate Logs des résultats et agrège les métriques à une nouvelle exécution MLflow. Le DataFrame fusionné généré ci-dessus peut être consulté dans le Notebook.
Erreurs courantes
Si vous continuez à rencontrer ces codes d'erreur, contactez l'équipe Databricks chargée de votre compte. La liste suivante répertorie les définitions des codes d'erreur courants et comment les résoudre.
Code d'erreur | Ce que cela signifie | Résolution |
|---|---|---|
1001 | Champs de saisie manquants | Vérifiez et mettez à jour les champs de saisie requis. |
1002 | Champs manquants dans les invites « few-shot » | Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot. |
1005 | Champs non valides dans les prompts few-shot | Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot. |
3001 | Délai d'expiration de la dépendance | Vérifiez les Logs et essayez de réexécuter votre agent. Contactez votre équipe de compte Databricks si le délai d’expiration persiste. |
3003 | Limite de débit des dépendances dépassée | Contactez l'équipe de votre compte Databricks. |
3004 | Limite de débit des jetons dépassée | Contactez l'équipe de votre compte Databricks. |
3006 | Les fonctionnalités d'IA optimisées par les partenaires sont désactivées. | Activer les fonctionnalités d'IA optimisées par les partenaires. Consultez les informations concernant les modèles alimentant les juges LLM. |