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

O serviço de avaliação de IA generativa permite avaliar modelos de linguagem grandes (LLMs) em várias métricas com seus próprios critérios. É possível fornecer entradas de tempo de inferência, respostas do LLM e outros parâmetros. O serviço de avaliação de IA generativa retorna métricas específicas para a tarefa de avaliação.

As métricas incluem métricas com base em modelo, como PointwiseMetric e PairwiseMetric, e métricas calculadas na memória, como rouge, bleu e métricas de chamada de função da ferramenta. PointwiseMetric e PairwiseMetric são métricas genéricas baseadas em modelo que podem ser personalizadas de acordo com seus próprios critérios. Como o serviço recebe os resultados de previsão diretamente dos modelos como entrada, ele pode realizar inferência e avaliação subsequente em todos os modelos compatíveis com a Vertex AI.

Para mais informações sobre como avaliar um modelo, consulte Visão geral do serviço de avaliação de IA generativa.

Limitações

Veja a seguir as limitações do serviço de avaliação:

  • O serviço de avaliação pode ter um atraso de propagação na primeira chamada.
  • A maioria das métricas baseadas em modelo consome a cota do gemini-1.5-pro, porque o serviço de avaliação de IA generativa usa gemini-1.5-pro como o modelo juiz subjacente para calcular essas métricas.
  • Algumas métricas baseadas em modelo, como MetricX e COMET, usam modelos de aprendizado de máquina diferentes, por isso não consomem a cota do gemini-1.5-pro.

Exemplo de sintaxe

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/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}:evaluateInstances \
-d '{
  "contents": [{
    ...
  }],
  "tools": [{
    "function_declarations": [
      {
        ...
      }
    ]
  }]
}'

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/v1beta1/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

Entrada 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 pontuações rouge comparando a previsão com a referência. Pontuações rouge diferentes são compatíveis com rouge_type.

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 de fornecer uma resposta coerente e fácil de acompanhar.

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 de fornecer ou referenciar informações incluídas apenas no texto de entrada.

fulfillment_input

Opcional: FulfillmentInput

Entrada para avaliar a capacidade de uma única resposta de atender completamente às instruções.

summarization_quality_input

Opcional: SummarizationQualityInput

Entrada para avaliar a capacidade geral de resumir textos 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 de gerar um resumo com os detalhes necessários para substituir o texto original.

summarization_verbosity_input

Opcional: SummarizationVerbosityInput

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

question_answering_quality_input

Opcional: QuestionAnsweringQualityInput

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

pairwise_question_answering_quality_input

Opcional: PairwiseQuestionAnsweringQualityInput

Entrada para comparar a capacidade geral de responder a perguntas de duas respostas, com 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 uma pergunta é feita.

question_answering_helpfulness_input

Opcional: QuestionAnsweringHelpfulnessInput

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

question_answering_correctness_input

Opcional: QuestionAnsweringCorrectnessInput

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

pointwise_metric_input

Opcional: PointwiseMetricInput

Entrada para uma avaliação pontual genérica.

pairwise_metric_input

Opcional: PairwiseMetricInput

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

tool_call_valid_input

Opcional: ToolCallValidInput

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

tool_name_match_input

Opcional: ToolNameMatchInput

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

tool_parameter_key_match_input

Opcional: ToolParameterKeyMatchInput

Entrada para avaliar a capacidade de uma única resposta de 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 de prever uma chamada de ferramenta com nomes e valores de parâmetros corretos

comet_input

Opcional: CometInput

Entrada para avaliação usando COMET.

metricx_input

Opcional: MetricxInput

Entrada para avaliar usando a 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 dela.

instances

Opcional: ExactMatchInstance[]

Entrada de avaliação, que consiste em resposta e referência do LLM.

instances.prediction

Opcional: string

Resposta do LLM.

instances.reference

Opcional: string

Resposta do LLM Golden para referência.

ExactMatchResults

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

exact_match_metric_values

ExactMatchMetricValue[]

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

exact_match_metric_values.score

float

Opções:

  • 0: a instância não era 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 dela.

metric_spec.use_effective_order

Opcional: bool

Define se são considerados pedidos n-grama sem nenhuma correspondência.

instances

Opcional: BleuInstance[]

Entrada de avaliação, que consiste em resposta e referência do LLM.

instances.prediction

Opcional: string

Resposta do LLM.

instances.reference

Opcional: string

Resposta do LLM Golden para referência.

BleuResults

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

bleu_metric_values

BleuMetricValue[]

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

bleu_metric_values.score

float: [0, 1], em que pontuações mais altas significam que a previsão é mais parecida com a 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 dela.

metric_spec.rouge_type

Opcional: string

Valores aceitáveis:

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

metric_spec.use_stemmer

Opcional: bool

Define se a derivação de Porter deve ser usada para remover sufixos de palavras para melhorar a correspondência.

metric_spec.split_summaries

Opcional: bool

Define se novas linhas serão adicionadas entre as frases do rougeLsum.

instances

Opcional: RougeInstance[]

Entrada de avaliação, que consiste em resposta e referência do LLM.

instances.prediction

Opcional: string

Resposta do LLM.

instances.reference

Opcional: string

Resposta do LLM Golden para referência.

RougeResults

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

rouge_metric_values

RougeValue[]

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

rouge_metric_values.score

float: [0, 1], em que pontuações mais altas significam que a previsão é mais parecida com a 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 dela.

instance

Opcional: FluencyInstance

Entrada de avaliação, que consiste na resposta do LLM.

instance.prediction

Opcional: string

Resposta do LLM.

FluencyResult

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: desarticulado
  • 2: um pouco desarticulado
  • 3: neutro
  • 4: um pouco fluente
  • 5: fluente

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: CoherenceInstance

Entrada de avaliação, que consiste na resposta do LLM.

instance.prediction

Opcional: string

Resposta do LLM.

CoherenceResult

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

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

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: SafetyInstance

Entrada de avaliação, que consiste na resposta do LLM.

instance.prediction

Opcional: string

Resposta do LLM.

SafetyResult

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 0: o conteúdo não é seguro
  • 1: seguros

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: GroundednessInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

GroundednessResult

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 0: sem embasamento
  • 1: empírico

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: FulfillmentInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

FulfillmentResult

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: sem fulfillment
  • 2: fulfillment ruim
  • 3: algum fulfillment
  • 4: fulfillment bom
  • 5: fulfillment completo

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: SummarizationQualityInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

SummarizationQualityResult

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: muito ruim
  • 2: ruim
  • 3: ok
  • 4: bom
  • 5: muito bom

explanation

string: justificativa para a atribuição de 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 dela.

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 LLM do modelo de referência.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

PairwiseSummarizationQualityResult

{
  "pairwise_summarization_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Saída

pairwise_choice

PairwiseChoice: tipo enumerado com valores possíveis da seguinte maneira:

  • BASELINE: a previsão do valor de referência é melhor
  • CANDIDATE: a previsão do candidato é melhor
  • TIE: faz a correlação entre as previsões de referência e de candidatos.

explanation

string: justificativa 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 dela.

instance

Opcional: SummarizationHelpfulnessInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

SummarizationHelpfulnessResult

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: não foi útil
  • 2: um pouco inútil
  • 3: neutro
  • 4: pouco útil
  • 5: é muito útil!

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: SummarizationVerbosityInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

SummarizationVerbosityResult

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float. Opções:

  • -2: conciso
  • -1: um pouco conciso
  • 0: ideal
  • 1: um pouco detalhado
  • 2: detalhado

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: QuestionAnsweringQualityInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

QuestionAnsweringQualityResult

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: muito ruim
  • 2: ruim
  • 3: ok
  • 4: bom
  • 5: muito bom

explanation

string: justificativa para a atribuição de pontuação.

confidence

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

PairwiseQuestionAnsweringQualityInput

{
  "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 dela.

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 LLM do modelo de referência.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

PairwiseQuestionAnsweringQualityResult

{
  "pairwise_question_answering_quality_result": {
    "pairwise_choice": PairwiseChoice,
    "explanation": string,
    "confidence": float
  }
}
Saída

pairwise_choice

PairwiseChoice: tipo enumerado com valores possíveis da seguinte maneira:

  • BASELINE: a previsão do valor de referência é melhor
  • CANDIDATE: a previsão do candidato é melhor
  • TIE: faz a correlação entre as previsões de referência e de candidatos.

explanation

string: justificativa para a atribuição 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 dela.

instance

Opcional: QuestionAnsweringRelevanceInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

QuestionAnsweringRelevancyResult

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: irrelevante
  • 2: um pouco irrelevante
  • 3: neutro
  • 4: razoavelmente relevante
  • 5: relevante

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: QuestionAnsweringHelpfulnessInstance

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

instance.prediction

Opcional: string

Resposta do LLM.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

QuestionAnsweringHelpfulnessResult

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 1: não foi útil
  • 2: um pouco inútil
  • 3: neutro
  • 4: pouco útil
  • 5: é muito útil!

explanation

string: justificativa para a atribuição de 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 dela.

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 LLM.

instance.reference

Opcional: string

Resposta do LLM Golden para referência.

instance.instruction

Opcional: string

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

instance.context

Opcional: string

Texto de tempo de inferência contendo todas as informações, que podem ser usadas na resposta do LLM.

QuestionAnsweringCorrectnessResult

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
Saída

score

float: um dos seguintes:

  • 0: incorreto
  • 1: correto

explanation

string: justificativa para a atribuição de 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 dela.

metric_spec.metric_prompt_template

Obrigatório: string

Um modelo de comando que define a métrica. Ele é 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"}. Use para renderizar metric_spec.metric_prompt_template.

PointwiseMetricResult

{
  "pointwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Saída

score

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

explanation

string: justificativa para a atribuição de 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 dela.

metric_spec.metric_prompt_template

Obrigatório: string

Um modelo de comando que define a métrica. Ele é 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"}. Use para renderizar metric_spec.metric_prompt_template.

PairwiseMetricResult

{
  "pairwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
Saída

score

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

explanation

string: justificativa para a atribuição de 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 dela.

instance

Opcional: ToolCallValidInstance

Entrada de avaliação, que consiste em resposta e referência do LLM.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato, que é uma string serializada em JSON que contém as chaves content e tool_calls. O valor content é a saída de texto do modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramenta. Veja o exemplo a seguir:

{
  "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

Saída do modelo Golden no mesmo formato que a previsão.

ToolCallValidResults

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

tool_call_valid_metric_values

ToolCallValidMetricValue repetido: resultados da avaliação por entrada da instância.

tool_call_valid_metric_values.score

float: um dos seguintes:

  • 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 dela.

instance

Opcional: ToolNameMatchInstance

Entrada de avaliação, que consiste em resposta e referência do LLM.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato, que é uma string serializada em JSON que contém as chaves content e tool_calls. O valor content é a saída de texto do modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramenta.

instance.reference

Opcional: string

Saída do modelo Golden no mesmo formato que a previsão.

ToolNameMatchResults

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

tool_name_match_metric_values

ToolNameMatchMetricValue repetido: resultados da avaliação por entrada da instância.

tool_name_match_metric_values.score

float: um dos seguintes:

  • 0: o nome da chamada de ferramenta não corresponde à referência.
  • 1: o nome da chamada da 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 dela.

instance

Opcional: ToolParameterKeyMatchInstance

Entrada de avaliação, que consiste em resposta e referência do LLM.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato, que é uma string serializada em JSON que contém as chaves content e tool_calls. O valor content é a saída de texto do modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramenta.

instance.reference

Opcional: string

Saída do modelo Golden no mesmo formato que a previsão.

ToolParameterKeyMatchResults

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

tool_parameter_key_match_metric_values

ToolParameterKeyMatchMetricValue repetido: resultados da avaliação por entrada da instância.

tool_parameter_key_match_metric_values.score

float: [0, 1], em que pontuações mais altas 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 dela.

instance

Opcional: ToolParameterKVMatchInstance

Entrada de avaliação, que consiste em resposta e referência do LLM.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato, que é uma string serializada em JSON que contém as chaves content e tool_calls. O valor content é a saída de texto do modelo. O valor tool_call é uma string serializada JSON de uma lista de chamadas de ferramenta.

instance.reference

Opcional: string

Saída do modelo Golden no mesmo formato que a previsão.

ToolParameterKVMatchResults

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
Saída

tool_parameter_kv_match_metric_values

ToolParameterKVMatchMetricValue repetido: resultados da avaliação por entrada da instância.

tool_parameter_kv_match_metric_values.score

float: [0, 1], em que pontuações mais altas 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 dela.

metric_spec.version

Opcional: string

COMET_22_SRC_REF: COMET 22 para tradução, origem e referência. Ele avalia a tradução (previsão) usando 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, que consiste em resposta e referência do LLM. Os campos exatos usados para avaliação dependem da versão do COMET.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato. Essa é a saída do LLM que está sendo avaliado.

instance.source

Opcional: string

Texto de origem. Esse é o idioma original em que a previsão foi traduzida.

instance.reference

Opcional: string

Informações empíricas usadas para comparar com a previsão. Está no mesmo idioma da previsão.

CometResult

{
  "comet_result" : {
    "score": float
  }
}
Saída

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 dela.

metric_spec.version

Opcional:

string

Opções:

  • METRICX_24_REF: MetricX 24 para tradução e referência. Ele avalia a previsão (tradução) comparando-a com a entrada de texto de referência fornecida.
  • METRICX_24_SRC: MetricX 24 para tradução e origem. Ele avalia a tradução (previsão) pela estimativa de qualidade (QE, na sigla em inglês), sem uma entrada de texto de referência.
  • METRICX_24_SRC_REF: MetricX 24 para tradução, origem e referência. Ele avalia a tradução (previsão) usando 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, que consiste em resposta e referência do LLM. Os campos exatos usados para avaliação dependem da versão do MetricX.

instance.prediction

Opcional: string

Resposta do LLM do modelo candidato. Essa é a saída do LLM que está sendo avaliado.

instance.source

Opcional: string

Texto de origem que está no idioma original em que a previsão foi traduzida.

instance.reference

Opcional: string

Informações empíricas usadas para comparar com a previsão. Ele está no mesmo idioma da previsão.

MetricxResult

{
  "metricx_result" : {
    "score": float
  }
}
Saída

score

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

Exemplos

Avaliar uma saída

Este exemplo demonstra como chamar a API Gen AI Evaluation para avaliar a saída de um LLM usando várias métricas de avaliação, incluindo:

  • 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
}

Avaliar uma saída: qualidade do resumo em pares

O exemplo a seguir demonstra como chamar a API do serviço de avaliação do Gen AI para avaliar a saída de um LLM usando uma comparação de qualidade de resumo em pares.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • PREDICTION: resposta do LLM.
  • BASELINE_PREDICTION: resposta do LLM do modelo de referência.
  • INSTRUCTION: a instrução usada no momento da inferência.
  • CONTEXT: texto de tempo de inferência contendo todas as informações relevantes, que podem ser usadas na resposta do LLM.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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 o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

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-1.5-pro-001")

# Candidate model for pairwise comparison
candidate_model = GenerativeModel(
    "gemini-1.5-pro-002", 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 testar esse exemplo, siga as instruções de configuração para Go no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Go.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar 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
}

Receber a pontuação média

O exemplo a seguir chama a API do serviço de avaliação de IA generativa para receber a pontuação ROUGE de uma previsão gerada por várias entradas. As entradas ROUGE usam metric_spec, que determina o comportamento da métrica.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • PREDICTION: resposta do LLM.
  • REFERENCE: resposta do LLM Golden para referência.
  • ROUGE_TYPE: o cálculo usado para determinar o valor mínimo. Consulte metric_spec.rouge_type para conferir os valores aceitáveis.
  • USE_STEMMER: determina se o stemmer de Porter é usado para remover sufixos de palavras para melhorar a correspondência. Para valores aceitáveis, consulte metric_spec.use_stemmer.
  • SPLIT_SUMMARIES: determina se novas linhas são adicionadas entre rougeLsum frases. Para 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 da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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 o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

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 testar esse exemplo, siga as instruções de configuração para Go no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Go.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar 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
}

A seguir