API do serviço de avaliação de IA gen

O serviço de avaliação de IA gen permite-lhe avaliar os seus modelos de linguagem (conteúdo extenso) (MDLs/CEs) em várias métricas com os seus próprios critérios. Pode fornecer entradas no momento da inferência, respostas do MDG e parâmetros adicionais, e o serviço de avaliação de IA gen devolve métricas específicas da tarefa de avaliação.

As métricas incluem métricas baseadas em modelos, como PointwiseMetric e PairwiseMetric, e métricas calculadas na memória, como rouge, bleu e métricas de chamadas de funções de ferramentas. PointwiseMetric e PairwiseMetric são métricas genéricas baseadas em modelos que pode personalizar com os seus próprios critérios. Uma vez que o serviço usa os resultados da previsão diretamente dos modelos como entrada, o serviço de avaliação pode realizar a inferência e a avaliação subsequente em todos os modelos suportados pelo Vertex AI.

Para mais informações sobre a avaliação de um modelo, consulte o artigo Vista geral do serviço de avaliação de IA gen.

Limitações

Seguem-se as limitações do serviço de avaliação:

  • O serviço de avaliação pode ter um atraso na propagação na sua primeira chamada.
  • A maioria das métricas baseadas em modelos consomem a quota do gemini-2.0-flash porque o serviço de avaliação de IA gen tira partido do gemini-2.0-flash como o modelo de avaliação subjacente para calcular estas métricas baseadas em modelos.
  • Algumas métricas baseadas em modelos, como a MetricX e a COMET, usam diferentes modelos de aprendizagem automática, pelo que não consomem a quota do gemini-2.0-flash.

Sintaxe de exemplo

Sintaxe para enviar uma chamada de avaliação.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "pointwise_metric_input" : {
    "metric_spec" : {
      ...
    },
    "instance": {
      ...
    },
  }
}'

Python

import json

from google import auth
from google.api_core import exceptions
from google.auth.transport import requests as google_auth_requests

creds, _ = auth.default(
    scopes=['https://www.googleapis.com/auth/cloud-platform'])

data = {
  ...
}

uri = f'https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances'
result = google_auth_requests.AuthorizedSession(creds).post(uri, json=data)

print(json.dumps(result.json(), indent=2))

Lista de parâmetros

Parâmetros

exact_match_input

Opcional: ExactMatchInput

Introdução para avaliar se a previsão corresponde exatamente à referência.

bleu_input

Opcional: BleuInput

Entrada para calcular a pontuação BLEU comparando a previsão com a referência.

rouge_input

Opcional: RougeInput

Entrada para calcular as pontuações rouge comparando a previsão com a referência. O rouge_type suporta diferentes classificações de rouge.

fluency_input

Opcional: FluencyInput

Entrada para avaliar o domínio do idioma de uma única resposta.

coherence_input

Opcional: CoherenceInput

Entrada para avaliar a capacidade de uma única resposta fornecer uma resposta coerente e fácil de seguir.

safety_input

Opcional: SafetyInput

Entrada para avaliar o nível de segurança de uma única resposta.

groundedness_input

Opcional: GroundednessInput

Entrada para avaliar a capacidade de uma única resposta fornecer ou fazer referência a informações incluídas apenas no texto de entrada.

fulfillment_input

Opcional: FulfillmentInput

Entrada para avaliar a capacidade de uma única resposta para cumprir completamente as instruções.

summarization_quality_input

Opcional: SummarizationQualityInput

Entrada para avaliar a capacidade geral de resumir texto de uma única resposta.

pairwise_summarization_quality_input

Opcional: PairwiseSummarizationQualityInput

Entrada para comparar a qualidade geral do resumo de duas respostas.

summarization_helpfulness_input

Opcional: SummarizationHelpfulnessInput

Entrada para avaliar a capacidade de uma única resposta fornecer um resumo, que contém os detalhes necessários para substituir o texto original.

summarization_verbosity_input

Opcional: SummarizationVerbosityInput

Entrada para avaliar a capacidade de uma única resposta fornecer um resumo conciso.

question_answering_quality_input

Opcional: QuestionAnsweringQualityInput

Entrada para avaliar a capacidade geral de uma única resposta para responder a perguntas, dado um corpo de texto para referência.

pairwise_question_answering_quality_input

Opcional: PairwiseQuestionAnsweringQualityInput

Entrada para comparar a capacidade geral de duas respostas para responder a perguntas, dado um corpo de texto para referência.

question_answering_relevance_input

Opcional: QuestionAnsweringRelevanceInput

Entrada para avaliar a capacidade de uma única resposta de responder com informações relevantes quando lhe é feita uma pergunta.

question_answering_helpfulness_input

Opcional: QuestionAnsweringHelpfulnessInput

Entrada para avaliar a capacidade de uma única resposta fornecer detalhes importantes ao responder a uma pergunta.

question_answering_correctness_input

Opcional: QuestionAnsweringCorrectnessInput

Entrada para avaliar a capacidade de uma única resposta responder corretamente a uma pergunta.

pointwise_metric_input

Opcional: PointwiseMetricInput

Entrada para uma avaliação genérica ponto a ponto.

pairwise_metric_input

Opcional: PairwiseMetricInput

Entrada para uma avaliação genérica aos pares.

tool_call_valid_input

Opcional: ToolCallValidInput

Entrada para avaliar a capacidade de uma única resposta prever uma chamada de ferramenta válida.

tool_name_match_input

Opcional: ToolNameMatchInput

Entrada para avaliar a capacidade de uma única resposta prever uma chamada de ferramenta com o nome da ferramenta correto.

tool_parameter_key_match_input

Opcional: ToolParameterKeyMatchInput

Entrada para avaliar a capacidade de uma única resposta prever uma chamada de ferramenta com nomes de parâmetros corretos.

tool_parameter_kv_match_input

Opcional: ToolParameterKvMatchInput

Entrada para avaliar a capacidade de uma única resposta prever uma chamada de ferramenta com nomes e valores de parâmetros corretos

comet_input

Opcional: CometInput

Entrada a avaliar com COMET.

metricx_input

Opcional: MetricxInput

Entrada para avaliação com MetricX.

ExactMatchInput

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parâmetros

metric_spec

Opcional: ExactMatchSpec.

Especificação da métrica, que define o comportamento da métrica.

instances

Opcional: ExactMatchInstance[]

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instances.prediction

Opcional: string

Resposta do MDI/CE.

instances.reference

Opcional: string

Resposta do MDG de ouro para referência.

ExactMatchResults

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

exact_match_metric_values

ExactMatchMetricValue[]

Resultados da avaliação por entrada de instância.

exact_match_metric_values.score

float

Uma das seguintes opções:

  • 0: a instância não foi uma correspondência exata
  • 1: Correspondência exata

BleuInput

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parâmetros

metric_spec

Opcional: BleuSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.use_effective_order

Opcional: bool

Se deve ter em conta as ordens de n-gramas sem correspondência.

instances

Opcional: BleuInstance[]

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instances.prediction

Opcional: string

Resposta do MDI/CE.

instances.reference

Opcional: string

Resposta do MDG de ouro para referência.

BleuResults

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

bleu_metric_values

BleuMetricValue[]

Resultados da avaliação por entrada de instância.

bleu_metric_values.score

float: [0, 1], em que as pontuações mais elevadas significam que a previsão é mais semelhante à referência.

RougeInput

{
  "rouge_input": {
    "metric_spec": {
      "rouge_type": string,
      "use_stemmer": bool,
      "split_summaries": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
Parâmetros

metric_spec

Opcional: RougeSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.rouge_type

Opcional: string

Valores aceitáveis:

  • rougen[1-9]: calcular as pontuações rouge com base na sobreposição de n-gramas entre a previsão e a referência.
  • rougeL: calcular as pontuações rouge com base na subsequência comum mais longa (LCS) entre a previsão e a referência.
  • rougeLsum: primeiro, divide a previsão e a referência em frases e, em seguida, calcula a LCS para cada tuplo. A pontuação rougeLsum final é a média destas pontuações de LCS individuais.

metric_spec.use_stemmer

Opcional: bool

Se o Porter stemmer deve ser usado para remover sufixos de palavras para melhorar a correspondência.

metric_spec.split_summaries

Opcional: bool

Se devem ser adicionadas novas linhas entre frases para o rougeLsum.

instances

Opcional: RougeInstance[]

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instances.prediction

Opcional: string

Resposta do MDI/CE.

instances.reference

Opcional: string

Resposta do MDG de ouro para referência.

RougeResults

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

rouge_metric_values

RougeValue[]

Resultados da avaliação por entrada de instância.

rouge_metric_values.score

float: [0, 1], em que as pontuações mais elevadas significam que a previsão é mais semelhante à referência.

FluencyInput

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parâmetros

metric_spec

Opcional: FluencySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: FluencyInstance

Entrada de avaliação, que consiste na resposta do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDI/CE.

FluencyResult

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: Inarticulado
  • 2: um pouco inarticulado
  • 3: neutro
  • 4: Alguma fluência
  • 5: fluente

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

CoherenceInput

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parâmetros

metric_spec

Opcional: CoherenceSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: CoherenceInstance

Entrada de avaliação, que consiste na resposta do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDI/CE.

CoherenceResult

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: incoerente
  • 2: algo incoerente
  • 3: neutro
  • 4: um pouco coerente
  • 5: coerente

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

SafetyInput

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
Parâmetros

metric_spec

Opcional: SafetySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: SafetyInstance

Entrada de avaliação, que consiste na resposta do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDI/CE.

SafetyResult

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 0: inseguro
  • 1: seguro

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

GroundednessInput

{
  "groundedness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "context": string
    }
  }
}

Parâmetro

Descrição

metric_spec

Opcional: GroundednessSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: GroundednessInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

GroundednessResult

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 0: Ungrounded
  • 1: Grounded

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

FulfillmentInput

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}
Parâmetros

metric_spec

Opcional: FulfillmentSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: FulfillmentInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

FulfillmentResult

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: No fulfillment
  • 2: mau processamento
  • 3: algum processamento
  • 4: bom processamento
  • 5: Conclua o preenchimento

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

SummarizationQualityInput

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parâmetros

metric_spec

Opcional: SummarizationQualitySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: SummarizationQualityInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

SummarizationQualityResult

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: muito má
  • 2: Má
  • 3: OK
  • 4: Boa
  • 5: Muito bom

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

PairwiseSummarizationQualityInput

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parâmetros

metric_spec

Opcional: PairwiseSummarizationQualitySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: PairwiseSummarizationQualityInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.baseline_prediction

Opcional: string

Resposta do GML do modelo de base.

instance.prediction

Opcional: string

Resposta do GML do modelo candidato.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

PairwiseSummarizationQualityResult

{
  "pairwise_summarization_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Resultado

pairwise_choice

PairwiseChoice: enumeração com os seguintes valores possíveis:

  • BASELINE: a previsão de referência é melhor
  • CANDIDATE: a previsão de candidatos é melhor
  • TIE: empate entre as previsões de base e candidatas.

explanation

string: justificação para a atribuição pairwise_choice.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

SummarizationHelpfulnessInput

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parâmetros

metric_spec

Opcional: SummarizationHelpfulnessSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: SummarizationHelpfulnessInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

SummarizationHelpfulnessResult

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: Não útil
  • 2: De pouca utilidade
  • 3: neutro
  • 4: Algo útil
  • 5: útil

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

SummarizationVerbosityInput

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parâmetros

metric_spec

Opcional: SummarizationVerbositySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: SummarizationVerbosityInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

SummarizationVerbosityResult

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float. Uma das seguintes opções:

  • -2: Breve
  • -1: um pouco conciso
  • 0: ideal
  • 1: um pouco verboso
  • 2: Verboso

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

QuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
Parâmetros

metric_spec

Opcional: QuestionAnsweringQualitySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: QuestionAnsweringQualityInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

QuestionAnsweringQualityResult

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: muito má
  • 2: Má
  • 3: OK
  • 4: Boa
  • 5: Muito bom

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

PairwiseQuestionAnsweringQualityInput

{
  "pairwise_question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parâmetros

metric_spec

Opcional: QuestionAnsweringQualitySpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: QuestionAnsweringQualityInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.baseline_prediction

Opcional: string

Resposta do GML do modelo de base.

instance.prediction

Opcional: string

Resposta do GML do modelo candidato.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

PairwiseQuestionAnsweringQualityResult

{
  "pairwise_question_answering_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Resultado

pairwise_choice

PairwiseChoice: enumeração com os seguintes valores possíveis:

  • BASELINE: a previsão de referência é melhor
  • CANDIDATE: a previsão de candidatos é melhor
  • TIE: empate entre as previsões de base e candidatas.

explanation

string: justificação para a atribuição de pairwise_choice.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

QuestionAnsweringRelevanceInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parâmetros

metric_spec

Opcional: QuestionAnsweringRelevanceSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: QuestionAnsweringRelevanceInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

QuestionAnsweringRelevancyResult

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: Irrelevante
  • 2: Pouco relevante
  • 3: neutro
  • 4: Razoavelmente relevante
  • 5: relevante

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

QuestionAnsweringHelpfulnessInput

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
Parâmetros

metric_spec

Opcional: QuestionAnsweringHelpfulnessSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: QuestionAnsweringHelpfulnessInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

QuestionAnsweringHelpfulnessResult

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 1: Não útil
  • 2: De pouca utilidade
  • 3: neutro
  • 4: Algo útil
  • 5: útil

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

QuestionAnsweringCorrectnessInput

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}
Parâmetros

metric_spec

Opcional: QuestionAnsweringCorrectnessSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.use_reference

Opcional: bool

Se a referência é usada ou não na avaliação.

instance

Opcional: QuestionAnsweringCorrectnessInstance

Entrada de avaliação, que consiste em entradas de inferência e na resposta correspondente.

instance.prediction

Opcional: string

Resposta do MDI/CE.

instance.reference

Opcional: string

Resposta do MDG de ouro para referência.

instance.instruction

Opcional: string

Instrução usada no momento da inferência.

instance.context

Opcional: string

Texto no momento da inferência que contém todas as informações, que podem ser usadas na resposta do MDG.

QuestionAnsweringCorrectnessResult

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Resultado

score

float: uma das seguintes opções:

  • 0: incorreto
  • 1: Correto

explanation

string: justificação para a atribuição da pontuação.

confidence

float: [0, 1] pontuação de confiança do nosso resultado.

PointwiseMetricInput

{
  "pointwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Parâmetros

metric_spec

Obrigatório: PointwiseMetricSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.metric_prompt_template

Obrigatório: string

Um modelo de comando que define a métrica. É renderizado pelos pares de chave-valor em instance.json_instance

instance

Obrigatório: PointwiseMetricInstance

Entrada de avaliação, que consiste em json_instance.

instance.json_instance

Opcional: string

Os pares de chave-valor no formato JSON. Por exemplo, {"key_1": "value_1", "key_2": "value_2"}. É usado para renderizar metric_spec.metric_prompt_template.

PointwiseMetricResult

{
  "pointwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Resultado

score

float: uma pontuação para o resultado da avaliação da métrica ao nível do ponto.

explanation

string: justificação para a atribuição da pontuação.

PairwiseMetricInput

{
  "pairwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
Parâmetros

metric_spec

Obrigatório: PairwiseMetricSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.metric_prompt_template

Obrigatório: string

Um modelo de comando que define a métrica. É renderizado pelos pares de chave-valor em instance.json_instance

instance

Obrigatório: PairwiseMetricInstance

Entrada de avaliação, que consiste em json_instance.

instance.json_instance

Opcional: string

Os pares de chave-valor no formato JSON. Por exemplo, {"key_1": "value_1", "key_2": "value_2"}. É usado para renderizar metric_spec.metric_prompt_template.

PairwiseMetricResult

{
  "pairwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Resultado

score

float: uma pontuação para o resultado da avaliação de métricas aos pares.

explanation

string: justificação para a atribuição da pontuação.

ToolCallValidInput

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parâmetros

metric_spec

Opcional: ToolCallValidSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: ToolCallValidInstance

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDG candidato, que é uma string serializada JSON que contém as chaves content e tool_calls. O valor content é o texto gerado pelo modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramentas. Um exemplo:

{
  "content": "",
  "tool_calls": [
    {
      "name": "book_tickets",
      "arguments": {
        "movie": "Mission Impossible Dead Reckoning Part 1",
        "theater": "Regal Edwards 14",
        "location": "Mountain View CA",
        "showtime": "7:30",
        "date": "2024-03-30",
        "num_tix": "2"
      }
    }
  ]
}

instance.reference

Opcional: string

Resultado do modelo de referência no mesmo formato que a previsão.

ToolCallValidResults

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

tool_call_valid_metric_values

repeated ToolCallValidMetricValue: Evaluation results per instance input.

tool_call_valid_metric_values.score

float: uma das seguintes opções:

  • 0: chamada de ferramenta inválida
  • 1: chamada de ferramenta válida

ToolNameMatchInput

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parâmetros

metric_spec

Opcional: ToolNameMatchSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: ToolNameMatchInstance

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDG candidato, que é uma string serializada JSON que contém as chaves content e tool_calls. O valor content é o texto gerado pelo modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramentas.

instance.reference

Opcional: string

Resultado do modelo de referência no mesmo formato que a previsão.

ToolNameMatchResults

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

tool_name_match_metric_values

repeated ToolNameMatchMetricValue: Evaluation results per instance input.

tool_name_match_metric_values.score

float: uma das seguintes opções:

  • 0: o nome da chamada de ferramenta não corresponde à referência.
  • 1: o nome da chamada de ferramenta corresponde à referência.

ToolParameterKeyMatchInput

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parâmetros

metric_spec

Opcional: ToolParameterKeyMatchSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: ToolParameterKeyMatchInstance

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDG candidato, que é uma string serializada JSON que contém as chaves content e tool_calls. O valor content é o texto gerado pelo modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramentas.

instance.reference

Opcional: string

Resultado do modelo de referência no mesmo formato que a previsão.

ToolParameterKeyMatchResults

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

tool_parameter_key_match_metric_values

repeated ToolParameterKeyMatchMetricValue: Evaluation results per instance input.

tool_parameter_key_match_metric_values.score

float: [0, 1], em que as pontuações mais elevadas significam que mais parâmetros correspondem aos nomes dos parâmetros de referência.

ToolParameterKVMatchInput

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
Parâmetros

metric_spec

Opcional: ToolParameterKVMatchSpec

Especificação da métrica, que define o comportamento da métrica.

instance

Opcional: ToolParameterKVMatchInstance

Entrada de avaliação, que consiste na resposta e na referência do MDI/CE.

instance.prediction

Opcional: string

Resposta do MDG candidato, que é uma string serializada JSON que contém as chaves content e tool_calls. O valor content é o texto gerado pelo modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramentas.

instance.reference

Opcional: string

Resultado do modelo de referência no mesmo formato que a previsão.

ToolParameterKVMatchResults

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Resultado

tool_parameter_kv_match_metric_values

repeated ToolParameterKVMatchMetricValue: Evaluation results per instance input.

tool_parameter_kv_match_metric_values.score

float: [0, 1], em que as pontuações mais elevadas significam que mais parâmetros correspondem aos nomes e valores dos parâmetros de referência.

CometInput

{
  "comet_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Parâmetros

metric_spec

Opcional: CometSpec

Especificação da métrica, que define o comportamento da métrica.

metric_spec.version

Opcional: string

COMET_22_SRC_REF: COMET 22 para tradução, origem e referência. Avalia a tradução (previsão) usando todas as três entradas.

metric_spec.source_language

Opcional: string

Idioma de origem no formato BCP-47. Por exemplo, "es".

metric_spec.target_language

Opcional: string

Idioma de destino no formato BCP-47. Por exemplo, "es"

instance

Opcional: CometInstance

Entrada de avaliação, constituída pela resposta do MDI/CE e pela referência. Os campos exatos usados para a avaliação dependem da versão do COMET.

instance.prediction

Opcional: string

Resposta do GML do modelo candidato. Esta é a saída do MDG que está a ser avaliada.

instance.source

Opcional: string

Texto de origem. Este é o idioma original a partir do qual a previsão foi traduzida.

instance.reference

Opcional: string

Facto observável usado para comparar com a previsão. Está no mesmo idioma que a previsão.

CometResult

{
  "comet_result" : {
    "score": float
  }
}
Resultado

score

float: [0, 1], em que 1 representa uma tradução perfeita.

MetricxInput

{
  "metricx_input" : {
    "metric_spec" : {
      "version": string
    },
    "instance": {
      "prediction": string,
      "source": string,
      "reference": string,
    },
  }
}
Parâmetros

metric_spec

Opcional: MetricxSpec

Especificação da métrica que define o comportamento da métrica.

metric_spec.version

Opcional:

string

Uma das seguintes opções:

  • METRICX_24_REF: MetricX 24 para tradução e referência. Avalia a previsão (tradução) comparando-a com o texto de referência introduzido.
  • METRICX_24_SRC: MetricX 24 para tradução e origem. Avalia a tradução (previsão) através da estimativa de qualidade (QE), sem uma entrada de texto de referência.
  • METRICX_24_SRC_REF: MetricX 24 para tradução, origem e referência. Avalia a tradução (previsão) através de todas as três entradas.

metric_spec.source_language

Opcional: string

Idioma de origem no formato BCP-47. Por exemplo, "es".

metric_spec.target_language

Opcional: string

Idioma de destino no formato BCP-47. Por exemplo, "es".

instance

Opcional: MetricxInstance

Entrada de avaliação, constituída pela resposta do MDI/CE e pela referência. Os campos exatos usados para a avaliação dependem da versão do MetricX.

instance.prediction

Opcional: string

Resposta do GML do modelo candidato. Esta é a saída do MDG que está a ser avaliada.

instance.source

Opcional: string

Texto de origem no idioma original a partir do qual a previsão foi traduzida.

instance.reference

Opcional: string

Facto observável usado para comparar com a previsão. Está no mesmo idioma que a previsão.

MetricxResult

{
  "metricx_result" : {
    "score": float
  }
}
Resultado

score

float: [0, 25], em que 0 representa uma tradução perfeita.

Exemplos

Avalie um resultado

O exemplo seguinte demonstra como chamar a API Gen AI Evaluation para avaliar o resultado de um MDI/CE através de várias métricas de avaliação, incluindo as seguintes:

  • summarization_quality
  • groundedness
  • fulfillment
  • summarization_helpfulness
  • summarization_verbosity

Python

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask, MetricPromptTemplateExamples

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

eval_dataset = pd.DataFrame(
    {
        "instruction": [
            "Summarize the text in one sentence.",
            "Summarize the text such that a five-year-old can understand.",
        ],
        "context": [
            """As part of a comprehensive initiative to tackle urban congestion and foster
            sustainable urban living, a major city has revealed ambitious plans for an
            extensive overhaul of its public transportation system. The project aims not
            only to improve the efficiency and reliability of public transit but also to
            reduce the city\'s carbon footprint and promote eco-friendly commuting options.
            City officials anticipate that this strategic investment will enhance
            accessibility for residents and visitors alike, ushering in a new era of
            efficient, environmentally conscious urban transportation.""",
            """A team of archaeologists has unearthed ancient artifacts shedding light on a
            previously unknown civilization. The findings challenge existing historical
            narratives and provide valuable insights into human history.""",
        ],
        "response": [
            "A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
            "Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
        ],
    }
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        MetricPromptTemplateExamples.Pointwise.SUMMARIZATION_QUALITY,
        MetricPromptTemplateExamples.Pointwise.GROUNDEDNESS,
        MetricPromptTemplateExamples.Pointwise.VERBOSITY,
        MetricPromptTemplateExamples.Pointwise.INSTRUCTION_FOLLOWING,
    ],
)

prompt_template = (
    "Instruction: {instruction}. Article: {context}. Summary: {response}"
)
result = eval_task.evaluate(prompt_template=prompt_template)

print("Summary Metrics:\n")

for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
# Summary Metrics:
# row_count:      2
# summarization_quality/mean:     3.5
# summarization_quality/std:      2.1213203435596424
# ...

Go

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// evaluateModelResponse evaluates the output of an LLM for groundedness, i.e., how well
// the model response connects with verifiable sources of information
func evaluateModelResponse(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	// evaluate the pre-generated model response against the reference (ground truth)
	responseToEvaluate := `
The city is undertaking a major project to revamp its public transportation system.
This initiative is designed to improve efficiency, reduce carbon emissions, and promote
eco-friendly commuting. The city expects that this investment will enhance accessibility
and usher in a new era of sustainable urban transportation.
`
	reference := `
As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		// Check the API reference for a full list of supported metric inputs:
		// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#evaluateinstancesrequest
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_GroundednessInput{
			GroundednessInput: &aiplatformpb.GroundednessInput{
				MetricSpec: &aiplatformpb.GroundednessSpec{},
				Instance: &aiplatformpb.GroundednessInstance{
					Context:    &reference,
					Prediction: &responseToEvaluate,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetGroundednessResult()
	fmt.Fprintf(w, "score: %.2f\n", results.GetScore())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// score: 1.00
	// confidence: 1.00
	// explanation:
	// STEP 1: All aspects of the response are found in the context.
	// The response accurately summarizes the city's plan to overhaul its public transportation system, highlighting the goals of ...
	// STEP 2: According to the rubric, the response is scored 1 because all aspects of the response are attributable to the context.

	return nil
}

Avalie um resultado: qualidade da sumarização aos pares

O exemplo seguinte demonstra como chamar a API do serviço de avaliação de IA gen para avaliar a saída de um MDG usando uma comparação de qualidade de resumo aos pares.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • PREDICTION: resposta do MDI/CE.
  • BASELINE_PREDICTION: resposta do GML do modelo de base.
  • INSTRUCTION: a instrução usada no momento da inferência.
  • CONTEXT: texto no momento da inferência que contém todas as informações relevantes e que pode ser usado na resposta do GML.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \

Corpo JSON do pedido:

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": "PREDICTION",
      "baseline_prediction": "BASELINE_PREDICTION",
      "instruction": "INSTRUCTION",
      "context": "CONTEXT",
    }
  }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/LOCATION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

import pandas as pd

import vertexai
from vertexai.generative_models import GenerativeModel
from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    MetricPromptTemplateExamples,
)

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

prompt = """
Summarize the text such that a five-year-old can understand.

# Text

As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
"""

eval_dataset = pd.DataFrame({"prompt": [prompt]})

# Baseline model for pairwise comparison
baseline_model = GenerativeModel("gemini-2.0-flash-lite-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-2.0-flash-001", generation_config={"temperature": 0.4}
)

prompt_template = MetricPromptTemplateExamples.get_prompt_template(
    "pairwise_summarization_quality"
)

summarization_quality_metric = PairwiseMetric(
    metric="pairwise_summarization_quality",
    metric_prompt_template=prompt_template,
    baseline_model=baseline_model,
)

eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[summarization_quality_metric],
    experiment="pairwise-experiment",
)
result = eval_task.evaluate(model=candidate_model)

baseline_model_response = result.metrics_table["baseline_model_response"].iloc[0]
candidate_model_response = result.metrics_table["response"].iloc[0]
winner_model = result.metrics_table[
    "pairwise_summarization_quality/pairwise_choice"
].iloc[0]
explanation = result.metrics_table[
    "pairwise_summarization_quality/explanation"
].iloc[0]

print(f"Baseline's story:\n{baseline_model_response}")
print(f"Candidate's story:\n{candidate_model_response}")
print(f"Winner: {winner_model}")
print(f"Explanation: {explanation}")
# Example response:
# Baseline's story:
# A big city wants to make it easier for people to get around without using cars! They're going to make buses and trains ...
#
# Candidate's story:
# A big city wants to make it easier for people to get around without using cars! ... This will help keep the air clean ...
#
# Winner: CANDIDATE
# Explanation: Both responses adhere to the prompt's constraints, are grounded in the provided text, and ... However, Response B ...

Go

Go

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import (
	context_pkg "context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// pairwiseEvaluation lets the judge model to compare the responses of two models and pick the better one
func pairwiseEvaluation(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context_pkg.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	context := `
As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.
`
	instruction := "Summarize the text such that a five-year-old can understand."
	baselineResponse := `
The city wants to make it easier for people to get around without using cars.
They're going to make the buses and trains better and faster, so people will want to
use them more. This will help the air be cleaner and make the city a better place to live.
`
	candidateResponse := `
The city is making big changes to how people get around. They want to make the buses and
trains work better and be easier for everyone to use. This will also help the environment
by getting people to use less gas. The city thinks these changes will make it easier for
everyone to get where they need to go.
`

	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_PairwiseSummarizationQualityInput{
			PairwiseSummarizationQualityInput: &aiplatformpb.PairwiseSummarizationQualityInput{
				MetricSpec: &aiplatformpb.PairwiseSummarizationQualitySpec{},
				Instance: &aiplatformpb.PairwiseSummarizationQualityInstance{
					Context:            &context,
					Instruction:        &instruction,
					Prediction:         &candidateResponse,
					BaselinePrediction: &baselineResponse,
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	results := resp.GetPairwiseSummarizationQualityResult()
	fmt.Fprintf(w, "choice: %s\n", results.GetPairwiseChoice())
	fmt.Fprintf(w, "confidence: %.2f\n", results.GetConfidence())
	fmt.Fprintf(w, "explanation:\n%s\n", results.GetExplanation())
	// Example response:
	// choice: BASELINE
	// confidence: 0.50
	// explanation:
	// BASELINE response is easier to understand. For example, the phrase "..." is easier to understand than "...". Thus, BASELINE response is ...

	return nil
}

Obtenha a pontuação ROUGE

O exemplo seguinte chama a API do serviço de avaliação de IA gen para obter a pontuação ROUGE de uma previsão gerada por vários inputs. As entradas ROUGE usam metric_spec, que determina o comportamento da métrica.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • PREDICTION: resposta do MDI/CE.
  • REFERENCE: resposta do MDI/CE de referência.
  • ROUGE_TYPE: o cálculo usado para determinar a pontuação de rouge. Consulte metric_spec.rouge_type para ver os valores aceitáveis.
  • USE_STEMMER: determina se o Porter stemmer é usado para remover sufixos de palavras para melhorar a correspondência. Para ver os valores aceitáveis, consulte metric_spec.use_stemmer.
  • SPLIT_SUMMARIES: determina se são adicionadas novas linhas entre frases rougeLsum. Para ver os valores aceitáveis, consulte metric_spec.split_summaries .

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \

Corpo JSON do pedido:

{
  "rouge_input": {
    "instances": {
      "prediction": "PREDICTION",
      "reference": "REFERENCE.",
    },
    "metric_spec": {
      "rouge_type": "ROUGE_TYPE",
      "use_stemmer": USE_STEMMER,
      "split_summaries": SPLIT_SUMMARIES,
    }
  }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID-/locations/REGION:evaluateInstances \" | Select-Object -Expand Content

Python

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

import pandas as pd

import vertexai
from vertexai.preview.evaluation import EvalTask

# TODO(developer): Update & uncomment line below
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

reference_summarization = """
The Great Barrier Reef, the world's largest coral reef system, is
located off the coast of Queensland, Australia. It's a vast
ecosystem spanning over 2,300 kilometers with thousands of reefs
and islands. While it harbors an incredible diversity of marine
life, including endangered species, it faces serious threats from
climate change, ocean acidification, and coral bleaching."""

# Compare pre-generated model responses against the reference (ground truth).
eval_dataset = pd.DataFrame(
    {
        "response": [
            """The Great Barrier Reef, the world's largest coral reef system located
        in Australia, is a vast and diverse ecosystem. However, it faces serious
        threats from climate change, ocean acidification, and coral bleaching,
        endangering its rich marine life.""",
            """The Great Barrier Reef, a vast coral reef system off the coast of
        Queensland, Australia, is the world's largest. It's a complex ecosystem
        supporting diverse marine life, including endangered species. However,
        climate change, ocean acidification, and coral bleaching are serious
        threats to its survival.""",
            """The Great Barrier Reef, the world's largest coral reef system off the
        coast of Australia, is a vast and diverse ecosystem with thousands of
        reefs and islands. It is home to a multitude of marine life, including
        endangered species, but faces serious threats from climate change, ocean
        acidification, and coral bleaching.""",
        ],
        "reference": [reference_summarization] * 3,
    }
)
eval_task = EvalTask(
    dataset=eval_dataset,
    metrics=[
        "rouge_1",
        "rouge_2",
        "rouge_l",
        "rouge_l_sum",
    ],
)
result = eval_task.evaluate()

print("Summary Metrics:\n")
for key, value in result.summary_metrics.items():
    print(f"{key}: \t{value}")

print("\n\nMetrics Table:\n")
print(result.metrics_table)
# Example response:
#
# Summary Metrics:
#
# row_count:      3
# rouge_1/mean:   0.7191161666666667
# rouge_1/std:    0.06765143922270488
# rouge_2/mean:   0.5441118566666666
# ...
# Metrics Table:
#
#                                        response                         reference  ...  rouge_l/score  rouge_l_sum/score
# 0  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.577320           0.639175
# 1  The Great Barrier Reef, a vast coral...  \n    The Great Barrier Reef, the ...  ...       0.552381           0.666667
# 2  The Great Barrier Reef, the world's ...  \n    The Great Barrier Reef, the ...  ...       0.774775           0.774775

Go

Go

Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import (
	"context"
	"fmt"
	"io"

	aiplatform "cloud.google.com/go/aiplatform/apiv1beta1"
	aiplatformpb "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb"
	"google.golang.org/api/option"
)

// getROUGEScore evaluates a model response against a reference (ground truth) using the ROUGE metric
func getROUGEScore(w io.Writer, projectID, location string) error {
	// location = "us-central1"
	ctx := context.Background()
	apiEndpoint := fmt.Sprintf("%s-aiplatform.googleapis.com:443", location)
	client, err := aiplatform.NewEvaluationClient(ctx, option.WithEndpoint(apiEndpoint))

	if err != nil {
		return fmt.Errorf("unable to create aiplatform client: %w", err)
	}
	defer client.Close()

	modelResponse := `
The Great Barrier Reef, the world's largest coral reef system located in Australia,
is a vast and diverse ecosystem. However, it faces serious threats from climate change,
ocean acidification, and coral bleaching, endangering its rich marine life.
`
	reference := `
The Great Barrier Reef, the world's largest coral reef system, is
located off the coast of Queensland, Australia. It's a vast
ecosystem spanning over 2,300 kilometers with thousands of reefs
and islands. While it harbors an incredible diversity of marine
life, including endangered species, it faces serious threats from
climate change, ocean acidification, and coral bleaching.
`
	req := aiplatformpb.EvaluateInstancesRequest{
		Location: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		MetricInputs: &aiplatformpb.EvaluateInstancesRequest_RougeInput{
			RougeInput: &aiplatformpb.RougeInput{
				// Check the API reference for the list of supported ROUGE metric types:
				// https://cloud.google.com/vertex-ai/docs/reference/rpc/google.cloud.aiplatform.v1beta1#rougespec
				MetricSpec: &aiplatformpb.RougeSpec{
					RougeType: "rouge1",
				},
				Instances: []*aiplatformpb.RougeInstance{
					{
						Prediction: &modelResponse,
						Reference:  &reference,
					},
				},
			},
		},
	}

	resp, err := client.EvaluateInstances(ctx, &req)
	if err != nil {
		return fmt.Errorf("evaluateInstances failed: %v", err)
	}

	fmt.Fprintln(w, "evaluation results:")
	fmt.Fprintln(w, resp.GetRougeResults().GetRougeMetricValues())
	// Example response:
	// [score:0.6597938]

	return nil
}

O que se segue?