本頁說明如何使用 Gen AI Evaluation Service,評估生成式語言模型和應用程式。
事前準備
安裝 Vertex AI SDK
如要從 Python 適用的 Vertex AI SDK 安裝 Gen AI 評估模組,請執行下列指令:
!pip install -q google-cloud-aiplatform[evaluation]
詳情請參閱「安裝 Python 適用的 Vertex AI SDK」。
驗證 Vertex AI SDK
安裝 Python 適用的 Vertex AI SDK 後,您需要進行驗證。下列主題說明如何透過 Vertex AI SDK 進行驗證 (如果您在本機或 Colaboratory 中工作):
如果您在本機開發,請在本機環境中設定應用程式預設憑證 (ADC):
安裝 Google Cloud CLI,然後執行下列指令初始化:
gcloud init
為 Google 帳戶建立本機驗證憑證:
gcloud auth application-default login
畫面上會顯示登入畫面。登入後,您的憑證會儲存在 ADC 使用的本機憑證檔案中。詳情請參閱「為本機開發環境設定 ADC」。
如果您在 Colaboratory 中作業,請在 Colab 儲存格中執行下列指令進行驗證:
from google.colab import auth auth.authenticate_user()
這個指令會開啟視窗,讓您完成驗證。
瞭解服務帳戶
Gen AI 評估服務會使用服務帳戶,從 Vertex AI 中的 Gemini API 取得預測結果,以評估模型。首次向 Gen AI Evaluation Service 發出要求時,系統會自動佈建這個服務帳戶。
名稱 | 說明 | 電子郵件地址 | 角色 |
---|---|---|---|
Vertex AI Rapid Eval 服務代理 | 用於取得模型評估預測結果的服務帳戶。 | service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com |
roles/aiplatform.rapidevalServiceAgent |
與快速評估服務代理相關聯的權限如下:
角色 | 權限 |
---|---|
Vertex AI Rapid Eval 服務代理 (roles/aiplatform.rapidevalServiceAgent) | aiplatform.endpoints.predict |
執行評估作業
Gen AI Evaluation Service 會使用下列以用戶端為準的程序執行評估:
run_inference()
:針對一組提示,從模型產生回覆。evaluate()
:計算生成的回應的指標。
eval_dataset = client.evals.run_inference(
model="gemini-2.5-flash",
src="gs://vertex-evaluation-llm-dataset-us-central1/genai_eval_sdk/test_prompts.jsonl",
)
eval_dataset.show()
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.QUESTION_ANSWERING_QUALITY,
types.Metric(name='bleu'),
types.Metric(name='rouge_1'),
]
)
eval_result.show()
如要分析單一評估中多個 AI 模型或系統的成效,請為每個候選項目生成回應,並將這些回應以清單形式傳遞至 evaluate()
方法:
inference_result_1 = client.evals.run_inference(
model="gemini-2.0-flash",
src=prompts_df,
)
inference_result_2 = client.evals.run_inference(
model="gemini-2.5-flash",
src=prompts_df,
)
# Compare the responses against each other
comparison_result = client.evals.evaluate(
dataset=[inference_result_1, inference_result_2],
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
]
)
comparison_result.show()
查看或重複使用生成的評分量表進行評估
如要預先生成適應性評分量表並在評估前檢查,或重複使用先前生成的評分量表,請使用下列程式碼:
# Step 1. Generate rubrics
# Rubrics would be saved in a group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
src=prompts_df,
rubric_group_name="general_quality_rubrics",
predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)
# Step 2. Run Inference
eval_dataset = client.evals.run_inference(
model=inference_model,
src=data_with_rubrics,
)
# Step 3. Evaluate with provided rubrics
# The group of rubric named "general_quality_rubrics" will be used for evaluation.
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[types.RubricMetric.GENERAL_QUALITY(
rubric_group_name="general_quality_rubrics",
)],
)
generate_rubrics()
:使用預先定義的工作流程搭配指標,產生評量表。run_inference()
:針對一組提示,從模型產生回覆。evaluate()
:根據提供的評分量表驗證回覆。
非同步大規模評估
對於大型資料集,Gen AI Evaluation Service 提供非同步的長期批次評估方法。如果您不需要立即取得結果,且想卸載運算作業,這就是理想的做法。
batch_evaluate()
方法會傳回作業物件,您可以輪詢該物件來追蹤進度。參數與 evaluate()
方法相容。
GCS_DEST_BUCKET = "gs://your-gcs-bucket/batch_eval_results/"
inference_result_saved = client.evals.run_inference(
model="gemini-2.0-flash",
src=prompts_df,
config={'dest': GCS_DEST_BUCKET}
)
print(f"Eval dataset uploaded to: {inference_result_saved.gcs_source}")
batch_eval_job = client.evals.batch_evaluate(
dataset = inference_result_saved,
metrics = [
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
types.RubricMetric.FLUENCY,
types.Metric(name='bleu'),
],
dest=GCS_DEST_BUCKET
)
評估第三方模型
您可以將模型名稱字串傳遞至 run_inference
方法,使用 Gen AI 評估服務評估及比較 OpenAI 等供應商的模型。Gen AI Evaluation Service 會使用 litellm
程式庫呼叫模型 API。
請務必將必要的 API 金鑰設為環境變數 (例如 OPENAI_API_KEY
):
import os
# Set your third-party model API key
os.environ['OPENAI_API_KEY'] = 'YOUR_OPENAI_API_KEY'
# Run inference on an OpenAI model
gpt_response = client.evals.run_inference(
model='gpt-4o',
src=prompt_df
)
# You can now evaluate the responses
eval_result = client.evals.evaluate(
dataset=gpt_response,
metrics=[types.RubricMetric.TEXT_QUALITY]
)
eval_result.show()