הרצת הערכה

אתם יכולים להשתמש במודול הערכת AI גנרטיבי של Agent Platform SDK for Python כדי להעריך באופן פרוגרמטי את מודלי השפה הגנרטיבית והאפליקציות שלכם באמצעות ה-API של שירות ההערכה של AI גנרטיבי. בדף הזה מוסבר איך להריץ הערכות באמצעות Agent Platform SDK. שימו לב שאפשר להעריך בקנה מידה נרחב רק באמצעות ה-API בארכיטקטורת REST.

לפני שמתחילים

כדי להתחיל להריץ הערכות, צריך להשלים את הדרישות המוקדמות הבאות.

התקנת Agent Platform SDK

כדי להתקין את מודול AI גנרטיבי Evaluation מ-Agent Platform SDK ל-Python, מריצים את הפקודה הבאה:

!pip install -q google-cloud-aiplatform[evaluation]

מידע נוסף מופיע במאמר התקנת Agent Platform SDK לפייתון.

אימות ה-SDK של Agent Platform

אחרי שמתקינים את Agent Platform SDK for Python, צריך לבצע אימות. בנושאים הבאים מוסבר איך לבצע אימות באמצעות Agent Platform SDK אם אתם עובדים באופן מקומי ואם אתם עובדים ב-Colaboratory:

  • אם אתם מפתחים באופן מקומי, הגדירו את Application Default Credentials (ADC) בסביבה המקומית:

    1. מתקינים את ה-CLI של Google Cloud ומאתחלים אותו באמצעות הפקודה הבאה:

      gcloud init
      
    2. יצירת פרטי כניסה לאימות מקומי בחשבון Google:

      gcloud auth application-default login
      

      מסך התחברות יוצג לפניכם. אחרי שנכנסים, פרטי הכניסה נשמרים בקובץ פרטי הכניסה המקומי שמשמש את ADC. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.

  • אם אתם עובדים ב-Colaboratory, הריצו את הפקודה הבאה בתא Colab כדי לבצע אימות:

    from google.colab import auth
    auth.authenticate_user()
    

    הפקודה הזו פותחת חלון שבו אפשר להשלים את האימות.

הסבר על חשבונות שירות

שירות ההערכה ל-AI גנרטיבי משתמש בחשבון השירות כדי לקבל חיזויים מ-Gemini API ב-Gemini Enterprise Agent Platform למדדי הערכה שמבוססים על מודלים. חשבון השירות הזה מוקצה באופן אוטומטי בבקשה הראשונה לשירות ההערכה של AI גנרטיבי.

שם תיאור כתובת האימייל תפקיד
סוכן שירות של Agent Platform 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

הרצת ההערכה

אפשר להשתמש במחלקה EvalTask כדי להריץ הערכות בתרחישים הבאים:

כיתה אחת (EvalTask)

הכיתה EvalTask עוזרת להעריך מודלים ואפליקציות על סמך משימות ספציפיות. כדי להשוות באופן הוגן בין מודלים גנרטיביים, בדרך כלל צריך להעריך שוב ושוב מודלים שונים ותבניות לפרומפטים מול מערך נתונים קבוע להערכה באמצעות מדדים ספציפיים. חשוב גם להעריך כמה מדדים בו-זמנית בהרצת הערכה אחת.

‫EvalTask משתלב גם עם ניסויים ב-Gemini Enterprise Agent Platform כדי לעזור לכם לעקוב אחרי ההגדרות והתוצאות של כל הרצת הערכה. הניסויים ב-Gemini Enterprise Agent Platform עוזרים לנהל ולפרש את תוצאות ההערכה, כדי שתוכלו לקבל החלטות מושכלות.

בדוגמה הבאה אפשר לראות איך יוצרים מופע של המחלקה EvalTask ומריצים הערכה:

from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    PairwiseMetricPromptTemplate,
    PointwiseMetric,
    PointwiseMetricPromptTemplate,
    MetricPromptTemplateExamples,
)

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
    experiment=EXPERIMENT_NAME,
)

eval_result = eval_task.evaluate(
    model=MODEL,
    prompt_template=PROMPT_TEMPLATE,
    experiment_run=EXPERIMENT_RUN,
)

הרצת הערכה באמצעות מדדים שמבוססים על מודלים

במדדים מבוססי-מודל, משתמשים במחלקות PointwiseMetric ו-PairwiseMetric כדי להגדיר מדדים שמותאמים לקריטריונים הספציפיים שלכם. מריצים הערכות באמצעות האפשרויות הבאות:

דוגמאות לשימוש במדדים שמבוססים על מודלים

אתם יכולים להשתמש ישירות בקבוע המובנה Metric Prompt Template Examples ב-Agent Platform SDK. לחלופין, אפשר לשנות אותם ולשלב אותם בממשק להגדרת מדדים בפריסה גמישה.

כדי לראות את הרשימה המלאה של דוגמאות לתבניות פרומפטים למדדים, שכוללת את רוב תרחישי השימוש העיקריים, קראו את המאמר תבניות פרומפטים למדדים.

המסוף

כשמריצים הערכות ב-notebook של Colab Enterprise, אפשר לגשת לתבניות פרומפטים למדדים ישירות ממסוף Google Cloud .

  1. לוחצים על הקישור ל-Notebook של שירות הערכה ל-AI גנרטיבי שרוצים להשתמש בו.

  2. ה-notebook נפתח ב-GitHub. לוחצים על Open in Colab Enterprise. אם מופיעה תיבת דו-שיח שבה אתם מתבקשים להפעיל ממשקי API, לחצו על Enable.

  3. בסרגל הצד, לוחצים על הסמל הערכת AI גנרטיבי. נפתחת החלונית תבניות מדדים מוכנות מראש.

  4. בוחרים מדדים נקודתיים או זוגיים.

  5. לוחצים על המדד שרוצים להשתמש בו, למשל שטף דיבור. דוגמת הקוד של המדד מופיעה.

  6. לוחצים על העתקה כדי להעתיק את דוגמת הקוד. אם רוצים, לוחצים על התאמה אישית כדי לשנות את השדות שהוגדרו מראש למדד.

  7. מדביקים את דוגמת הקוד ב-Notebook.

Agent Platform SDK

בדוגמה הבאה של Agent Platform SDK מוסבר איך להשתמש בכיתה MetricPromptTemplateExamples כדי להגדיר את המדדים:

# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()

# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))

# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)

eval_result = eval_task.evaluate(
    model=MODEL,
)

שימוש בממשק מבוסס-תבניות למדדים מבוססי-מודלים

כדי להתאים אישית את המדדים, אתם יכולים לאכלס שדות כמו Criteria ו-Rating Rubrics באמצעות המחלקות PointwiseMetricPromptTemplate ו-PairwiseMetricPromptTemplate ב-Agent Platform SDK. אם לא תזינו ערכים בשדות מסוימים, כמו Instruction, יוקצה להם ערך ברירת מחדל.

אפשר גם לציין את input_variables, רשימה של שדות להזנת קלט שמשמשים את תבנית הפרומפט למדדים כדי ליצור תוצאות הערכה שמבוססות על מודל. כברירת מחדל, העמודה response של המודל נכללת במדדים נקודתיים, והעמודות response ו-baseline_model_response של המודל המועמד נכללות במדדים זוגיים.

מידע נוסף זמין בקטע "מבנה של תבנית פרומפט למדדים" במאמר תבניות פרומפט למדדים.

# Define a pointwise metric with two custom criteria
custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
          "fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
          "entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
        },
        rating_rubric={
          "1": "The response performs well on both criteria.",
          "0": "The response is somewhat aligned with both criteria",
          "-1": "The response falls short on both criteria",
        },
        input_variables=["prompt"],
    ),
)

# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)

# Run evaluation using the custom_text_quality metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

שימוש בממשק SDK של מדדים מבוססי-מודל בפריסה גמישה

כדי ליהנות מגמישות רבה יותר בהתאמה אישית של תבנית הפרומפט למדדים, אתם יכולים להגדיר מדד ישירות באמצעות הממשק בפריסה גמישה, שמקבל קלט ישיר של מחרוזת.

# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
 Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.

# Conversation History
{history}

# Current User Prompt
{prompt}

# AI-generated Response
{response}
"""

freeform_multi_turn_chat_quality_metric = PointwiseMetric(
    metric="multi_turn_chat_quality_metric",
    metric_prompt_template=pointwise_chat_quality_metric_prompt,
)

# Run evaluation using the freeform_multi_turn_chat_quality_metric metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

הערכת מודל תרגום

כדי להעריך את מודל התרגום, אתם יכולים לציין את BLEU,‏ MetricX או COMET כמדדי הערכה כשאתם משתמשים ב-Agent Platform SDK.

#Prepare the dataset for evaluation.
sources = [
    "Dem Feuer konnte Einhalt geboten werden",
    "Schulen und Kindergärten wurden eröffnet.",
]

responses = [
    "The fire could be stopped",
    "Schools and kindergartens were open",
]

references = [
    "They were able to control the fire.",
    "Schools and kindergartens opened",
]

eval_dataset = pd.DataFrame({
    "source": sources,
    "response": responses,
    "reference": references,
})

# Set the metrics.

metrics = [
    "bleu",
    pointwise_metric.Comet(),
    pointwise_metric.MetricX(),
]

eval_task = evaluation.EvalTask(
    dataset=eval_dataset,
    metrics=metrics,
)
eval_result = eval_task.evaluate()

הרצת הערכה עם השוואות מבוססות-מחשוב

אפשר להשתמש בהשוואות מבוססות-מחשוב לבד או בשילוב עם השוואות מבוססות-מודלים.

# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

הרצת הערכות בקנה מידה נרחב

אם יש לכם קבוצות נתונים גדולות להערכה או שאתם מריצים הערכות מדי פעם בסביבת ייצור, אתם יכולים להשתמש ב-API של EvaluateDataset בשירות ההערכה של AI גנרטיבי כדי להריץ הערכות בקנה מידה גדול.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_NUMBER: מספר הפרויקט.
  • ‫DATASET_URI: הנתיב ב-Cloud Storage לקובץ JSONL שמכיל את המופעים להערכה. כל שורה בקובץ צריכה לייצג מופע אחד, עם מפתחות שתואמים לשדות להזנת קלט שמוגדרים על ידי המשתמש ב-metric_prompt_template (למדדים מבוססי-מודל) או לפרמטרים נדרשים של קלט (למדדים מבוססי-חישוב). אפשר לציין רק קובץ JSONL אחד. הדוגמה הבאה היא שורה של מופע הערכה נקודתית:
    {"response": "The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."}
  • ‫METRIC_SPEC: מפרט מדדים אחד או יותר שאתם משתמשים בהם להערכה. אפשר להשתמש במפרטי המדדים הבאים כשמריצים הערכות בקנה מידה נרחב: "pointwise_metric_spec",‏ "pairwise_metric_spec",‏ "exact_match_spec",‏ "bleu_spec" ו-"rouge_spec".
  • ‫METRIC_SPEC_FIELD_NAME: שדות החובה במפרט המדדים שבחרתם. לדוגמה, "metric_prompt_template"
  • ‫METRIC_SPEC_FIELD_CONTENT: תוכן השדה של מפרט המדדים שבחרתם. לדוגמה, אתם יכולים להשתמש בתוכן השדה הבא להערכה נקודתית: "Evaluate the fluency of this sentence: {response}. Give score from 0 to 1. 0 - not fluent at all. 1 - very fluent."
  • ‫OUTPUT_BUCKET: השם של הקטגוריה של Cloud Storage שבה רוצים לשמור את תוצאות ההערכה.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset

גוף בקשת JSON:

{
  "dataset": {
    "gcs_source": {
      "uris": "DATASET_URI"
    }
  },
  "metrics": [
    {
      METRIC_SPEC: {
        METRIC_SPEC_FIELD_NAME: METRIC_SPEC_FIELD_CONTENT
      }
    }
  ],
  "output_config": {
    "gcs_destination": {
      "output_uri_prefix": "OUTPUT_BUCKET"
    }
  }
}

כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

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://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset"

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://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

אתם יכולים להשתמש ב-OPERATION_ID שקיבלתם בתגובה כדי לבקש את סטטוס ההערכה:

curl -X GET \
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/operations/OPERATION_ID"

התאמה אישית של מדדים נוספים

אם אתם צריכים להתאים אישית את המדדים, למשל לבחור מודל שופט אחר למדדים מבוססי-מודל, או להגדיר מדד חדש מבוסס-מחשוב, אתם יכולים להשתמש במחלקה CustomMetric ב-Agent Platform SDK. לפרטים נוספים, עיינו ב-notebooks הבאים:

הפעלת הערכה מבוססת-מודל עם מכסות והגבלות קצב גבוהות יותר של יצירת בקשות

בקשת הערכה אחת למדד שמבוסס על מודל יוצרת כמה בקשות בסיסיות ל-Gemini API ב-Agent Platform, וצורכת מכסה של המודל השופט. כדאי להגדיר מגבלת קצב גבוהה יותר לשירות ההערכה בתרחישים הבאים:

  • נפח נתונים מוגבר: אם אתם מעבדים הרבה יותר נתונים באמצעות המדדים שמבוססים על מודלים, יכול להיות שתגיעו למכסת ברירת המחדל של בקשות לדקה (RPM). הגדלת המכסה מאפשרת לכם לטפל בנפח הגדול יותר בלי לפגוע בביצועים או לגרום להפרעות.

  • הערכה מהירה יותר: אם האפליקציה שלכם דורשת זמן תגובה מהיר יותר להערכות, יכול להיות שתצטרכו מכסת RPM גבוהה יותר. זה חשוב במיוחד באפליקציות שבהן הזמן הוא גורם קריטי או באפליקציות עם אינטראקציות בזמן אמת, שבהן עיכובים בהערכה יכולים להשפיע על חוויית המשתמש.

  • משימות הערכה מורכבות: מכסת RPM גבוהה יותר מבטיחה שיש לכם מספיק קיבולת כדי לטפל בהערכות שצורכות משאבים רבים, למשימות מורכבות או לכמויות גדולות של טקסט.

  • מספר גבוה של משתמשים בו-זמנית: אם אתם צופים שמספר גדול של משתמשים יבקשו בו-זמנית הערכות מבוססות-מודל והסקת מסקנות מהמודל בפרויקט, חשוב להגדיר מגבלת RPM גבוהה יותר למודל כדי למנוע צווארי בקבוק ולשמור על זמן תגובה מהיר.

אם אתם משתמשים במודל השופט שמוגדר כברירת מחדל, Gemini 2.5 Flash, או במודלים חדשים יותר, מומלץ להשתמש בהקצאת משאבים לפי התפוקה שנקבעה כדי לנהל את המכסה.

כדי להריץ הערכה באמצעות מכסה חדשה, מגדירים את הפרמטר evaluation_service_qps באופן הבא:

from vertexai.evaluation import EvalTask

# GEMINI_RPM is the requests per minute (RPM) quota for gemini-2.0-flash-001 in your region
# Evaluation Service QPS limit is equal to (gemini-2.0-flash-001 RPM / 60 sec / default number of samples)
CUSTOM_EVAL_SERVICE_QPS_LIMIT = GEMINI_RPM / 60 / 4

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
)

eval_result = eval_task.evaluate(
    evaluation_service_qps=CUSTOM_EVAL_SERVICE_QPS_LIMIT,
    # Specify a retry_timeout limit for a more responsive evaluation run
    # the default value is 600 (in seconds, or 10 minutes)
    retry_timeout=RETRY_TIMEOUT,
)

מידע נוסף על מכסות ומגבלות זמין במאמרים מכסות של שירות הערכת ה-AI הגנרטיבי וממשק ה-API של שירות הערכת ה-AI הגנרטיבי.

המאמרים הבאים