Pular para o conteúdo principal

Referência de avaliação e monitoramento

Esta página fornece documentação de referência para conceitos de avaliação e monitoramento do MLflow. Para guia e tutorial, consulte Avaliar e monitorar agentes AI.

dica

Referência de API

Para obter a documentação da API de avaliação e monitoramento do MLflow 3, consulte Referência da API.

Referência rápida

Conceito

Propósito

Uso

Marcadores

Avalie a qualidade do rastreamento

@scorer decorador ou classe Scorer

Juízes

Avaliação baseada no LLM

Embrulhado em marcadores para uso

Arnês de avaliação

execução avaliação off-line

mlflow.genai.evaluate()

Conjunto de dados de avaliação

Teste de gerenciamento de dados

mlflow.genai.datasets

Avaliação execução

Armazene os resultados da avaliação

Criado por harness

Monitoramento da produção

Acompanhamento de qualidade ao vivo

Scorer.register, Scorer.start

Marcadores: mlflow.genai.scorers

Funções que avaliam traços e retornam feedback.

Python
from mlflow.genai.scorers import scorer
from mlflow.entities import Feedback
from typing import Optional, Dict, Any, List

@scorer
def my_custom_scorer(
*, # MLflow calls your scorer with named arguments
inputs: Optional[Dict[Any, Any]], # App's input from trace
outputs: Optional[Dict[Any, Any]], # App's output from trace
expectations: Optional[Dict[str, Any]], # Ground truth (offline only)
trace: Optional[mlflow.entities.Trace] # Complete trace
) -> int | float | bool | str | Feedback | List[Feedback]:
# Your evaluation logic
return Feedback(value=True, rationale="Explanation")

Saiba mais sobre Scorers

Juízes

Os juízes do LLM são um tipo de avaliador do MLflow que usa grandes modelos de linguagem para avaliação de qualidade. Enquanto os avaliadores baseados em código usam lógica programática, os juízes aproveitam as capacidades de raciocínio dos LLMs para avaliar critérios como utilidade, relevância, segurança e muito mais.

Python
from mlflow.genai.scorers import Safety, RelevanceToQuery

# Initialize judges that will assess different quality aspects
safety_judge = Safety() # Checks for harmful, toxic, or inappropriate content
relevance_judge = RelevanceToQuery() # Checks if responses are relevant to user queries

# Run evaluation on your test dataset with multiple judges
mlflow.genai.evaluate(
data=eval_data, # Your test cases (inputs, outputs, optional ground truth)
predict_fn=my_app, # The application function you want to evaluate
scorers=[safety_judge, relevance_judge] # Both judges run on every test case
)

Saiba mais sobre os juízes

Arnês de avaliação: mlflow.genai.evaluate(...)

Orquestra a avaliação off-line durante o desenvolvimento.

Python
import mlflow
from mlflow.genai.scorers import Safety, RelevanceToQuery

results = mlflow.genai.evaluate(
data=eval_dataset, # Test data
predict_fn=my_app, # Your app
scorers=[Safety(), RelevanceToQuery()], # Quality metrics
model_id="models:/my-app/1" # Optional version tracking
)

Saiba mais sobre o Evaluation Harness

Conjunto de dados de avaliação: mlflow.genai.datasets.EvaluationDataset

Dados de teste versionados com verdade básica opcional.

Python
import mlflow.genai.datasets

# Create from production traces
dataset = mlflow.genai.datasets.create_dataset(
uc_table_name="catalog.schema.eval_data"
)

# Add traces
traces = mlflow.search_traces(filter_string="trace.status = 'OK'")
dataset.insert(traces)

# Use in evaluation
results = mlflow.genai.evaluate(data=dataset, ...)

Saiba mais sobre o conjunto de dados de avaliação

Avaliação da execução: mlflow.entities.Run

Resultados da avaliação contendo traços com feedback.

Python
# Access evaluation results
traces = mlflow.search_traces(run_id=results.run_id)

# Filter by feedback
good_traces = traces[traces['assessments'].apply(
lambda x: all(a.value for a in x if a.name == 'Safety')
)]

Saiba mais sobre Avaliação execução

Monitoramento da produção

info

Beta

Este recurso está em Beta.

Avaliação contínua dos aplicativos implantados.

Python
import mlflow
from mlflow.genai.scorers import Safety, ScorerSamplingConfig

# Register the scorer with a name and start monitoring
safety_judge = Safety().register(name="my_safety_judge") # name must be unique to experiment
safety_judge = safety_judge.start(sampling_config=ScorerSamplingConfig(sample_rate=0.7))

Saiba mais sobre o monitoramento da produção