借助 Gen AI Evaluation Service,您可以根据自己的标准对大语言模型 (LLM) 进行逐点和成对的评估,并使用多个指标。您可以提供推理时间输入、LLM 响应和其他参数,而 Gen AI Evaluation Service 会返回特定于评估任务的指标。
指标包括基于模型的指标(例如 PointwiseMetric
和 PairwiseMetric
)和内存中计算的指标(例如 rouge
、bleu
和工具函数调用指标)。PointwiseMetric
和 PairwiseMetric
是基于模型的通用指标,您可以根据自己的条件对其进行自定义。由于该服务直接将模型的预测结果作为输入,因此评估服务可以对 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))
参数列表
参数 | |
---|---|
|
可选: 输入内容,用于评估预测结果是否与参照值完全匹配。 |
|
可选: 输入,用于通过将预测结果与参考进行比较来计算 BLEU 得分。 |
|
可选: 用于通过将预测与参考进行比较来计算 |
|
可选: 用于评估单个回答的语言掌握情况的输入。 |
|
可选: 用于评估单个回答能否提供连贯、易于理解的回答。 |
|
可选: 用于评估单个回答的安全级别的输入。 |
|
可选: 用于评估单个回答能否提供或参考仅输入文本中包含的信息能力的输入。 |
|
可选: 用于评估单个回答是否能够完全执行指令的输入。 |
|
可选: 用于评估单个回答的整体文本能力的输入。 |
|
可选: 用于比较两个回答的整体汇总质量的输入。 |
|
可选: 用于评估单个回答能否提供摘要的输入,其中包含替换原始文本所需的详细信息。 |
|
可选: 用于评估单个回答能否提供简洁的摘要的输入。 |
|
可选: 用于评估单个回答的整体回答问题的能力的输入,同时提供可供参考的文本内容。 |
|
可选: 用于比较两个回答的整体回答问题的能力的输入,同时提供要参考的文本正文。 |
|
可选: 用于评估单个回答在被询问时回答相关信息的能力。 |
|
可选: 用于评估单个回答在回答问题时提供关键详细信息的能力的输入。 |
|
可选: 用于评估单个回答正确回答问题的能力的输入。 |
|
可选: 输入通用逐点评估。 |
|
可选: 输入通用成对评估。 |
|
可选: 用于评估单个回答预测有效工具调用的能力的输入。 |
|
可选: 用于评估单个回答使用正确工具名称预测工具调用的能力的输入。 |
|
可选: 用于评估单个回答使用正确的参数名称预测工具调用的能力的输入。 |
|
可选: 用于评估单个回答能否使用正确的参数名称和值预测工具调用的能力的输入 |
ExactMatchInput
{ "exact_match_input": { "metric_spec": {}, "instances": [ { "prediction": string, "reference": string } ] } }
参数 | |
---|---|
|
可选: 指标规范,用于定义指标的行为。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: LLM 回答。 |
|
可选: 黄金 LLM 回答以供参考。 |
ExactMatchResults
{ "exact_match_results": { "exact_match_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
每个实例输入的评估结果。 |
|
以下项之一:
|
BleuInput
{ "bleu_input": { "metric_spec": { "use_effective_order": bool }, "instances": [ { "prediction": string, "reference": string } ] } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 是否考虑没有任何匹配项的 N 元语法顺序。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: LLM 回答。 |
|
可选: 黄金 LLM 回答以供参考。 |
BleuResults
{ "bleu_results": { "bleu_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
每个实例输入的评估结果。 |
|
|
RougeInput
{ "rouge_input": { "metric_spec": { "rouge_type": string, "use_stemmer": bool, "split_summaries": bool }, "instances": [ { "prediction": string, "reference": string } ] } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 可接受的值:
|
|
可选: 是否应使用 Porter 词干提取器来去除单词后缀以提高匹配度。 |
|
可选: 是否在句子之间为 rougeLsum 添加换行符。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: LLM 回答。 |
|
可选: 黄金 LLM 回答以供参考。 |
RougeResults
{ "rouge_results": { "rouge_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
每个实例输入的评估结果。 |
|
|
FluencyInput
{ "fluency_input": { "metric_spec": {}, "instance": { "prediction": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答组成。 |
|
可选: LLM 回答。 |
FluencyResult
{ "fluency_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
CoherenceInput
{ "coherence_input": { "metric_spec": {}, "instance": { "prediction": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答组成。 |
|
可选: LLM 回答。 |
CoherenceResult
{ "coherence_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
SafetyInput
{ "safety_input": { "metric_spec": {}, "instance": { "prediction": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答组成。 |
|
可选: LLM 回答。 |
SafetyResult
{ "safety_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
GroundednessInput
{ "groundedness_input": { "metric_spec": {}, "instance": { "prediction": string, "context": string } } }
参数 |
说明 |
|
可选:GroundednessSpec 定义指标行为的指标规范。 |
|
可选:GroundednessInstance 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
GroundednessResult
{ "groundedness_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
FulfillmentInput
{ "fulfillment_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
FulfillmentResult
{ "fulfillment_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
SummarizationQualityInput
{ "summarization_quality_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
SummarizationQualityResult
{ "summarization_quality_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
PairwiseSummarizationQualityInput
{ "pairwise_summarization_quality_input": { "metric_spec": {}, "instance": { "baseline_prediction": string, "prediction": string, "instruction": string, "context": string, } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: 基准模型 LLM 回答。 |
|
可选: 候选模型 LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
PairwiseSummarizationQualityResult
{ "pairwise_summarization_quality_result": { "pairwise_choice": PairwiseChoice, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
SummarizationHelpfulnessInput
{ "summarization_helpfulness_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
SummarizationHelpfulnessResult
{ "summarization_helpfulness_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
SummarizationVerbosityInput
{ "summarization_verbosity_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
SummarizationVerbosityResult
{ "summarization_verbosity_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringQualityInput
{ "question_answering_quality_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string, } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
QuestionAnsweringQualityResult
{ "question_answering_quality_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
PairwiseQuestionAnsweringQualityInput
{ "question_answering_quality_input": { "metric_spec": {}, "instance": { "baseline_prediction": string, "prediction": string, "instruction": string, "context": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: 基准模型 LLM 回答。 |
|
可选: 候选模型 LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
PairwiseQuestionAnsweringQualityResult
{ "pairwise_question_answering_quality_result": { "pairwise_choice": PairwiseChoice, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringRelevanceInput
{ "question_answering_quality_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
QuestionAnsweringRelevancyResult
{ "question_answering_relevancy_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringHelpfulnessInput
{ "question_answering_helpfulness_input": { "metric_spec": {}, "instance": { "prediction": string, "instruction": string, "context": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
QuestionAnsweringHelpfulnessResult
{ "question_answering_helpfulness_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
QuestionAnsweringCorrectnessInput
{ "question_answering_correctness_input": { "metric_spec": { "use_reference": bool }, "instance": { "prediction": string, "reference": string, "instruction": string, "context": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估中是否使用了引用。 |
|
可选: 评估输入,由推理输入和相应的回答组成。 |
|
可选: LLM 回答。 |
|
可选: 黄金 LLM 回答以供参考。 |
|
可选: 推理时使用的指令。 |
|
可选: 包含所有信息的推理时间文本,可在 LLM 回答中使用。 |
QuestionAnsweringCorrectnessResult
{ "question_answering_correctness_result": { "score": float, "explanation": string, "confidence": float } }
输出 | |
---|---|
|
|
|
|
|
|
PointwiseMetricInput
{ "pointwise_metric_input": { "metric_spec": { "metric_prompt_template": string }, "instance": { "json_instance": string, } } }
参数 | |
---|---|
|
必需: 指标规范,用于定义指标的行为。 |
|
必需: 定义指标的提示模板。它由 instance.json_instance 中的键值对呈现 |
|
必需: 评估输入,由 json_instance 组成。 |
|
可选: 以 JSON 格式表示的键值对。例如,{"key_1": "value_1", "key_2": "value_2"}。用于呈现 metric_spec.metric_prompt_template。 |
PointwiseMetricResult
{ "pointwise_metric_result": { "score": float, "explanation": string, } }
输出 | |
---|---|
|
|
|
|
PairwiseMetricInput
{ "pairwise_metric_input": { "metric_spec": { "metric_prompt_template": string }, "instance": { "json_instance": string, } } }
参数 | |
---|---|
|
必需: 指标规范,用于定义指标的行为。 |
|
必需: 定义指标的提示模板。它由 instance.json_instance 中的键值对呈现 |
|
必需: 评估输入,由 json_instance 组成。 |
|
可选: 以 JSON 格式表示的键值对。例如,{"key_1": "value_1", "key_2": "value_2"}。用于呈现 metric_spec.metric_prompt_template。 |
PairwiseMetricResult
{ "pairwise_metric_result": { "score": float, "explanation": string, } }
输出 | |
---|---|
|
|
|
|
ToolCallValidInput
{ "tool_call_valid_input": { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: 候选模型 LLM 回答,这是一个包含 { "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" } } ] } |
|
可选: 黄金模型输出与预测的格式相同。 |
ToolCallValidResults
{ "tool_call_valid_results": { "tool_call_valid_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
重复的 |
|
|
ToolNameMatchInput
{ "tool_name_match_input": { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: 候选模型 LLM 回答,这是一个包含 |
|
可选: 黄金模型输出与预测的格式相同。 |
ToolNameMatchResults
{ "tool_name_match_results": { "tool_name_match_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
重复的 |
|
|
ToolParameterKeyMatchInput
{ "tool_parameter_key_match_input": { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: 候选模型 LLM 回答,这是一个包含 |
|
可选: 黄金模型输出与预测的格式相同。 |
ToolParameterKeyMatchResults
{ "tool_parameter_key_match_results": { "tool_parameter_key_match_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
重复的 |
|
|
ToolParameterKVMatchInput
{ "tool_parameter_kv_match_input": { "metric_spec": {}, "instance": { "prediction": string, "reference": string } } }
参数 | |
---|---|
|
可选: 定义指标行为的指标规范。 |
|
可选: 评估输入,由 LLM 回答和参考组成。 |
|
可选: 候选模型 LLM 回答,这是一个包含 |
|
可选: 黄金模型输出与预测的格式相同。 |
ToolParameterKVMatchResults
{ "tool_parameter_kv_match_results": { "tool_parameter_kv_match_metric_values": [ { "score": float } ] } }
输出 | |
---|---|
|
重复的 |
|
|
示例
评估输出
以下示例演示了如何调用 Gen AI Evaluation API 来使用各种评估指标评估 LLM 的输出,包括:
summarization_quality
groundedness
fulfillment
summarization_helpfulness
summarization_verbosity
Python
评估输出:成对汇总质量
以下示例演示了如何调用 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
后续步骤
- 如需详细文档,请参阅运行评估。