Pular para o conteúdo principal

Visão geral dos conceitos de avaliação

MLflowpara a GenAI: avaliadores, juízes, conjunto de dados de avaliação e os sistemas que os utilizam.

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

mlflow.genai.create_monitor()

Padrões comuns

Usando vários marcadores juntos

Python
import mlflow
from mlflow.genai.scorers import scorer, Safety, RelevanceToQuery
from mlflow.entities import Feedback

# Combine predefined and custom scorers
@scorer
def custom_business_scorer(outputs):
response = outputs.get("response", "")
# Your business logic
if "company_name" not in response:
return Feedback(value=False, rationale="Missing company branding")
return Feedback(value=True, rationale="Meets business criteria")

# Use same scorers everywhere
scorers = [Safety(), RelevanceToQuery(), custom_business_scorer]

# Offline evaluation
results = mlflow.genai.evaluate(
data=eval_dataset,
predict_fn=my_app,
scorers=scorers
)

# Production monitoring - same scorers!
monitor = mlflow.genai.create_monitor(
endpoint="my-production-endpoint",
scorers=scorers,
sampling_rate=0.1
)

Encadeando os resultados da avaliação

Python
import mlflow
import pandas as pd
from mlflow.genai.scorers import Safety, Correctness

# Run initial evaluation
results1 = mlflow.genai.evaluate(
data=test_dataset,
predict_fn=my_app,
scorers=[Safety(), Correctness()]
)

# Use results to create refined dataset
traces = mlflow.search_traces(run_id=results1.run_id)

# Filter to problematic traces
safety_failures = traces[traces['assessments'].apply(
lambda x: any(a.name == 'Safety' and a.value == 'no' for a in x)
)]

# Re-evaluate with different scorers or updated app
from mlflow.genai.scorers import Guidelines

results2 = mlflow.genai.evaluate(
data=safety_failures,
predict_fn=updated_app,
scorers=[
Safety(),
Guidelines(
name="content_policy",
guidelines="Response must follow our content policy"
)
]
)

Tratamento de erros na avaliação

Python
import mlflow
from mlflow.genai.scorers import scorer
from mlflow.entities import Feedback, AssessmentError

@scorer
def resilient_scorer(outputs, trace=None):
try:
response = outputs.get("response")
if not response:
return Feedback(
value=None,
error=AssessmentError(
error_code="MISSING_RESPONSE",
error_message="No response field in outputs"
)
)
# Your evaluation logic
return Feedback(value=True, rationale="Valid response")
except Exception as e:
# Let MLflow handle the error gracefully
raise

# Use in evaluation - continues even if some scorers fail
results = mlflow.genai.evaluate(
data=dataset,
predict_fn=my_app,
scorers=[resilient_scorer, Safety()]
)

Conceitos

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 os marcadores”

Juízes: mlflow.genai.judges

Avaliadores de qualidade baseados em LLM que devem ser envolvidos em pontuadores.

Python
from mlflow.genai.judges import is_safe, is_relevant
from mlflow.genai.scorers import scorer

# Direct usage
feedback = is_safe(content="Hello world")

# Wrapped in scorer
@scorer
def safety_scorer(outputs):
return is_safe(content=outputs["response"])

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 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: mlflow.genai.create_monitor(...)

Avaliação contínua dos aplicativos implantados.

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

monitor = mlflow.genai.create_monitor(
name="chatbot_monitor",
endpoint="endpoints:/my-chatbot-prod",
scorers=[Safety(), custom_scorer],
sampling_rate=0.1 # 10% of traffic
)

Saiba mais sobre o monitoramento de produção "

fluxo de trabalho

Monitoramento on-line (produção)

Python
# Production app with tracing → Monitor applies scorers → Feedback on traces → Dashboards

avaliação off-line

Avaliação off-line (desenvolvimento)

Python
# Test data → Evaluation harness runs app → Scorers evaluate traces → Results stored

avaliação off-line

Próximas etapas

Continue sua jornada com estas ações recomendadas e o tutorial.

Guia de referência

Explore a documentação detalhada sobre conceitos relacionados.