Juge de l'exactitude
Le juge Correctness évalue si la réponse de votre application GenAI est factuellement correcte en la comparant aux informations de vérité terrain fournies (expected_facts ou expected_response). Ce juge LLM intégré est conçu pour évaluer les réponses d’application par rapport aux réponses correctes connues.
Pour plus de détails sur l'API, consultez la documentation MLflow.
Pour une documentation détaillée et des exemples supplémentaires, consultez la documentation du juge de correction MLflow.
Prérequis pour l'exécution des exemples
-
Installez MLflow et les packages requis.
Python%pip install --upgrade "mlflow[databricks]>=3.4.0"
dbutils.library.restartPython() -
Créez une expérience MLflow en suivant le guide de démarrage rapide de configuration de votre environnement.
Exemples d’utilisation
- Invoke directly
- Invoke with evaluate()
from mlflow.genai.scorers import Correctness
correctness_judge = Correctness()
# Example 1: Response contains expected facts
feedback = correctness_judge(
inputs={"request": "What is MLflow?"},
outputs={"response": "MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models."},
expectations={
"expected_facts": [
"MLflow is open-source",
"MLflow is an AI engineering platform"
]
}
)
print(feedback.value) # "yes"
print(feedback.rationale) # Explanation of which facts are supported
# Example 2: Response missing or contradicting facts
feedback = correctness_judge(
inputs={"request": "When was MLflow released?"},
outputs={"response": "MLflow was released in 2017."},
expectations={"expected_facts": ["MLflow was released in June 2018"]}
)
# Example 3: Using expected_response instead of expected_facts
feedback = correctness_judge(
inputs={"request": "What is the capital of France?"},
outputs={"response": "The capital of France is Paris."},
expectations={"expected_response": "Paris is the capital of France."}
)
Le juge Correctness peut être utilisé directement avec le cadre d'évaluation de MLflow.
Exigences :
- Exigences de trace :
inputsetoutputsdoivent se trouver sur le span racine de la Trace - Labels de vérité terrain : requis - vous devez fournir soit
expected_factssoitexpected_responsedans le dictionnaireexpectations
from mlflow.genai.scorers import Correctness
# Create evaluation dataset with ground truth
eval_dataset = [
{
"inputs": {"query": "What is the capital of France?"},
"outputs": {
"response": "Paris is the magnificent capital city of France, known for the Eiffel Tower and rich culture."
},
"expectations": {
"expected_facts": ["Paris is the capital of France."]
},
},
{
"inputs": {"query": "What are the main components of MLflow?"},
"outputs": {
"response": "MLflow has main components including Tracing, Evaluation, Prompt Engineering, and Model Registry."
},
"expectations": {
"expected_facts": [
"MLflow has main components",
"Components include Tracing",
"Components include Evaluation",
"Components include Prompt Engineering",
"Components include Model Registry"
]
},
},
{
"inputs": {"query": "When was MLflow released?"},
"outputs": {
"response": "MLflow was released in 2017 by Databricks."
},
"expectations": {
"expected_facts": ["MLflow was released in June 2018"]
},
}
]
# Run evaluation with Correctness scorer
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
scorers=[
Correctness(
model="databricks:/databricks-gpt-oss-120b", # Optional. Defaults to custom Databricks model.
)
]
)
Alternative : Utilisation de expected_response
Vous pouvez également utiliser expected_response au lieu de expected_facts:
eval_dataset_with_response = [
{
"inputs": {"query": "What is MLflow?"},
"outputs": {
"response": "MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models."
},
"expectations": {
"expected_response": "MLflow is the largest open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize their AI applications."
},
}
]
# Run evaluation with expected_response
eval_results = mlflow.genai.evaluate(
data=eval_dataset_with_response,
scorers=[Correctness()]
)
Utilisez expected_facts plutôt que expected_response pour une évaluation plus flexible — la réponse n'a pas besoin de correspondre mot pour mot, mais de contenir les faits clés.
Sélectionnez le LLM qui alimente le juge
Par default, les juges intégrés utilisent un LLM hébergé par Databricks conçu pour effectuer des évaluations de qualité de l'IA. Vous pouvez modifier le modèle de juge en utilisant l'argument model lorsque vous créez le juge. Le modèle doit être spécifié au format <provider>:/<model-name>, où <provider> est un fournisseur de modèle compatible LiteLLM. Si vous utilisez databricks comme fournisseur de modèle, le nom du modèle est le même que le nom de l'Endpoint de service.
Vous pouvez personnaliser le juge en fournissant un modèle de juge différent :
from mlflow.genai.scorers import Correctness
# Use a different judge model
correctness_judge = Correctness(
model="databricks:/databricks-gpt-5-mini" # Or any LiteLLM-compatible model
)
# Use in evaluation
eval_results = mlflow.genai.evaluate(
data=eval_dataset,
scorers=[correctness_judge]
)
Interpréter les résultats
Le juge renvoie un objet Feedback avec :
value: « oui » si la réponse est correcte, « non » si elle est incorrecterationale** ** : Explication détaillée des faits pris en charge ou manquants
Ressources supplémentaires
- Explorez d'autres juges intégrés – Découvrez d'autres juges d'évaluation de la qualité intégrés
- Créer des juges personnalisés : Créer des juges d'évaluation spécifiques au domaine
- Exécuter des évaluations – Utilisez des juges pour une évaluation complète des applications