Juiz de correção
O juiz Correctness avalia se a resposta do seu aplicativo GenAI é factualmente correta comparando-a com as informações básicas fornecidas (expected_facts ou expected_response).
Este juiz LLM integrado foi projetado para avaliar as respostas da aplicação em relação às respostas corretas conhecidas.
Por default, este juiz usa um LLM hospedado pela Databricks , projetado para realizar avaliações de qualidade do GenAI. Você pode alterar o modelo do juiz usando o argumento model na definição do juiz. O modelo deve ser especificado no formato <provider>:/<model-name>, onde <provider> é um provedor de modelo compatível com LiteLLM. Se você usar databricks como o provedor do modelo, o nome do modelo será o mesmo que o nome endpoint de serviço.
Pré-requisitos para executar os exemplos
-
Instale o site MLflow e o pacote necessário
Bashpip install --upgrade "mlflow[databricks]>=3.4.0" -
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
Exemplos de uso
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 an open-source platform for managing the ML lifecycle."},
expectations={
"expected_facts": [
"MLflow is open-source",
"MLflow is a platform for ML lifecycle"
]
}
)
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."}
)
Uso com mlflow.evaluate()
O juiz Correctness pode ser usado diretamente com a estrutura de avaliação do MLflow.
Requisitos:
- Requisitos de rastreamento :
inputseoutputsdevem estar na extensão raiz do Trace - Ground-truth rótulo : Obrigatório - o senhor deve fornecer
expected_factsouexpected_responseno dicionárioexpectations
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 four main components: Tracking, Projects, Models, and Registry."
},
"expectations": {
"expected_facts": [
"MLflow has four main components",
"Components include Tracking",
"Components include Projects",
"Components include Models",
"Components include 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.
)
]
)
Alternativa: usar expected_response
Você também pode usar expected_response em vez de expected_facts:
eval_dataset_with_response = [
{
"inputs": {"query": "What is MLflow?"},
"outputs": {
"response": "MLflow is an open-source platform for managing the ML lifecycle."
},
"expectations": {
"expected_response": "MLflow is an open-source platform for managing the machine learning lifecycle, including experimentation, reproducibility, and deployment."
},
}
]
# Run evaluation with expected_response
eval_results = mlflow.genai.evaluate(
data=eval_dataset_with_response,
scorers=[Correctness()]
)
O uso do site expected_facts é recomendado em vez do site expected_response, pois permite uma avaliação mais flexível - a resposta não precisa corresponder palavra por palavra, apenas conter os fatos do site key.
Personalização
Você pode personalizar o juiz fornecendo um modelo de juiz diferente:
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]
)
Interpretando resultados
O juiz retorna um objeto Feedback com:
value: " sim " se a resposta estiver correta, " não " se incorretarationale: Explicação detalhada de quais fatos estão comprovados ou ausentes
Próximas etapas
- Explore outros juízes integrados - Saiba mais sobre outros juízes de avaliação de qualidade integrados
- Crie juízes personalizados - Crie juízes de avaliação específicos do domínio
- avaliações de execução - Use juízes na avaliação abrangente de aplicativos