rótulo Schemas
Os esquemas de rótulo definem as perguntas específicas que os especialistas de domínio respondem ao rótulo de traços existentes no aplicativo Review. Eles estruturam o processo de coleta de feedback, garantindo informações consistentes e relevantes para a avaliação do seu aplicativo GenAI.
Os esquemas de rótulo só se aplicam ao uso do Review App para rótulo de traces existentes e não ao uso do Review App para testar novas versões de aplicativos na UI de bate-papo.
Como funcionam os esquemas de rótulos
Ao criar uma rótulo Session, o senhor a associa a um ou mais rótulo Schemas. Cada esquema representa um Feedback
ou Expectation
Assessment
que é anexado a um rastreamento do MLflow.
Os esquemas controlam:
- A pergunta mostrada aos revisores
- O método de entrada (dropdown, caixa de texto, etc.)
- Regras e restrições de validação
- Instruções e comentários opcionais
rótulo Os nomes dos esquemas devem ser exclusivos em cada MLflow Experiment. Você não pode ter dois esquemas com o mesmo nome no mesmo experimento, mas você pode reutilizar nomes de esquemas em experimentos diferentes.
rótulo Schemas para casos de uso comuns
O MLflow fornece nomes de esquemas predefinidos para os avaliadores predefinidos que usam expectativas. O senhor pode criar esquemas personalizados usando esses nomes para garantir a compatibilidade com a funcionalidade de avaliação integrada.
-
Funciona com o marcador de diretrizes
GUIDELINES
: Coleta as instruções ideais que o aplicativo GenAI deve seguir para uma solicitação
-
Funciona com o marcador de exatidão
EXPECTED_FACTS
: Coleta declarações factuais que devem ser incluídas para serem corretasEXPECTED_RESPONSE
: Coleta a resposta completa e verdadeira
Criação de esquemas para casos de uso comuns
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import LabelSchemaType, InputTextList, InputText
# Schema for collecting expected facts
expected_facts_schema = schemas.create_label_schema(
name=schemas.EXPECTED_FACTS,
type=LabelSchemaType.EXPECTATION,
title="Expected facts",
input=InputTextList(max_length_each=1000),
instruction="Please provide a list of facts that you expect to see in a correct response.",
overwrite=True
)
# Schema for collecting guidelines
guidelines_schema = schemas.create_label_schema(
name=schemas.GUIDELINES,
type=LabelSchemaType.EXPECTATION,
title="Guidelines",
input=InputTextList(max_length_each=500),
instruction="Please provide guidelines that the model's output is expected to adhere to.",
overwrite=True
)
# Schema for collecting expected response
expected_response_schema = schemas.create_label_schema(
name=schemas.EXPECTED_RESPONSE,
type=LabelSchemaType.EXPECTATION,
title="Expected response",
input=InputText(),
instruction="Please provide a correct agent response.",
overwrite=True
)
Criação de esquemas de rótulos personalizados
Crie esquemas personalizados para coletar feedback específico para seu domínio. O senhor pode criar esquemas por meio da UI do MLflow ou programaticamente usando o SDK.
Lembre-se de que os nomes dos esquemas devem ser exclusivos na experiência atual do MLflow. Escolha nomes descritivos que indiquem claramente a finalidade de cada esquema.
Criação de esquemas por meio da interface do usuário
Navegue até o rótulo tab na UI MLflow para criar esquemas visualmente. Isso fornece uma interface intuitiva para definir perguntas, tipos de entrada e regras de validação sem escrever código.
Criando esquemas programaticamente
Todos os esquemas exigem um nome, tipo, título e especificação de entrada.
Criação de esquema básico
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import InputCategorical, InputText
# Create a feedback schema for rating response quality
quality_schema = schemas.create_label_schema(
name="response_quality",
type="feedback",
title="How would you rate the overall quality of this response?",
input=InputCategorical(options=["Poor", "Fair", "Good", "Excellent"]),
instruction="Consider accuracy, relevance, and helpfulness when rating."
)
Tipos de esquema
Escolha entre dois tipos de esquema:
feedback
: avaliações subjetivas, como avaliações, preferências ou opiniõesexpectation
: Verdades básicas objetivas, como respostas corretas ou comportamento esperado
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import InputCategorical, InputTextList
# Feedback schema for subjective assessment
tone_schema = schemas.create_label_schema(
name="response_tone",
type="feedback",
title="Is the response tone appropriate for the context?",
input=InputCategorical(options=["Too formal", "Just right", "Too casual"]),
enable_comment=True # Allow additional comments
)
# Expectation schema for ground truth
facts_schema = schemas.create_label_schema(
name="required_facts",
type="expectation",
title="What facts must be included in a correct response?",
input=InputTextList(max_count=5, max_length_each=200),
instruction="List key facts that any correct response must contain."
)
Gerenciando esquemas de rótulos
Use as funções do SDK para gerenciar seus esquemas de forma programática:
Recuperando esquemas
import mlflow.genai.label_schemas as schemas
# Get an existing schema
schema = schemas.get_label_schema("response_quality")
print(f"Schema: {schema.name}")
print(f"Type: {schema.type}")
print(f"Title: {schema.title}")
Atualizando esquemas
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import InputCategorical
# Update by recreating with overwrite=True
updated_schema = schemas.create_label_schema(
name="response_quality",
type="feedback",
title="Rate the response quality (updated question)",
input=InputCategorical(options=["Excellent", "Good", "Fair", "Poor", "Very Poor"]),
instruction="Updated: Focus on factual accuracy above all else.",
overwrite=True # Replace existing schema
)
Excluindo esquemas
import mlflow.genai.label_schemas as schemas
# Remove a schema that's no longer needed
schemas.delete_label_schema("old_schema_name")
Tipos de entrada para esquemas personalizados
O MLflow é compatível com cinco tipos de entrada para coletar diferentes tipos de feedback:
Dropdown de seleção única (InputCategorical
)
Use para opções mutuamente exclusivas:
from mlflow.genai.label_schemas import InputCategorical
# Rating scale
rating_input = InputCategorical(
options=["1 - Poor", "2 - Below Average", "3 - Average", "4 - Good", "5 - Excellent"]
)
# Binary choice
safety_input = InputCategorical(options=["Safe", "Unsafe"])
# Multiple categories
error_type_input = InputCategorical(
options=["Factual Error", "Logical Error", "Formatting Error", "No Error"]
)
Menu suspenso de seleção múltipla (InputCategoricalList
)
Use quando várias opções puderem ser selecionadas:
from mlflow.genai.label_schemas import InputCategoricalList
# Multiple error types can be present
errors_input = InputCategoricalList(
options=[
"Factual inaccuracy",
"Missing context",
"Inappropriate tone",
"Formatting issues",
"Off-topic content"
]
)
# Multiple content types
content_input = InputCategoricalList(
options=["Technical details", "Examples", "References", "Code samples"]
)
Texto em formato livre (InputText
)
Use para respostas abertas:
from mlflow.genai.label_schemas import InputText
# General feedback
feedback_input = InputText(max_length=500)
# Specific improvement suggestions
improvement_input = InputText(
max_length=200 # Limit length for focused feedback
)
# Short answers
summary_input = InputText(max_length=100)
Várias entradas de texto (InputTextList
)
Use para coletar listas de itens de texto:
from mlflow.genai.label_schemas import InputTextList
# List of factual errors
errors_input = InputTextList(
max_count=10, # Maximum 10 errors
max_length_each=150 # Each error description limited to 150 chars
)
# Missing information
missing_input = InputTextList(
max_count=5,
max_length_each=200
)
# Improvement suggestions
suggestions_input = InputTextList(max_count=3) # No length limit per item
Entrada numérica (InputNumeric
)
Use para classificações ou pontuações numéricas:
from mlflow.genai.label_schemas import InputNumeric
# Confidence score
confidence_input = InputNumeric(
min_value=0.0,
max_value=1.0
)
# Rating scale
rating_input = InputNumeric(
min_value=1,
max_value=10
)
# Cost estimate
cost_input = InputNumeric(min_value=0) # No maximum limit
Exemplos completos
Avaliação do atendimento ao cliente
Aqui está um exemplo abrangente para avaliar as respostas do atendimento ao cliente:
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import (
InputCategorical,
InputCategoricalList,
InputText,
InputTextList,
InputNumeric
)
# Overall quality rating
quality_schema = schemas.create_label_schema(
name="service_quality",
type="feedback",
title="Rate the overall quality of this customer service response",
input=InputCategorical(options=["Excellent", "Good", "Average", "Poor", "Very Poor"]),
instruction="Consider helpfulness, accuracy, and professionalism.",
enable_comment=True
)
# Issues identification
issues_schema = schemas.create_label_schema(
name="response_issues",
type="feedback",
title="What issues are present in this response? (Select all that apply)",
input=InputCategoricalList(options=[
"Factually incorrect information",
"Unprofessional tone",
"Doesn't address the question",
"Too vague or generic",
"Contains harmful content",
"No issues identified"
]),
instruction="Select all issues you identify. Choose 'No issues identified' if the response is problem-free."
)
# Expected resolution steps
resolution_schema = schemas.create_label_schema(
name="expected_resolution",
type="expectation",
title="What steps should be included in the ideal resolution?",
input=InputTextList(max_count=5, max_length_each=200),
instruction="List the key steps a customer service rep should take to properly resolve this issue."
)
# Confidence in assessment
confidence_schema = schemas.create_label_schema(
name="assessment_confidence",
type="feedback",
title="How confident are you in your assessment?",
input=InputNumeric(min_value=1, max_value=10),
instruction="Rate from 1 (not confident) to 10 (very confident)"
)
Revisão de informações médicas
Exemplo de avaliação de respostas de informações médicas:
import mlflow.genai.label_schemas as schemas
from mlflow.genai.label_schemas import InputCategorical, InputTextList, InputNumeric
# Safety assessment
safety_schema = schemas.create_label_schema(
name="medical_safety",
type="feedback",
title="Is this medical information safe and appropriate?",
input=InputCategorical(options=[
"Safe - appropriate general information",
"Concerning - may mislead patients",
"Dangerous - could cause harm if followed"
]),
instruction="Assess whether the information could be safely consumed by patients."
)
# Required disclaimers
disclaimers_schema = schemas.create_label_schema(
name="required_disclaimers",
type="expectation",
title="What medical disclaimers should be included?",
input=InputTextList(max_count=3, max_length_each=300),
instruction="List disclaimers that should be present (e.g., 'consult your doctor', 'not professional medical advice')."
)
# Accuracy of medical facts
accuracy_schema = schemas.create_label_schema(
name="medical_accuracy",
type="feedback",
title="Rate the factual accuracy of the medical information",
input=InputNumeric(min_value=0, max_value=100),
instruction="Score from 0 (completely inaccurate) to 100 (completely accurate)"
)
Integração com o rótulo Sessions
Depois de criado, use seus esquemas no rótulo Sessions:
import mlflow.genai.label_schemas as schemas
# Schemas are automatically available when creating labeling sessions
# The Review App will present questions based on your schema definitions
# Example: Using schemas in a session (conceptual - actual session creation
# happens through the Review App UI or other APIs)
session_schemas = [
"service_quality", # Your custom schema
"response_issues", # Your custom schema
schemas.EXPECTED_FACTS # Built-in schema
]
Melhores práticas
Design do esquema
- Títulos claros : escreva perguntas como instruções claras e específicas
- Instruções úteis : Fornecer contexto aos revisores do guia
- Restrições apropriadas : defina limites razoáveis para o tamanho do texto e o número de listas
- Opções lógicas : para entradas categóricas, garanta que as opções sejam mutuamente exclusivas e abrangentes
Gerenciamento de esquemas
- Nomeação consistente : use nomes descritivos e consistentes em seus esquemas
- Controle de versão : ao atualizar esquemas, considere o impacto nas sessões existentes
- Limpar : Exclua esquemas não utilizados para manter seu workspace organizado
Seleção do tipo de entrada
- Use
InputCategorical
para classificações ou classificações padronizadas - Use
InputCategoricalList
quando houver várias questões ou recurso - Use
InputText
para obter explicações detalhadas ou feedback personalizado - Use
InputTextList
para listas estruturadas de itens - Use
InputNumeric
para obter pontuações precisas ou classificações de confiança
Próximas etapas
- rótulo traços existentes - Aplique seus esquemas para coletar feedback estruturado
- Criar sessões de rótulo - Organizar o fluxo de trabalho de revisão usando seus esquemas
- Criar um conjunto de dados de avaliação - Transformar os dados do rótulo em um conjunto de dados de teste