Configurar um modelo de juiz

As métricas baseadas em modelos oferecem várias abordagens para personalizar e ajudar a gerar métricas de avaliação com base nos seus critérios e casos de uso. Esta página descreve como configurar o modelo de avaliação para seu caso de uso ideal.

Para conferir o fluxo de trabalho de avaliação básica, consulte o Guia de início rápido do serviço de avaliação de IA generativa. A série de personalização de modelos de juízes avançados inclui as seguintes páginas:

  1. Avaliar um modelo de juiz
  2. Solicitação de personalização do modelo do juiz
  3. Configurar um modelo de avaliação (página atual)

Visão geral

Você tem as seguintes opções para configurar o modelo de avaliação para melhorar a qualidade:

  • Instruções do sistema: o modelo de avaliação pode processar um conjunto de instruções antes de processar comandos de avaliação.
  • Configurações do modelo de julgamento:
    • Inversão de resposta: inverta as respostas do modelo de referência e do modelo candidato para reduzir a viés do modelo do juiz durante a avaliação.
    • Multiamostragem: ajuste o número de vezes que o modelo de avaliação é chamado para a pontuação de avaliação melhorar a consistência.
    • Modelo de juiz ajustado: use um LLM ajustado como modelo de juiz.

Instruções do sistema

Os modelos do Gemini podem receber instruções do sistema, que são um conjunto de instruções que afetam a forma como o modelo processa comandos. É possível usar instruções do sistema ao inicializar ou gerar conteúdo de um modelo para especificar o comportamento no nível do produto, como funções ou perfis, informações contextuais e estilo e tom de explicação. O modelo de juiz normalmente considera a importância das instruções do sistema mais importante do que os comandos de entrada.

Para conferir uma lista de modelos compatíveis com instruções do sistema, consulte Modelos compatíveis.

O exemplo a seguir usa o SDK da Vertex AI para adicionar system_instruction no nível da métrica para PointwiseMetric:

system_instruction = "You are an expert evaluator."
linguistic_acceptability = PointwiseMetric(
    metric="linguistic_acceptability",
    metric_prompt_template=linguistic_acceptability_metric_prompt_template,
    system_instruction=system_instruction,
)

eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[linguistic_acceptability]
).evaluate()

Você pode usar a mesma abordagem com PairwiseMetric.

Configuração do modelo do juiz

É possível personalizar ainda mais o modelo de avaliação usando autorater_config:

  • Inversão de resposta: inverta as respostas do modelo de referência e do modelo candidato para reduzir a viés do modelo do juiz durante a avaliação.

  • Multiamostragem: ajuste o número de vezes que o modelo de avaliação é chamado para a pontuação de avaliação para melhorar a consistência.

  • Modelo de juiz ajustado: use um LLM ajustado como modelo de juiz.

Inversão de resposta

Para PairwiseMetrics, o serviço de avaliação de IA generativa recebe respostas para o modelo de referência e o modelo candidato. O modelo juiz avalia qual resposta está mais alinhada aos critérios do metric_prompt_template. No entanto, o modelo de avaliação pode ser tendencioso em relação ao modelo de referência ou candidato em determinadas configurações.

Para reduzir a viés nos resultados da avaliação, ative a inversão de resposta, em que metade das chamadas para o modelo de julgamento inverte a resposta do modelo de referência e do modelo candidato usando o SDK da Vertex AI:

from vertexai.preview.evaluation import AutoraterConfig

pairwise_relevance_prompt_template = """
    # Instruction


    ### Response A
    {baseline_model_response}

    ### Response B
    {candidate_model_response}
"""

my_pairwise_metric = PairwiseMetric(
    metric="my_pairwise_metric",
    metric_prompt_template=pairwise_relevance_prompt_template,
    candidate_response_field_name = "candidate_model_response",
    baseline_response_field_name = "baseline_model_response"
)


# Define an AutoraterConfig with flip_enabled
my_autorater_config = AutoraterConfig(flip_enabled=True)

# Define an EvalTask with autorater_config
flip_enabled_eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[my_pairwise_metric],
    autorater_config=my_autorater_config,
).evaluate()

Multiamostragem

Ao realizar a avaliação, o modelo juiz pode mostrar alguma aleatoriedade nas respostas. A amostragem adicional pode ajudar a negar a aleatoriedade inerente do modelo de julgamento e levar a resultados mais consistentes.

No entanto, aumentar a amostragem também aumenta a latência para concluir a solicitação. É possível atualizar o valor do número de amostras usando AutoraterConfig para um número inteiro entre 1 e 32. Recomendamos usar o valor padrão de sampling_count 4 para equilibrar os dois fatores de aleatoriedade e latência.

Com o SDK da Vertex AI, é possível especificar o número de amostras executadas para cada solicitação:

from vertexai.preview.evaluation import AutoraterConfig

# Define customized sampling count in AutoraterConfig
autorater_config = AutoraterConfig(sampling_count=6)

# Run evaluation with the sampling count.
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config
).evaluate()

Modelo de juiz ajustado

Se você tiver dados de ajuste adequados para seu caso de uso de avaliação, use o SDK da Vertex AI para ajustar um modelo do Gemini como modelo de avaliação e use o modelo ajustado para avaliação. É possível especificar um modelo ajustado como o modelo de avaliação usando AutoraterConfig:

from vertexai.preview.evaluation import {
   AutoraterConfig,
   PairwiseMetric,
   tune_autorater,
   evaluate_autorater,
}

# Tune a model to be the judge model. The tune_autorater helper function returns an AutoraterConfig with the judge model set as the tuned model.
autorater_config: AutoRaterConfig = tune_autorater(
    base_model="gemini-2.0-flash",
    train_dataset=f"{BUCKET_URI}/train/sft_train_samples.jsonl",
    validation_dataset=f"{BUCKET_URI}/val/sft_val_samples.jsonl",
    tuned_model_display_name=tuned_model_display_name,
)

# Alternatively, you can set up the judge model with an existing tuned model endpoint
autorater_config = AutoraterConfig(autorater_model=TUNED_MODEL)

# Use the tuned judge model
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config,
).evaluate()

A seguir