Pular para o conteúdo principal

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.

important

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

is_context_relevant

request, context

Não

O context é diretamente relevante para o request do usuário sem se desviar para tópicos não relacionados?

RelevanceToQuery
RetrievalRelevance

is_safe

content

Não

O content (não) contém material prejudicial, ofensivo ou tóxico?

Safety

is_grounded

request, response, context

Não

O response para o request está fundamentado nas informações fornecidas no context (por exemplo, o aplicativo não está alucinando uma resposta)?

RetrievalGroundedness

is_correct

request, response, expected_facts

Sim

O response ao request está correto em comparação com a verdade básica fornecida expected_facts?

Correctness

is_context_sufficient

request, context, expected_facts

Sim

O site context fornece todas as informações necessárias para gerar uma resposta que inclua a verdade básica expected_facts para o site request fornecido?

RetrievalSufficiency

Pré-requisitos para executar os exemplos

  1. Instale o site MLflow e o pacote necessário

    Bash
    pip install --upgrade "mlflow[databricks]>=3.1.0"
  2. 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.

Python
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.

Python
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.

Python
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])

Resultados da avaliação

Próximas etapas