Gen AI Evaluation Service API

借助 Gen AI Evaluation Service,您可以根据自己的标准对大语言模型 (LLM) 进行逐点和成对的评估,并使用多个指标。您可以提供推理时间输入、LLM 响应和其他参数,而 Gen AI Evaluation Service 会返回特定于评估任务的指标。

指标包括基于模型的指标(例如 PointwiseMetricPairwiseMetric)和内存中计算的指标(例如 rougebleu 和工具函数调用指标)。PointwiseMetricPairwiseMetric 是基于模型的通用指标,您可以根据自己的条件对其进行自定义。由于该服务直接将模型的预测结果作为输入,因此评估服务可以对 Vertex AI 支持的所有模型执行推断和后续评估。

如需详细了解如何评估模型,请参阅生成式 AI 评估服务概览

限制

评估服务存在以下限制:

  • 基于模型的指标会消耗 gemini-1.5-pro 配额。Gen AI Evaluation Service 利用 gemini-1.5-pro 作为底层评判模型来计算基于模型的指标。
  • 评估服务在首次调用时可能会有传播延迟。

示例语法

用于发送评估调用的语法。

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))

参数列表

参数

exact_match_input

可选:ExactMatchInput

输入内容,用于评估预测结果是否与参照值完全匹配。

bleu_input

可选:BleuInput

输入,用于通过将预测结果与参考进行比较来计算 BLEU 得分。

rouge_input

可选:RougeInput

用于通过将预测与参考进行比较来计算 rouge 分数的输入。rouge_type 支持不同的 rouge 得分。

fluency_input

可选:FluencyInput

用于评估单个回答的语言掌握情况的输入。

coherence_input

可选:CoherenceInput

用于评估单个回答能否提供连贯、易于理解的回答。

safety_input

可选:SafetyInput

用于评估单个回答的安全级别的输入。

groundedness_input

可选:GroundednessInput

用于评估单个回答能否提供或参考仅输入文本中包含的信息能力的输入。

fulfillment_input

可选:FulfillmentInput

用于评估单个回答是否能够完全执行指令的输入。

summarization_quality_input

可选:SummarizationQualityInput

用于评估单个回答的整体文本能力的输入。

pairwise_summarization_quality_input

可选:PairwiseSummarizationQualityInput

用于比较两个回答的整体汇总质量的输入。

summarization_helpfulness_input

可选:SummarizationHelpfulnessInput

用于评估单个回答能否提供摘要的输入,其中包含替换原始文本所需的详细信息。

summarization_verbosity_input

可选:SummarizationVerbosityInput

用于评估单个回答能否提供简洁的摘要的输入。

question_answering_quality_input

可选:QuestionAnsweringQualityInput

用于评估单个回答的整体回答问题的能力的输入,同时提供可供参考的文本内容。

pairwise_question_answering_quality_input

可选:PairwiseQuestionAnsweringQualityInput

用于比较两个回答的整体回答问题的能力的输入,同时提供要参考的文本正文。

question_answering_relevance_input

可选:QuestionAnsweringRelevanceInput

用于评估单个回答在被询问时回答相关信息的能力。

question_answering_helpfulness_input

可选:QuestionAnsweringHelpfulnessInput

用于评估单个回答在回答问题时提供关键详细信息的能力的输入。

question_answering_correctness_input

可选:QuestionAnsweringCorrectnessInput

用于评估单个回答正确回答问题的能力的输入。

pointwise_metric_input

可选:PointwiseMetricInput

输入通用逐点评估。

pairwise_metric_input

可选:PairwiseMetricInput

输入通用成对评估。

tool_call_valid_input

可选:ToolCallValidInput

用于评估单个回答预测有效工具调用的能力的输入。

tool_name_match_input

可选:ToolNameMatchInput

用于评估单个回答使用正确工具名称预测工具调用的能力的输入。

tool_parameter_key_match_input

可选:ToolParameterKeyMatchInput

用于评估单个回答使用正确的参数名称预测工具调用的能力的输入。

tool_parameter_kv_match_input

可选:ToolParameterKvMatchInput

用于评估单个回答能否使用正确的参数名称和值预测工具调用的能力的输入

ExactMatchInput

{
  "exact_match_input": {
    "metric_spec": {},
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
参数

metric_spec

可选:ExactMatchSpec

指标规范,用于定义指标的行为。

instances

可选:ExactMatchInstance[]

评估输入,由 LLM 回答和参考组成。

instances.prediction

可选:string

LLM 回答。

instances.reference

可选:string

黄金 LLM 回答以供参考。

ExactMatchResults

{
  "exact_match_results": {
    "exact_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

exact_match_metric_values

ExactMatchMetricValue[]

每个实例输入的评估结果。

exact_match_metric_values.score

float

以下项之一:

  • 0:实例不完全匹配
  • 1:完全匹配

BleuInput

{
  "bleu_input": {
    "metric_spec": {
      "use_effective_order": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
参数

metric_spec

可选:BleuSpec

定义指标行为的指标规范。

metric_spec.use_effective_order

可选:bool

是否考虑没有任何匹配项的 N 元语法顺序。

instances

可选:BleuInstance[]

评估输入,由 LLM 回答和参考组成。

instances.prediction

可选:string

LLM 回答。

instances.reference

可选:string

黄金 LLM 回答以供参考。

BleuResults

{
  "bleu_results": {
    "bleu_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

bleu_metric_values

BleuMetricValue[]

每个实例输入的评估结果。

bleu_metric_values.score

float[0, 1],其中分数越高,表示预测更像参考。

RougeInput

{
  "rouge_input": {
    "metric_spec": {
      "rouge_type": string,
      "use_stemmer": bool,
      "split_summaries": bool
    },
    "instances": [
      {
        "prediction": string,
        "reference": string
      }
    ]
  }
}
参数

metric_spec

可选:RougeSpec

定义指标行为的指标规范。

metric_spec.rouge_type

可选:string

可接受的值:

  • rougen[1-9]:根据预测结果与参考文本之间的 n-gram 重叠情况计算 rouge 得分。
  • rougeL:根据预测和参考之间的最长公共子序列 (LCS) 计算 rouge 得分。
  • rougeLsum:首先将预测结果和引用拆分为句子,然后计算每个元组的 LCS。最终的 rougeLsum 得分是这些 LCS 得分的平均值。

metric_spec.use_stemmer

可选:bool

是否应使用 Porter 词干提取器来去除单词后缀以提高匹配度。

metric_spec.split_summaries

可选:bool

是否在句子之间为 rougeLsum 添加换行符。

instances

可选:RougeInstance[]

评估输入,由 LLM 回答和参考组成。

instances.prediction

可选:string

LLM 回答。

instances.reference

可选:string

黄金 LLM 回答以供参考。

RougeResults

{
  "rouge_results": {
    "rouge_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

rouge_metric_values

RougeValue[]

每个实例输入的评估结果。

rouge_metric_values.score

float[0, 1],其中分数越高,表示预测更像参考。

FluencyInput

{
  "fluency_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
参数

metric_spec

可选:FluencySpec

定义指标行为的指标规范。

instance

可选:FluencyInstance

评估输入,由 LLM 回答组成。

instance.prediction

可选:string

LLM 回答。

FluencyResult

{
  "fluency_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:口齿不清
  • 2:有点口齿不清
  • 3:中性
  • 4:还算流畅
  • 5:流畅

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

CoherenceInput

{
  "coherence_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
参数

metric_spec

可选:CoherenceSpec

定义指标行为的指标规范。

instance

可选:CoherenceInstance

评估输入,由 LLM 回答组成。

instance.prediction

可选:string

LLM 回答。

CoherenceResult

{
  "coherence_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:不连贯
  • 2:有点不连贯
  • 3:中性
  • 4:还算连贯
  • 5:连贯

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

SafetyInput

{
  "safety_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string
    }
  }
}
参数

metric_spec

可选:SafetySpec

定义指标行为的指标规范。

instance

可选:SafetyInstance

评估输入,由 LLM 回答组成。

instance.prediction

可选:string

LLM 回答。

SafetyResult

{
  "safety_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 0:不安全
  • 1:安全

explanation

string:得分分配的理由。

confidence

float:结果的置信度分数为 [0, 1]

GroundednessInput

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

参数

说明

metric_spec

可选:GroundednessSpec

定义指标行为的指标规范。

instance

可选:GroundednessInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

GroundednessResult

{
  "groundedness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 0:没有以事实为依据
  • 1:以事实为依据

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

FulfillmentInput

{
  "fulfillment_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string
    }
  }
}
参数

metric_spec

可选:FulfillmentSpec

定义指标行为的指标规范。

instance

可选:FulfillmentInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

FulfillmentResult

{
  "fulfillment_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:没有履行
  • 2:履行不佳
  • 3:履行尚可
  • 4:履行良好
  • 5:完全履行

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

SummarizationQualityInput

{
  "summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
参数

metric_spec

可选:SummarizationQualitySpec

定义指标行为的指标规范。

instance

可选:SummarizationQualityInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

SummarizationQualityResult

{
  "summarization_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:很差
  • 2:差
  • 3:尚可
  • 4:良好
  • 5:非常好

explanation

string:为分数分配值的理由。

confidence

float[0, 1] 结果的置信度得分。

PairwiseSummarizationQualityInput

{
  "pairwise_summarization_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
参数

metric_spec

可选:PairwiseSummarizationQualitySpec

定义指标行为的指标规范。

instance

可选:PairwiseSummarizationQualityInstance

评估输入,由推理输入和相应的回答组成。

instance.baseline_prediction

可选:string

基准模型 LLM 回答。

instance.prediction

可选:string

候选模型 LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

PairwiseSummarizationQualityResult

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

pairwise_choice

PairwiseChoice:枚举,可能的值如下:

  • BASELINE:基准预测较好
  • CANDIDATE:候选预测效果更好
  • TIE:基准预测和候选预测之间的对比情况。

explanation

string:对 pairwise_choice 分配的理由。

confidence

float[0, 1] 结果的置信度得分。

SummarizationHelpfulnessInput

{
  "summarization_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
参数

metric_spec

可选:SummarizationHelpfulnessSpec

定义指标行为的指标规范。

instance

可选:SummarizationHelpfulnessInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

SummarizationHelpfulnessResult

{
  "summarization_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:没用
  • 2:不太有用
  • 3:中性
  • 4:比较有帮助
  • 5:有帮助

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

SummarizationVerbosityInput

{
  "summarization_verbosity_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
参数

metric_spec

可选:SummarizationVerbositySpec

定义指标行为的指标规范。

instance

可选:SummarizationVerbosityInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

SummarizationVerbosityResult

{
  "summarization_verbosity_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float。以下项之一:

  • -2:简洁
  • -1:比较简洁
  • 0:最佳
  • 1:比较详细
  • 2:详细

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

QuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string,
    }
  }
}
参数

metric_spec

可选:QuestionAnsweringQualitySpec

定义指标行为的指标规范。

instance

可选:QuestionAnsweringQualityInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

QuestionAnsweringQualityResult

{
  "question_answering_quality_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:很差
  • 2:差
  • 3:尚可
  • 4:良好
  • 5:非常好

explanation

string:为分数分配值的理由。

confidence

float[0, 1] 结果的置信度得分。

PairwiseQuestionAnsweringQualityInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "baseline_prediction": string,
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
参数

metric_spec

可选:QuestionAnsweringQualitySpec

定义指标行为的指标规范。

instance

可选:QuestionAnsweringQualityInstance

评估输入,由推理输入和相应的回答组成。

instance.baseline_prediction

可选:string

基准模型 LLM 回答。

instance.prediction

可选:string

候选模型 LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

PairwiseQuestionAnsweringQualityResult

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

pairwise_choice

PairwiseChoice:枚举,可能的值如下:

  • BASELINE:基准预测较好
  • CANDIDATE:候选预测效果更好
  • TIE:基准预测与候选预测相等。

explanation

stringpairwise_choice 分配的理由。

confidence

float:结果的置信度分数为 [0, 1]

QuestionAnsweringRelevanceInput

{
  "question_answering_quality_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
参数

metric_spec

可选:QuestionAnsweringRelevanceSpec

定义指标行为的指标规范。

instance

可选:QuestionAnsweringRelevanceInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

QuestionAnsweringRelevancyResult

{
  "question_answering_relevancy_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:不相关
  • 2:不太相关
  • 3:中性
  • 4:还算相关
  • 5:相关

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

QuestionAnsweringHelpfulnessInput

{
  "question_answering_helpfulness_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "instruction": string,
      "context": string
    }
  }
}
参数

metric_spec

可选:QuestionAnsweringHelpfulnessSpec

定义指标行为的指标规范。

instance

可选:QuestionAnsweringHelpfulnessInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

QuestionAnsweringHelpfulnessResult

{
  "question_answering_helpfulness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 1:没用
  • 2:不太有用
  • 3:中性
  • 4:比较有帮助
  • 5:有帮助

explanation

string:得分分配的理由。

confidence

float[0, 1] 结果的置信度得分。

QuestionAnsweringCorrectnessInput

{
  "question_answering_correctness_input": {
    "metric_spec": {
      "use_reference": bool
    },
    "instance": {
      "prediction": string,
      "reference": string,
      "instruction": string,
      "context": string
    }
  }
}
参数

metric_spec

可选:QuestionAnsweringCorrectnessSpec

定义指标行为的指标规范。

metric_spec.use_reference

可选:bool

评估中是否使用了引用。

instance

可选:QuestionAnsweringCorrectnessInstance

评估输入,由推理输入和相应的回答组成。

instance.prediction

可选:string

LLM 回答。

instance.reference

可选:string

黄金 LLM 回答以供参考。

instance.instruction

可选:string

推理时使用的指令。

instance.context

可选:string

包含所有信息的推理时间文本,可在 LLM 回答中使用。

QuestionAnsweringCorrectnessResult

{
  "question_answering_correctness_result": {
    "score": float,
    "explanation": string,
    "confidence": float
  }
}
输出

score

float:下列其中一种:

  • 0:错误
  • 1:正确

explanation

string:为分数分配值的理由。

confidence

float[0, 1] 结果的置信度得分。

PointwiseMetricInput

{
  "pointwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
参数

metric_spec

必需:PointwiseMetricSpec

指标规范,用于定义指标的行为。

metric_spec.metric_prompt_template

必需:string

定义指标的提示模板。它由 instance.json_instance 中的键值对呈现

instance

必需:PointwiseMetricInstance

评估输入,由 json_instance 组成。

instance.json_instance

可选:string

以 JSON 格式表示的键值对。例如,{"key_1": "value_1", "key_2": "value_2"}。用于呈现 metric_spec.metric_prompt_template。

PointwiseMetricResult

{
  "pointwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
输出

score

float:点状指标评估结果的得分。

explanation

string:得分分配的理由。

PairwiseMetricInput

{
  "pairwise_metric_input": {
    "metric_spec": {
      "metric_prompt_template": string
    },
    "instance": {
      "json_instance": string,
    }
  }
}
参数

metric_spec

必需:PairwiseMetricSpec

指标规范,用于定义指标的行为。

metric_spec.metric_prompt_template

必需:string

定义指标的提示模板。它由 instance.json_instance 中的键值对呈现

instance

必需:PairwiseMetricInstance

评估输入,由 json_instance 组成。

instance.json_instance

可选:string

以 JSON 格式表示的键值对。例如,{"key_1": "value_1", "key_2": "value_2"}。用于呈现 metric_spec.metric_prompt_template。

PairwiseMetricResult

{
  "pairwise_metric_result": {
    "score": float,
    "explanation": string,
  }
}
输出

score

float:成对指标评估结果的得分。

explanation

string:得分分配的理由。

ToolCallValidInput

{
  "tool_call_valid_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
参数

metric_spec

可选:ToolCallValidSpec

定义指标行为的指标规范。

instance

可选:ToolCallValidInstance

评估输入,由 LLM 回答和参考组成。

instance.prediction

可选:string

候选模型 LLM 回答,这是一个包含 contenttool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。示例如下:

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

可选:string

黄金模型输出与预测的格式相同。

ToolCallValidResults

{
  "tool_call_valid_results": {
    "tool_call_valid_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

tool_call_valid_metric_values

重复的 ToolCallValidMetricValue:每个实例输入的评估结果。

tool_call_valid_metric_values.score

float:下列其中一种:

  • 0:工具调用无效
  • 1:工具调用有效

ToolNameMatchInput

{
  "tool_name_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
参数

metric_spec

可选:ToolNameMatchSpec

定义指标行为的指标规范。

instance

可选:ToolNameMatchInstance

评估输入,由 LLM 回答和参考组成。

instance.prediction

可选:string

候选模型 LLM 回答,这是一个包含 contenttool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。

instance.reference

可选:string

黄金模型输出与预测的格式相同。

ToolNameMatchResults

{
  "tool_name_match_results": {
    "tool_name_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

tool_name_match_metric_values

重复的 ToolNameMatchMetricValue:每个实例输入的评估结果。

tool_name_match_metric_values.score

float:下列其中一种:

  • 0:工具调用名称与参照项不匹配。
  • 1:工具调用名称与参照项匹配。

ToolParameterKeyMatchInput

{
  "tool_parameter_key_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
参数

metric_spec

可选:ToolParameterKeyMatchSpec

定义指标行为的指标规范。

instance

可选:ToolParameterKeyMatchInstance

评估输入,由 LLM 回答和参考组成。

instance.prediction

可选:string

候选模型 LLM 回答,这是一个包含 contenttool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。

instance.reference

可选:string

黄金模型输出与预测的格式相同。

ToolParameterKeyMatchResults

{
  "tool_parameter_key_match_results": {
    "tool_parameter_key_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

tool_parameter_key_match_metric_values

重复的 ToolParameterKeyMatchMetricValue:每个实例输入的评估结果。

tool_parameter_key_match_metric_values.score

float[0, 1],其中得分越高,表示与引用参数名称匹配的参数越多。

ToolParameterKVMatchInput

{
  "tool_parameter_kv_match_input": {
    "metric_spec": {},
    "instance": {
      "prediction": string,
      "reference": string
    }
  }
}
参数

metric_spec

可选:ToolParameterKVMatchSpec

定义指标行为的指标规范。

instance

可选:ToolParameterKVMatchInstance

评估输入,由 LLM 回答和参考组成。

instance.prediction

可选:string

候选模型 LLM 回答,这是一个包含 contenttool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。

instance.reference

可选:string

黄金模型输出与预测的格式相同。

ToolParameterKVMatchResults

{
  "tool_parameter_kv_match_results": {
    "tool_parameter_kv_match_metric_values": [
      {
        "score": float
      }
    ]
  }
}
输出

tool_parameter_kv_match_metric_values

重复的 ToolParameterKVMatchMetricValue:每个实例输入的评估结果。

tool_parameter_kv_match_metric_values.score

float[0, 1],得分越高,表示与参考参数的名称和值匹配的参数越多。

示例

评估输出

以下示例演示了如何调用 Gen AI Evaluation API 来使用各种评估指标评估 LLM 的输出,包括:

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

评估输出:成对汇总质量

以下示例演示了如何调用 Gen AI 评估服务 API 来使用成对摘要质量比较来评估 LLM 的输出。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • LOCATION:处理请求的区域。
  • PREDICTION:LLM 回答
  • BASELINE_PREDICTION:基准模型 LLM 回答。
  • INSTRUCTION:推理时使用的指令。
  • CONTEXT:包含所有相关信息的推理时间文本,可在 LLM 回答中使用。

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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

获取 rouge 得分

以下示例调用 Gen AI 评估服务 API 以获取由多个输入生成的预测结果的 Rouge 得分。Rouge 输入使用 metric_spec,它决定了指标的行为。

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • LOCATION:处理请求的区域。
  • PREDICTION:LLM 回答
  • REFERENCE:黄金 LLM 回答以供参考。
  • ROUGE_TYPE:用于确定 rouge 得分的计算。如需了解可接受的值,请参阅 metric_spec.rouge_type
  • USE_STEMMER:确定是否使用 Porter 词干提取器来去除单词后缀以提高匹配度。如需了解可接受的值,请参阅 metric_spec.use_stemmer
  • SPLIT_SUMMARIES:确定是否在 rougeLsum 句子之间添加新行。如需了解可接受的值,请参阅 metric_spec.split_summaries

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

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

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$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

后续步骤