הרצת הערכה

אתם יכולים להשתמש במודול Gen AI Evaluation של 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 ל-Python.

אימות של Agent Platform SDK

אחרי שמתקינים את Agent Platform SDK ל-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

ההרשאות שמשויכות לסוכן השירות של ההערכה המהירה הן:

תפקיד הרשאות
סוכן שירות של Agent Platform Rapid Eval‏ (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

הרצת ההערכה

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

כיתה אחת (EvalTask)

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

‫EvalTask משתלב גם עם ניסויים בפלטפורמת הסוכנים של Gemini Enterprise כדי לעזור לכם לעקוב אחרי ההגדרות והתוצאות של כל הרצת הערכה. הניסויים ב-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 גנרטיבי.

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