בדף הזה מוסבר איך להכין את מערך הנתונים לשירות ההערכה של AI גנרטיבי.
סקירה כללית
שירות ההערכה של AI גנרטיבי מזהה ומטפל באופן אוטומטי בכמה פורמטים נפוצים של נתונים. המשמעות היא שלרוב תוכלו להשתמש בנתונים כמו שהם, בלי שתצטרכו לבצע המרות ידניות.
השדות שצריך לספק במערך הנתונים תלויים ביעד:
| מטרה | הנתונים הנדרשים | זרימת העבודה של SDK |
|---|---|---|
| יצירת תשובות חדשות ואז הערכה שלהן | prompt |
run_inference() ← evaluate() |
| בדיקת תשובות קיימות | prompt וגם response |
evaluate() |
| ליצור תוצאות חדשות של הפעלת הסוכן ואז להעריך אותן | prompt |
run_inference() ← evaluate() |
| הערכת תגובות קיימות של סוכנים ואירועים ביניים | prompt, response וגם intermediate_events |
evaluate() |
כשמריצים את client.evals.evaluate() או client.evals.create_evaluation_run(), שירות ההערכה של ה-AI הגנרטיבי מחפש באופן אוטומטי את השדות הנפוצים הבאים במערך הנתונים:
prompt: (חובה) הקלט למודל שרוצים להעריך. כדי להשיג את התוצאות הטובות ביותר, מומלץ לספק הנחיות לדוגמה שמייצגות את סוגי הקלט שהמודלים שלכם מעבדים בסביבת הייצור.
response: (חובה) הפלט שנוצר על ידי המודל או האפליקציה שנבדקים.
reference: (אופציונלי) תשובת האמת או התשובה ה'מושלמת' שאפשר להשוות אליה את התשובה של המודל. השדה הזה נדרש לעיתים קרובות למדדים שמבוססים על חישובים, כמוbleuו-rouge.
conversation_history: (אופציונלי) רשימה של תורות קודמות בשיחה רב-שלבית. שירות ההערכה של ה-AI הגנרטיבי מחלץ את השדה הזה באופן אוטומטי מפורמטים נתמכים. מידע נוסף זמין במאמר בנושא טיפול בשיחות רב-שלביות.
session_inputs: (אופציונלי) קלט לאתחול סשן להרצת סוכן. האפשרות הזו היא אופציונלית רק בתהליך העבודהrun_inference()→evaluate().
intermediate_events: (אופציונלי) עקבות של סוכן של תור יחיד בהרצת סוכן, כולל קריאות לפונקציות, תשובות לפונקציות ותשובות ביניים של המודל. השדה הזה לא נדרש בתהליך העבודהrun_inference()→evaluate().
פורמטים נתמכים של נתונים
שירות ההערכה של AI גנרטיבי תומך בפורמטים הבאים:
Pandas DataFrame
לצורך הערכות פשוטות, אפשר להשתמש ב-pandas.DataFrame. שירות ההערכה של AI גנרטיבי מחפש שמות נפוצים של עמודות כמו prompt, response ו-reference. הפורמט הזה תואם לאחור באופן מלא.
import pandas as pd
# Example DataFrame with prompts and ground truth references
prompts_df = pd.DataFrame({
"prompt": [
"What is the capital of France?",
"Who wrote 'Hamlet'?",
],
"reference": [
"Paris",
"William Shakespeare",
]
})
# You can use this DataFrame directly with run_inference or evaluate
eval_dataset = client.evals.run_inference(model="gemini-2.5-flash", src=prompts_df)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
הפורמט של חיזוי באצווה ב-Gemini
אתם יכולים להשתמש ישירות בפלט של משימת חיזוי באצווה בפלטפורמת הסוכנים של Gemini Enterprise, שבדרך כלל מדובר בקובצי JSONL שמאוחסנים ב-Cloud Storage, כאשר כל שורה מכילה אובייקט של בקשה ותשובה. שירות ההערכה של AI גנרטיבי מנתח את המבנה הזה באופן אוטומטי כדי לספק שילוב עם שירותים אחרים של פלטפורמת הסוכנים של Gemini Enterprise.
הנה דוגמה לשורה אחת בקובץ JSONl:
{"request": {"contents": [{"role": "user", "parts": [{"text": "Why is the sky blue?"}]}]}, "response": {"candidates": [{"content": {"role": "model", "parts": [{"text": "The sky appears blue to the human eye as a result of a phenomenon known as Rayleigh scattering."}]}}]}}
אחר כך תוכלו להעריך ישירות את התשובות שנוצרו מראש ממשימת אצווה:
# Cloud Storage path to your batch prediction output file
batch_job_output_uri = "gs://path/to/your/batch_output.jsonl"
# Evaluate the pre-generated responses directly
eval_result = client.evals.evaluate(
dataset=batch_job_output_uri,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
פורמט השלמת צ'אט של OpenAI
כדי להעריך או להשוות עם מודלים של צד שלישי כמו OpenAI ו-Anthropic, שירות ההערכה של AI גנרטיבי תומך בפורמט של השלמת צ'אט של OpenAI. אתם יכולים לספק מערך נתונים שבו כל שורה היא אובייקט JSON שמובנה כמו בקשת OpenAI API. שירות ההערכה של AI גנרטיבי מזהה את הפורמט הזה באופן אוטומטי.
דוגמה לשורה אחת בפורמט הזה:
{"request": {"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"}], "model": "gpt-4o"}}
אתם יכולים להשתמש בנתונים האלה כדי ליצור תשובות ממודל של צד שלישי ולהעריך את התשובות:
# Ensure your third-party API key is set
# e.g., os.environ['OPENAI_API_KEY'] = 'Your API Key'
openai_request_uri = "gs://path/to/your/openai_requests.jsonl"
# Generate responses using a LiteLLM-supported model string
openai_responses = client.evals.run_inference(
model="gpt-4o", # LiteLLM compatible model string
src=openai_request_uri,
)
# The resulting openai_responses object can then be evaluated
eval_result = client.evals.evaluate(
dataset=openai_responses,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
טיפול בשיחות רב-שלביות
שירות ההערכה של AI גנרטיבי מנתח באופן אוטומטי נתונים של שיחות רב-שלביות בפורמטים נתמכים. אם נתוני הקלט כוללים היסטוריה של חילופי מידע (למשל, בתוך השדה request.contents בפורמט Gemini או request.messages בפורמט OpenAI), שירות ההערכה של AI גנרטיבי מזהה את התפניות הקודמות ומעבד אותן כconversation_history.
המשמעות היא שלא צריך להפריד ידנית בין ההנחיה הנוכחית לבין השיחה הקודמת, כי מדדי ההערכה יכולים להשתמש בהיסטוריית השיחות כדי להבין את ההקשר של התגובה של המודל.
הנה דוגמה לשיחה רב-שלבית בפורמט Gemini:
{
"request": {
"contents": [
{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]},
{"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]},
{"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
]
},
"response": {
"candidates": [
{"content": {"role": "model", "parts": [{"text": "For spring in Paris, you should definitely visit the Eiffel Tower, the Louvre Museum, and wander through Montmartre."}]}}
]
}
}
השיחה המורכבת מסיבובים רבים מנותחת באופן אוטומטי באופן הבא:
prompt: הודעת המשתמש האחרונה מזוהה כהנחיה הנוכחית ({"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}).
conversation_history: ההודעות הקודמות מחולצות באופן אוטומטי וזמינות כהיסטוריית השיחות ([{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]}, {"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]}]).
response: התשובה של המודל נלקחת מהשדהresponse({"role": "model", "parts": [{"text": "For spring in Paris..."}]}).