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), tanto pontualmente quanto em pares, com relação a várias métricas e seguindo seus próprios critérios. É possível fornecer entradas de tempo de inferência, respostas do LLM e outros parâmetros para que o serviço de avaliação de IA generativa retorne métricas específicas associadas à 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:

  • As métricas baseadas em modelo consomem a cota do gemini-1.5-pro. O serviço de avaliação de IA generativa usa gemini-1.5-pro como modelo juiz subjacente para calcular as métricas baseadas em modelo.
  • O serviço de avaliação pode ter um atraso de propagação na primeira chamada.

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

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.

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 project_id and location
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)

Avaliar uma saída: qualidade do resumo em pares

O exemplo a seguir demonstra como chamar a API Gen AI Evaluation Service 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

Receber a pontuação média

O exemplo a seguir chama a API Gen AI Evaluation Service para receber a pontuação Rouge de uma previsão gerada por várias entradas. As entradas do 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

A seguir