Juízes predefinidos, marcadores &
Visão geral
O MLflow fornece juízes com base em pesquisas, agrupados como pontuadores predefinidos, para verificações de qualidade comuns disponíveis como SDKs.
Embora os juízes possam ser usados como APIs autônomas, eles devem ser agrupados em Scorers para serem usados pelo Evaluation Harness e pelo serviço de monitoramento de produção. O MLflow fornece implementações predefinidas de avaliadores, mas o senhor também pode criar avaliadores personalizados que usam as APIs do juiz para casos de uso mais avançados.
Juiz | Entradas de chave | Requer verdade fundamental | O que ele avalia? | Disponível em marcadores predefinidos |
---|---|---|---|---|
| Não | O | ||
| Não | O | ||
| Não | O | ||
| Sim | O | ||
| Sim | O site |
Pré-requisitos para executar os exemplos
-
Instale o site MLflow e o pacote necessário
Bashpip install --upgrade "mlflow[databricks]>=3.1.0"
-
Crie um experimento MLflow seguindo o início rápido de configuração do ambiente.
3 maneiras de usar juízes pré-construídos
Existem 3 maneiras de usar os juízes pré-construídos.
1. Diretamente pelo SDK
Chamar os juízes diretamente por meio do SDK permite que o senhor interaja com os juízes diretamente no seu aplicativo. Por exemplo, talvez você queira verificar a fundamentação de uma resposta antes de devolvê-la ao usuário.
abaixo é um exemplo de uso do juiz is_grounded
SDK. Consulte a página de cada juiz para obter exemplos adicionais.
from mlflow.genai.judges import is_grounded
result = is_grounded(
request="What is the capital of France?",
response="Paris",
context="Paris is the capital of France.",
)
# result is...
# mlflow.entities.Assessment.Feedback(
# rationale="The response asks 'What is the capital of France?' and answers 'Paris'. The retrieved context states 'Paris is the capital of France.' This directly supports the answer given in the response.",
# feedback=FeedbackValue(value=<CategoricalRating.YES: 'yes'>)
# )
result = is_grounded(
request="What is the capital of France?",
response="Paris",
context="Paris is known for its Eiffel Tower.",
)
# result is...
# mlflow.entities.Assessment.Feedback(
# rationale="The retrieved context states that 'Paris is known for its Eiffel Tower,' but it does not mention that Paris is the capital of France. Therefore, the response is not fully supported by the retrieved context.",
# feedback=FeedbackValue(value=<CategoricalRating.NO: 'no'>)
# )
2. Usando por meio dos marcadores pré-construídos
Para aplicativos mais simples, o senhor pode começar com a avaliação usando os pontuadores predefinidos do MLflow.
abaixo é um exemplo de uso do marcador predefinido Correctness
. Consulte a página de cada juiz para ver exemplos adicionais e o esquema de dados Trace necessário para usar seu marcador predefinido.
eval_dataset = [
{
"inputs": {"query": "What is the capital of France?"},
"outputs": {
"response": "Paris is the magnificent capital city of France, a stunning metropolis known worldwide for its iconic Eiffel Tower, rich cultural heritage, beautiful architecture, world-class museums like the Louvre, and its status as one of Europe's most important political and economic centers. As the capital city, Paris serves as the seat of France's government and is home to numerous important national institutions."
},
"expectations": {
"expected_facts": ["Paris is the capital of France."],
},
},
]
from mlflow.genai.scorers import Correctness
eval_results = mlflow.genai.evaluate(data=eval_dataset, scorers=[Correctness])
3. Usando em pontuadorespersonalizados
À medida que a lógica do seu aplicativo e os critérios de avaliação se tornam mais complexos, que o senhor precisa de mais controle sobre os dados passados ao juiz ou que o rastreamento do seu aplicativo não atende aos requisitos do avaliador predefinido, é possível envolver o SDK do juiz em um avaliador personalizado
abaixo é um exemplo para envolver o juiz do is_grounded
SDK em um marcador personalizado.
from mlflow.genai.judges import is_grounded
from mlflow.genai.scorers import scorer
eval_dataset = [
{
"inputs": {"query": "What is the capital of France?"},
"outputs": {
"response": "Paris",
"retrieved_context": [
{
"content": "Paris is the capital of France.",
"source": "wikipedia",
}
],
},
},
]
@scorer
def is_grounded_scorer(inputs: Dict[Any, Any], outputs: Dict[Any, Any]):
return is_grounded(
request=inputs["query"],
response=outputs["response"],
context=outputs["retrieved_context"],
)
eval_results = mlflow.genai.evaluate(data=eval_dataset, scorers=[is_grounded_scorer])
Próximas etapas
- Usar pontuadores predefinidos na avaliação - Começar com métricas de qualidade integradas
- Crie juízes personalizados - Crie juízes adaptados às suas necessidades específicas
- avaliações de execução - Aplique juízes para avaliar sistematicamente sua candidatura