המסמך הזה הוא מאמר העזרה הרשמי של ה-API ומפרט המערכת של AlphaEvolve Cloud API, במסגרת שכבות השיחה של Google CloudDiscovery Engine. הוא מגדיר את ההיררכיות המדויקות של המשאבים בתצוגת עץ, נקודות הקצה של REST ו-gRPC, האילוצים ברמת השדה, מכונות המצבים של מחזור החיים, מטריצות האבחון של השגיאות, כללי ארגז החול לאבטחה ותהליכי העבודה של השילוב שנדרשים כדי לתכנן בקר בצד הלקוח ולולאת הערכה אוטומטיים לחלוטין.
מכונות מצב מאוחדות של מחזור החיים
סוכן AlphaEvolve מתאם בין שתי מכונות מצבים עצמאיות כדי לעקוב אחרי ההתקדמות של קמפיין הניסוי ולנהל את ההצגה והביצוע של מוטציות ספציפיות בתוכנית.
מצבים במחזור החיים של הניסוי
הניסוי מייצג את הקמפיין הכולל לאופטימיזציה. הוא מעובד כמשאב קבוע בצד השרת ועובר בין המצבים הבאים:
CREATED: מצב ההפעלה. המשאב מוצהר ומוגדר, אבל עדיין לא אוכלסו בו דורות ראשוניים ולא נשלחו קריאות ל-API.
RUNNING: מצב ההערכה הפעיל. המנוע דוגם בו-זמנית מועמדים להורה, יוצר מוטציות קוד באמצעות תערובת ה-LLM ומעביר משימות למעריכים.
PAUSED: מצב השהיה זמני שמופעל באופן ידני או באמצעותidle_timeoutהגנה אוטומטי. יצירת הקוד נפסקת, וה-workers הקיימים משהים את שליחת המדדים.
COMPLETED: מצב סופי שמציין שהחיפוש השיג את הקצאת היעד שלmax_programsאו הגיע למגבלת היצירה המבנית.
FAILED: מצב שגיאה סופית שמציין שבעיות סביבתיות מערכתיות – כמו חריגות לא מטופלות בפרטי הכניסה ל-API, פגיעה במאגר הנתונים או קריסות רצופות של ה-runner – עצרו את העיבוד.
מצבי התוכנית
רצף האימות בזמן הריצה מוחל על וריאנטים מועמדים ספציפיים.
כל מוטציית קוד שנוצרת מתנהגת כישות תוכנה מבודדת שעוברת דרך רצף של מצבים תפעוליים מפורטים בתוך מסד הנתונים של האוכלוסייה.
INITIALIZED: הרשומה של התוכנית נוצרת במסד הנתונים, והמערכת עוקבת אחרי השושלת שלה והקישורים לתוכנית ההורה.
GENERATING: משימה נשלחת באופן פעיל לקצה העורפי של תערובת מודלי השפה כדי לנסח או לשנות את בלוקי הקוד הפונקציונליים הספציפיים.
EVALUATING: המטען הייעודי (payload) של הקוד ננעל על ידי תהליך של עובד הערכה, ומופעל בתוך סביבה מבודדת של מסגרת בדיקה.
COMPLETED: ציוני הביצוע והתובנות התיאוריות לגבי המבנה נשמרים באופן מאובטח במסד הנתונים האבולוציוני, והתוכנית מתווספת למאגר הבחירה.
מנגנוני בו-זמניות ונעילה
התוכניות נרכשות על ידי לולאות של עובדים באמצעות מנגנון אסימון נעילה אטומי, כדי למנוע מרוצי תהליכים או תקורה של ניקוד כפול בטופולוגיות מבוזרות. כדי לשמור את התוצאות במסד הנתונים, המעריך צריך לשלוח את סכמת הניקוד הסופית יחד עם אסימון הנעילה התואם.
סכימות של הגדרות אישיות והגדרות כלליות
סקירה כללית של הגדרות הסכימה, הפרמטרים וערכי ברירת המחדל העיקריים שמשמשים את סביבת זמן הריצה של מנוע AlphaEvolve.
AlphaEvolveExperimentConfig
מגדיר את הפרמטרים המבניים העיקריים ואת המגבלות התכנותיות של הרצת הניסוי האבולוציוני.
| שם השדה | סוג | ברירת מחדל | אילוצים או גבולות ערכים | תיאור טכני |
|---|---|---|---|---|
title |
מחרוזת | חובה | עד 256 תווים | השם הייחודי של הניסוי שמוצג. |
problemDescription |
מחרוזת | חובה | עד 5,000 תווים | המפרט הרשמי של הבעיה. הוא מוזרק ישירות להקשרים של ההנחיות כדי לקבוע כללים. |
programLanguage |
מחרוזת | חובה | ערך בפורמט חופשי | שפת היעד של בסיס הקוד המשופר (לדוגמה, "python", "cpp", "verilog", "cuda", "julia", "java"). |
runSettings |
אובייקט | חובה | מיפוי לסכימה RunSettings |
פרמטרים של קצב וזמן קצוב לתפוגה. |
generationSettings |
אובייקט | אופציונלי | מיפוי לסכימה GenerationSettings |
בחירת מודל ופרמטרים של הקשר. |
evolutionSettings |
אובייקט | אופציונלי | מיפוי לסכימה EvolutionSettings |
פרמטרים של בחירת הורה וגיוון. |
RunSettings
הוא קובע את קצב התפוקה, את מגבלות ההקבלה ואת הזמן הקצוב לתפוגה של המערכת האוטומטית.
| שם השדה | סוג | ברירת מחדל | אילוצים או גבולות ערכים | תיאור טכני |
|---|---|---|---|---|
maxPrograms |
int32 | 100 | מינימום: 2, מקסימום: 100,000 | תקציב ההפעלה הכולל (תוכניות ליצירה ולהערכה). הערך חייב להיות גדול מ-1. |
concurrency |
int32 | 1 | מינימום: 1, מקסימום: 30 | מספר המוטציות של התוכנית המקבילה שפעילות בתור. אי אפשר להזין ערכים גדולים מ-30. |
maxDuration |
מחרוזת | 24 שעות (86,400 שניות) | מחרוזת dayTimeDuration לפי תקן ISO 8601 מינימום: >0, מקסימום: 7 ימים |
משך הזמן הכולל שמותר לניסוי לפעול לפני שהוא נעצר. |
idleTimeout |
מחרוזת | 5 שעות (ארה"ב/אירופה) שעתיים (שאר העולם) |
מחרוזת dayTimeDuration לפי תקן ISO 8601 מינימום: >0 מקסימום: ברירת המחדל של המיקום |
משך הזמן של חוסר פעילות לפני מעבר אוטומטי אל PAUSED. ברירת המחדל היא שעתיים ב-global ו-5 שעות במיקומים אזוריים (us, eu). משך הזמן מוגבל על ידי ברירת המחדל של המיקום, כך שאם מציינים ערך שגבוה מברירת המחדל של המיקום (לדוגמה, 12 שעות ב-global), המערכת מתעלמת ממנו והערך הוא שעתיים (בלי שגיאה). |
הגדרות ליצירת סרטונים
הסכימה GenerationSettings קובעת את הרכבת ההנחיות, את חלונות ההקשר ואת הגדרות המודל למוטציות:
context(מחרוזת): אופציונלי. מאמרי עזרה, ממשקי API נוספים או כללים שהמשתמש סיפק. מומלץ מאוד לא לחרוג מ-200,000 טוקנים. הקשרים בגודל של יותר מ-200,000 אסימונים מדללים את תשומת הלב של המודל ופוגעים באיכות המוטציה.
includeFullProgramInPrompt(בוליאני): ברירת המחדל היאfalse.
true: ההנחיה למוטציה כוללת אתEVOLVE-BLOCKשניתן לשינוי ואת התבנית שמסביב שלא ניתנת לשינוי (מומלץ מאוד להסקת מסקנות מבניות מורכבות).
false: רק הבלוק שניתן לשינוי גלוי, וכך נשמר ההקשר של האסימון.
models(מערך של אובייקטים): אופציונלי. כל רשומה מציינת שם של מודל ונותנת לוweightאופציונלי, שהוא החלק של המודל הזה בקריאות ליצירה ביחס לרשומות האחרות. אם לא מציינים אתmodels, AlphaEvolve מגדיר אותו למודל ברירת המחדל כשהוא יוצר את הניסוי. ברירת המחדל משתנה כשיוצאים מודלים חדשים של Gemini. ברשימה Default model מפורט איזה מודל חל בכל תאריך. כדי לבחור את המודל בעצמכם, או כדי להשתמש באותו מודל בכל הרצה, מגדירים אתmodels.בדוגמה הבאה, המערכת שולחת כ-9 מתוך 10 קריאות ליצירת תוכן למודל הראשון, ואת השאר למודל השני. המשקלים הם יחסים, ולכן הסכום שלהם לא חייב להיות 1.
"models": [ { "name": "gemini-3.8-flash", "weight": 0.9 }, { "name": "gemini-3.1-pro-preview", "weight": 0.1 } ]
מודלים נתמכים
מגדירים את models[].name לאחד מהערכים הבאים. אפשר לשלב עד שני מודלים בניסוי אחד.
| שם הדגם | אזורי שירות |
|---|---|
gemini-4-argon |
global, us, eu |
gemini-3.8-flash |
global, us, eu |
gemini-3.7-flash |
global, us, eu |
gemini-3.5-flash |
global, us, eu |
gemini-3.1-pro-preview |
global |
AlphaEvolve מאמת את models כשהוא יוצר את הניסוי ומחזיר את הערך INVALID_ARGUMENT אם שם המודל לא מופיע בטבלה הזו או לא זמין באזור שביקשתם.
מודל ברירת המחדל
בטבלה הבאה מפורטים המודלים שבהם AlphaEvolve משתמש כשמשמיטים את models, לפי תאריך יצירת הניסוי.
| הניסוי נוצר | מודל ברירת המחדל |
|---|---|
| בתאריך 24 באוקטובר 2026 או אחריו | gemini-4-argon |
| 29 בספטמבר 2026 עד 23 באוקטובר 2026 | gemini-3.8-flash |
| 30 ביוני 2026 עד 28 בספטמבר 2026 | gemini-3.5-flash |
| לפני 30 ביוני 2026 | gemini-2.5-flash |
כדי לזהות את המודל שהוקצה לניסוי, בודקים את generationSettings.models בהגדרות הניסוי או בתגובה ליצירה. השינויים נכנסים לתוקף במהלך יום המעבר, ולכן ניסויים שנוצרו בתאריכים האלה עשויים לקבל את מודל ברירת המחדל הישן או החדש. ניסויים שנוצרו בלי models לפני 30 ביוני 2026 לא מכילים ערך בשדה הזה.
המודל נשמר בכל ניסוי, ולכן שינוי של ברירת המחדל לא משפיע על ניסויים שכבר קיימים. כדי להשתמש במודל ברירת מחדל חדש יותר, צריך ליצור ניסוי חדש.
הגדרות האבולוציה
הסכימה EvolutionSettings שולטת בהסתברויות של זריעה מחדש של מודל אי ודגימת הורה:
parentSamplingConfig←paretoSamplingConfig←paretoSamplingProbability(מספר ממשי): ההסתברות (0.0 עד 1.0) לדגימת תוכניות הורה ישירות מחזית פארטו הפעילה, במקום להשתמש בבחירה רגילה שמבוססת על התאמה. אם המדדים שעברו אופטימיזציה מחזירים רק מדד סקלרי אחד, צריך להגדיר את הפרמטר הזה לערך0.0(מושבת).
מודלים של נתונים בתוכנית המועמדים
בקטע הזה מתוארים הסכימות והייצוגים של הנתונים שמשמשים להגדרה ולארגון של מבני הקוד המועמדים במסד הנתונים של האוכלוסייה.
AlphaEvolveProgramContent
מגדיר את הקבצים ואת המבנה של התוכנית המועמדת.
files(מערך שלAlphaEvolveSourceFile): רשימה של כל הקבצים שמרכיבים את בסיס הקוד המועמד. המטען הייעודי (payload) חייב להכיל לפחות קובץ מקור אחד. Google ממליצה להגביל את מספר הקבצים הכולל ל-50 קבצים לכל תוכנית מועמדת. כך המודל יכול להתמקד בצורה אופטימלית וחלון ההקשר פועל ביעילות.
description(מחרוזת): סיכום שנוצר באופן אוטומטי ומתאר את השינויים הפרוגרמטיים שהמודל הציע (עד 1,000 תווים).
AlphaEvolveSourceFile
מייצג קובץ קוד מקור ספציפי בבסיס הקוד.
path(מחרוזת): היעד של הנתיב היחסי לסביבת העבודה (חובה, עד 256 תווים). כל רשומה של קובץ מקור צריכה לציין נתיב לא ריק. אם מגדירים סביבת עבודה של Python, נקודת הכניסה הראשית של הקובץ להפעלה חייבת להיות בשם"initial_program.py".
content(מחרוזת): מחרוזת קוד המקור הגולמי שמכילה את הבלוקים של ההטמעה הפונקציונלית. Google ממליצה לשמור על גודל מצטבר של בסיס הקוד בכל הקבצים מתחת ל-4,000 עד 5,000 שורות קוד (LOC). זהו הגודל האופטימלי לביצועים של המודל וליצירת מוטציות.
programLanguage(מחרוזת): תג המיפוי של מנתח השפה. המחרוזת הזו חייבת להתאים בדיוק לשפה שצוינה בהגדרות של הניסוי הראשי.description(מחרוזת): תקציר אופציונלי שמתאר את הארכיטקטורה או המטרה של הקובץ, שחשוף ל-LLM במהלך שלבי המוטציה (עד 500 תווים).
AlphaEvolveProgramEvaluation
מטען ייעודי (payload) מובנה שנשלח על ידי מופעי הרצה של לקוח בחזרה למסד הנתונים האבולוציוני לאחר ביצוע בזמן ריצה.
scores(AlphaEvolveScores): ערכים מספריים אובייקטיביים וסטנדרטיים של מדדים. לפי השיטות המומלצות, כדאי להגביל את זה ל-3 עד 5 מדדי float נפרדים. מספר מוגזם של מאפייני יעד פוגע בביצועים של משווה Pareto עם כמה יעדים.
insights(מערך שלAlphaEvolveEvaluationInsight): תוויות סמנטיות לאבחון ועקבות ביצוע בשפה טבעית שמועברים בחזרה כדי לעזור ל-LLM בניסיונות הבאים ליצור מוטציות (מומלץ עד 10 פריטים).
ניסוח הניקוד ופורמטים של הטמעה
כלל המקסום
AlphaEvolve פועל בעיקרון כאלגוריתם מונוטוני לטיפוס על גבעות, וממקסם באופן קפדני את כל המדדים המספריים. אם צינור עיבוד הנתונים להערכה עוקב אחרי יעד מזעור (כמו מזעור זמן האחזור של האפליקציה באלפיות השנייה או הפחתת השימוש בזיכרון), צריך לשלול את הערך לפני ששולחים אותו בחזרה למסד הנתונים: submitted_score = -latency_ms.
רצוי שהציונים יהיו רציפים. מדדים בוליאניים או מדדים בדידים מאוד לא מספקים אות שיפוע מספיק כדי לבצע חיפוש יעיל בשיטת טיפוס בהר.
סכימת הטמעה עם מטרה אחת
אם רתמת ההערכה מבצעת אופטימיזציה לפונקציית מטרה סקלרית אחת, משתמשים ב-JSON הבא.
{
"scores": {
"scores": [
{
"metric": "accuracy",
"score": 0.95
}
]
},
"insights": {
"insights": [
{
"label": "validation",
"text": "Passed syntax and basic compilation."
}
]
}
}
סכמת הטמעה עם כמה יעדים
כדי להפעיל שגרות אופטימיזציה של חזית פארטו בצד השרת, צריך להשתמש ב-JSON הבא כשמעבירים פרמטרים למעקב אחרי כמה יעדים עצמאיים.
{
"scores": {
"scores": [
{
"metric": "accuracy",
"score": 0.95
},
{
"metric": "latency",
"score": -42.5
}
]
},
"insights": {
"insights": [
{
"label": "verification",
"text": "Passed 5 out of 5 unit tests."
},
{
"label": "latency_warning",
"text": "Latency regression of 3% observed on large dataset."
}
]
}
}
אחזור נתוני התוכנית ושליחת שאילתות לגביהם
מערכת AlphaEvolve מתעדת את נתוני הטלמטריה, מדדי הביצוע וקוד המקור המלא של כל מוטציה שנוצרת. כך המפתחים יכולים לשלוח שאילתות למאגר הנתונים ההיסטורי הזה באמצעות ה-API או ה-CLI כדי לעקוב אחרי התקדמות האופטימיזציה ולחלץ את המועמדים לקוד עם הביצועים הטובים ביותר.
אחזור תוכנית באמצעות API בארכיטקטורת REST
אפשר לשלוח שאילתות למשאבי התוכנית שהוערכו ממסד הנתונים באמצעות נקודת הקצה הרגילה ListAlphaEvolvePrograms עם פרמטרים של שאילתות סינון ומיון:
סינון לפי סטטוס: שאילתות על תוכניות שתואמות לסטטוס ספציפי במחזור החיים:
GET /v1alpha/{parent}/alphaEvolvePrograms?state_filter=COMPLETEDמיון לפי מדדים: שליפת מועמדים ממוינים על סמך מדדים שעברו אופטימיזציה:
GET /v1alpha/{parent}/alphaEvolvePrograms?order_by=accuracy desc,latency&page_size=5
אחזור תוכניות באמצעות CLI
כדי לשלוף את ההצעות המובילות להשלמה ישירות מהטרמינל, מריצים את הפקודה הבאה:
ae results best <experiment-nickname> --top 5
דוגמאות מלאות לשימוש ב-CLI
AlphaEvolve CLI מספק למפתחים שליטה אדמיניסטרטיבית מהירה ומעקב אחרי קמפיינים ישירות מהמעטפת:
הצגת כל הניסויים בסשן שיחה:
ae experiment listרשימה של כל התוכניות המועמדות שעברו מוטציה בניסוי ספציפי:
ae program list EXPERIMENT_NICKNAME \ --state=COMPLETED \ --order_by="accuracy desc"מחליפים את EXPERIMENT_NICKNAME בשם הניסוי.
אחזור של הצעות הקוד שהניבו את הביצועים הטובים ביותר:
ae results best EXPERIMENT_NICKNAME --top 5מחליפים את EXPERIMENT_NICKNAME בשם הניסוי.
כדי להמשיך קמפיין מושהה:
ae experiment resume EXPERIMENT_NICKNAMEמחליפים את EXPERIMENT_NICKNAME בשם הניסוי.
ספריית נקודות הקצה העיקריות של ה-API בארכיטקטורת REST
כל נקודות הקצה מוגדרות בגרסה v1alpha של Google Cloud Discovery Engine API.
תבנית הנתיב של משאב ההורה
ה-URI של משאב ההורה האמיתי המקונן בנוי כך:
projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/sessions/{session}
- AlphaEvolve זמין ב
global, בusובeu. יצירת ניסויים במיקומים אחרים מחזירה את השגיאהFAILED_PRECONDITION. - אין תמיכה בפרויקטים של Assured Workloads.
- בכל פרויקט אפשר להפעיל בו-זמנית עד 30 ניסויים של AlphaEvolve (במצב
STARTEDאוRUNNING) בכל מיקום. אם תנסו להפעיל או להמשיך ניסוי שיחרוג מהמגבלה הזו, תוחזר השגיאהRESOURCE_EXHAUSTED.
יצירת ניסוי (POST)
נתיב:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*}/alphaEvolveExperimentsגוף הבקשה:
AlphaEvolveExperimentConfig(ראו סעיף 2.1)תגובה: משאב
AlphaEvolveExperimentשמכיל את הקמפיין שעבר אתחול.סטטוס HTTP: 200 OK
דוגמאות למטען ייעודי (payload) של API
דוגמה לגוף הבקשה (POST /alphaEvolveExperiments)
{ "config": { "title": "Sorting Optimization Campaign", "problemDescription": "Optimize the custom_heuristic function.", "programLanguage": "python", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.8-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }דוגמה לגוף התגובה (200 OK)
{ "name": "projects/.../sort-opt-01", "state": "CREATED", "createTime": "2026-06-23T13:30:00Z", "config": { "title": "Sorting Optimization Campaign", "problemDescription": "Optimize the custom_heuristic function.", "programLanguage": "python", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.8-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }
התחלת הניסוי (POST)
נתיב:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:startגוף הבקשה:
StartExperimentRequestאזהרה לגבי הוצאה משימוש: השדה
initialProgramבגוף הבקשה הוצא משימוש והמערכת מתעלמת ממנו.תשובה:
GoogleLongrunningOperation(LRO).סטטוס HTTP: 200 OK (הסטטוס משתנה מ-
CREATEDל-RUNNING)
דוגמאות למטען ייעודי (payload) של API
דוגמה לגוף הבקשה
{ "desiredProgramsCount": 1 }דוגמה לגוף התגובה (200 OK – פעולה ממושכת)
{ "name": "projects/.../operations/start-op-7788", "metadata": { "@type": "type.googleapis.com/.../AlphaEvolveStartExperimentMetadata", "createTime": "2026-06-23T13:31:00Z" }, "done": false }
רכישת תוכניות (POST)
נתיב:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:acquireProgramsגוף הבקשה:
AcquireProgramsRequest-
desiredProgramsCount(int32): מספר אופציונלי של תוכניות שעברו מוטציה לאחזור (ברירת המחדל היא 1 אם לא הוגדר).
-
סטטוסים של תשובות:
200 OK: מחזירה תשובה שמכילה משאביAlphaEvolveProgramנעולים.204 No Content: התור ריק או שהקמפיין מושהה. ה-runners צריכים להמתין (למשל, 15 שניות) ולנסות שוב.
דוגמאות למטען ייעודי (payload) של API
דוגמה לגוף הבקשה
{ "desiredProgramsCount": 1 }דוגמה לגוף התגובה (200 OK)
{ "programs": [ { "name": "projects/.../alphaEvolvePrograms/prog-102", "lockToken": "token_uuid_8877_x99", "state": "EVALUATING", "createTime": "2026-06-23T13:32:00Z", "content": { "description": "Mutated candidate program.", "files": [ { "path": "initial_program.py", "programLanguage": "python", "description": "Primary sorting executable.", "content": "def custom_heuristic(arr, _):\n ..." } ] } } ] }דוגמה לגוף התגובה (204 No Content)
סטטוס HTTP 204 הוחזר עם הקשר מטען ייעודי (payload) ריק.
שליחת הערכות של תוכניות (POST)
נתיב:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:submitProgramsEvaluationsגוף הבקשה:
SubmitProgramsEvaluationsRequest-
evaluationSubmissions(מערך): מכיל אתlockTokenהתואם, את נתיב המשאב של התוכנית שעומדת בדרישות ואת המטען הייעודי (payload) של ההערכה (ציונים ותובנות). ה-API מקבל בדיוק בקשה אחת להערכה בכל קריאה. אם תשלחו כמה הערכות בבקשה אחת, תקבלו את השגיאהINVALID_ARGUMENT. אם אתם בודקים כמה מועמדים, שלחו כל תוכנית בנפרד.
-
תשובה:
SubmitProgramsEvaluationsResponse(ריקה).סטטוס HTTP: 200 OK (שומר את הציונים, משחרר את הנעילה הפעילה ורושם תובנות)
דוגמאות למטען ייעודי (payload) של API
דוגמה לגוף הבקשה
{ "evaluationSubmissions": [ { "lockToken": "token_uuid_8877_x99", "program": "projects/.../alphaEvolvePrograms/prog-102", "evaluation": { "scores": { "scores": [ { "metric": "latency_performance", "score": evaluation_payload["score"] } ] }, "insights": { "insights": [ { "label": "benchmark", "text": "Completed test case in 12.45ms." } ] } } } ] }דוגמה לגוף התגובה (200 OK)
{}
המשך הניסוי (POST)
נתיב:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:resumeגוף הבקשה:
ResumeExperimentRequestתשובה:
GoogleLongrunningOperation(LRO).סטטוס HTTP: 200 OK (הסטטוס משתנה מ-
PAUSEDבחזרה ל-RUNNING)
דוגמאות למטען ייעודי (payload) של API
דוגמה לגוף הבקשה
{}דוגמה לגוף התגובה (200 OK – פעולה ממושכת)
{ "name": "projects/.../operations/resume-op-9900", "metadata": { "@type": "type.googleapis.com/.../AlphaEvolveResumeExperimentMetadata", "createTime": "2026-06-23T13:45:00Z" }, "done": false }
הצגת רשימת תוכניות (GET)
נתיב:
GET v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}/alphaEvolveProgramsפרמטרים של שאילתה:
stateFilter(מחרוזת): אופציונלי. מסנן רשימה רגיל, לדוגמה,stateFilter = 'COMPLETED'.
orderBy(מחרוזת): אופציונלי. מיון לפי מדדים, לדוגמה,accuracy desc.
תשובה:
ListAlphaEvolveProgramsResponse.סטטוס HTTP: 200 OK
דוגמאות למטען ייעודי (payload) של API
דוגמה לכתובת URL של שאילתת בקשה
GET v1alpha/projects/.../alphaEvolveExperiments/sort-opt-01/ alphaEvolvePrograms?stateFilter=COMPLETED&orderBy=latency_performance%20desc &pageSize=1דוגמה לגוף התגובה (200 OK)
{ "alphaEvolvePrograms": [ { "name": "projects/.../alphaEvolvePrograms/prog-102", "state": "COMPLETED", "createTime": "2026-06-23T13:32:00Z", "evaluation": { "scores": { "scores": [ { "metric": "latency_performance", "score": -12.45 } ] }, "insights": { "insights": [ { "label": "benchmark", "text": "Completed test case in 12.45ms." } ] } } } ], "nextPageToken": "token_page_1_next" }
קוד אבחון והפניה לפתרון בעיות
מטריצת קודי האבחון של ה-API
| סטטוס HTTP | סוג השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|---|
| 400 | INVALID_ARGUMENT |
|
חשוב לוודא שהסמנים נמצאים לבד בשורה שלהם, ושהם כוללים לפחות שורת קוד אחת שהיא לא הערה. מגדירים את maxPrograms לערך 2 או יותר. מסירים שדות שלא נכללים ב-API, כמו notes שהיה קיים בגרסת טרום-ההשקה (Preview) של ה-API. צריך לשלוח את ההערכות בנפרד, אחת בכל פעם.
|
| 403 | PERMISSION_DENIED |
|
נותנים את התפקיד roles/discoveryengine.editor או roles/discoveryengine.admin ברמת הפרויקט, ומוודאים שיש גישה לסשן ההורה. מוודאים שיש רישיונות פעילים ל-Gemini Enterprise. מגדירים את Application Default Credentials:gcloud auth application-default login --project=PROJECT_IDהערה: אין תמיכה ב-Model Armor בהגדרות של AlphaEvolve. |
| 400 | FAILED_PRECONDITION |
|
צריך להחזיר את הערך המדויק של lockToken שהוחזר על ידי :acquirePrograms. לאכוף זמנים קצובים לתפוגה בצד הלקוח (מומלץ 30 דקות) ולשלוח ציוני עונש על כישלון כשהזמן הקצוב לתפוגה נגמר. ליצור מחדש את הניסוי במיקום נתמך. מפעילים את Vertex AI API: gcloud services enable aiplatform.googleapis.com --project=PROJECT_ID.
|
| 429 | RESOURCE_EXHAUSTED |
|
למגבלת הניסויים הפעילים: צריך להשלים או להפסיק את הניסויים הפעילים לפני שמתחילים ניסוי חדש (הפחתת concurrency ב-runSettings לא משפיעה על המגבלה הזו). למכסת טוקנים של מודל: צריך להקטין את concurrency ב-runSettings ולהטמיע השהיה מעריכית לפני ניסיון חוזר (exponential backoff).
|
| 503 | SERVICE_UNAVAILABLE |
מסווג הבטיחות של הקלט לא זמין או שהשירות לקצה העורפי עמוס באופן זמני. | מטמיעים לולאת ניסיון חוזר עם השהיה מעריכית אקראית לפני ניסיון חוזר (exponential backoff) בצד הלקוח. |
הודעות שגיאה נפוצות ופתרונות
בטבלה הבאה מפורטות הודעות שגיאה נפוצות שמוחזרות על ידי ה-API, הסיבות להן ושלבים לפתרון הבעיה.
שגיאות ניתוח ראשוניות של התוכנית ושל EVOLVE-BLOCK
| הודעת השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|
Parsing error: Unexpected evolve block delimiters in line <line_number>. Cannot be in the same line. |
שני הסמנים EVOLVE-BLOCK-START ו-EVOLVE-BLOCK-END מופיעים באותה שורה. |
צריך להציב את סמני ההתחלה והסיום בשורות נפרדות. |
Parsing error: Unexpected content on the same line as <marker> in line <line_number>. |
קוד, טקסט או תווים ריקים בסוף מופיעים באותה שורה עם הסמן EVOLVE-BLOCK-START או EVOLVE-BLOCK-END. |
מוודאים שהסמן נמצא לבד בשורה (לפניו מופיעה רק תחילית של הערה, כמו # EVOLVE-BLOCK-START). |
Parsing error: Unexpected evolve block start delimiter in line <line_number>. Cannot nest evolve blocks. |
סמן EVOLVE-BLOCK-START מופיע בתוך בלוק פיתוח שכבר נפתח. |
צריך להסיר סמני התחלה מקוננים. אין תמיכה בבלוקים מקוננים של evolve. |
Parsing error: Unexpected evolve block end delimiter in line <line_number>. No block started. |
מופיע סמן EVOLVE-BLOCK-END בלי EVOLVE-BLOCK-START לפניו. |
מוודאים שלפני כל סמן סיום מופיע סמן התחלה תואם. |
Parsing error: Evolve block started but not ended. |
נמצא סמן EVOLVE-BLOCK-START בלי סמן סגירה תואם EVOLVE-BLOCK-END. |
מוסיפים סמן סגירה EVOLVE-BLOCK-END. |
שגיאות בתוכן ובמבנה של התוכנית
| הודעת השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|
Program content must contain at least one source file. |
השדה program_content.source_files ריק. |
צריך לספק לפחות קובץ מקור אחד. |
source_files entries must have a non-empty path. |
רשומה בקובץ המקור מכילה מחרוזת path ריקה. |
צריך לציין נתיב יחסי תקין לכל קובץ מקור. |
source_files entry has empty content; path: <path> |
רשומה בקובץ המקור מכילה תוכן של מחרוזת ריקה. | ממלאים את תוכן הקובץ. |
Program content must contain at least one EVOLVE-BLOCK-START / EVOLVE-BLOCK-END region with editable code between the markers (whitespace and comment-only regions don't count -- AlphaEvolve has nothing to mutate). |
בלוקים של Evolve מכילים רק הערות, מחרוזות תיעוד או רווחים לבנים, בלי קוד שניתן לערוך. | הוסיפו לפחות שורת קוד אחת שניתן לערוך (כמו הגדרות של פונקציות או לוגיקה של אלגוריתם) בתוך הבלוק. |
שגיאות באימות ההגדרות והמודל
| הודעת השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|
unsupported model: <model_name> |
המודל שביקשתם לא נתמך או לא מופעל בפרויקט שלכם. | להשתמש במודלים נתמכים. הגדרות ליצירת תוכן |
model '<model_name>' is not served from domain shard '<location>'. |
המודל לא זמין במיקום האזורי שצוין. | בקטע הגדרות ליצירת תוכן מפורטים המודלים והמיקומים הנתמכים. |
generation_settings.models must contain at most 2 distinct models; got <count>. |
צוינו יותר משתי הגדרות של מודלים ב-generation_settings.models. |
צריך לציין שני מודלים לכל היותר בתערובת. |
generation_settings.models contains duplicate entry: <model_name> |
אותו שם מודל מופיע יותר מפעם אחת ב-generation_settings.models. |
מסירים רשומות כפולות של מודלים. |
generation_settings.models weight for <model_name> must be finite and strictly positive; got <weight>. Remove the entry instead of setting weight to zero. |
משקל הדגימה של המודל הוא שלילי, אפס או לא סופי. | צריך להגדיר משקל חיובי או להסיר את הרשומה. |
generation_settings.models temperature for <model_name> must be in [0.0, 2.0]; got <temperature>. |
טמפרטורת המודל חורגת מהטווח התקין [0.0, 2.0]. |
צריך לשנות את הטמפרטורה לערך בין 0.0 ל-2.0. |
RunSettings.max_programs is required and must be greater than 1. |
הערך max_programs הושמט או הוגדר ל-1 או פחות. |
מגדירים את max_programs לערך 2 או יותר (נדרש ערך מינימלי של 2 כדי לאפשר מועמדים מפותחים). |
RunSettings.concurrency is required and must be positive. |
השדה concurrency הושמט או שהוגדר בו ערך של 0 או פחות. |
מגדירים את concurrency כמספר שלם חיובי (בדרך כלל 1-30). |
EvolutionSettings.pareto_sampling_probability must be in [0, 1]; got <probability>. |
הכתובת pareto_sampling_probability היא לא בדומיין [0.0, 1.0]. |
צריך להגדיר הסתברות בין 0.0 ל-1.0. |
שגיאות שקשורות לדרישות המוקדמות של הפרויקט ולמחזור החיים של הניסוי
| הודעת השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|
AlphaEvolve requires the Vertex AI API to be enabled in this project. Enable it with: gcloud services enable aiplatform.googleapis.com --project=<project_id> |
Vertex AI API (aiplatform.googleapis.com) לא מופעל בפרויקט Google Cloud . |
מריצים את gcloud services enable aiplatform.googleapis.com --project=PROJECT_ID. |
Project has reached the limit of 30 concurrently active AlphaEvolve experiments in location <location>. Stop or wait for a running experiment to finish before starting or resuming another. |
הפרויקט הגיע למכסה של 30 ניסויים פעילים בו-זמנית (STARTED או RUNNING) במיקום הזה. |
צריך להפסיק או להשלים את הניסויים הקיימים לפני שמתחילים או ממשיכים ניסוי חדש. |
Cannot <action> experiment from state <current_state> |
ניסיון לבצע מעבר לא חוקי בין מצבים (לדוגמה, הפעלת ניסוי שכבר פועל או המשך של ניסוי שנוצר לאחרונה). | חשוב לוודא שהניסויים עוברים את שלבי מחזור החיים הרגילים: CREATED ← START, PAUSED/COMPLETED ← RESUME, STARTED/RUNNING ← STOP. |
Cannot resume experiment: a start or watchdog message is already pending. Stop the experiment first to drain it, or wait for the pending delivery to complete. |
פעולה קודמת של התחלה או המשך עדיין מתבצעת. | צריך להמתין עד שהמסירה בהמתנה תסתיים, או להפעיל את STOP כדי לרוקן את ההודעות בהמתנה. |
AlphaEvolve is not available for this project. |
הפרויקט חסום או שהוא פרופיל תאימות שלא נתמך. | פרופיל תאימות ואבטחה |
שגיאות ברכישה ובהערכה של תוכניות
| הודעת השגיאה | סיבה שקשורה למערכת | פתרון עקיף או פעולה להפחתת הסיכון |
|---|---|---|
Exactly one evaluation submission is required. |
כמה בקשות הערכה נשלחו בבקשת submitProgramsEvaluations אחת. |
צריך לשלוח כל הערכה בנפרד, אחת לכל קריאה ל-API. |
Program is required for each evaluation submission. / submission.program is required. |
נתיב המשאב program לא צוין בבקשה לבדיקה. |
מעבירים את הנתיב המלא למשאב של התוכנית. |
Lock token is required for each evaluation submission. / submission.lock_token is required. |
הערך lock_token שהוחזר במהלך acquirePrograms הושמט. |
צריך להעביר את המחרוזת המדויקת של lock_token שמוחזרת כשהתוכנית נרכשת. |
Program <program_name> has unexpected lock token. Expected token: '<expected>', actual token: '<actual>' |
אסימון הנעילה שנשלח בבקשה לא תואם להשכרה הפעילה של השרת (לדוגמה, תוקף ההשכרה פג ועובד אחר רכש אותה, או שסופק אסימון שגוי). | צריך להחזיר את הערך המדויק של lockToken מ-acquirePrograms ולשלוח את התוצאות לפני שנגמר הזמן הקצוב לתפוגה של הלקוח. |
Program <program_name> is not in expected state. Expected state: EVALUATION_IN_PROGRESS, actual state: <actual_state> |
התוכנית כבר נבדקה, בוטלה או הועברה מ-EVALUATION_IN_PROGRESS. |
צריך למחוק את ההערכה הישנה או להשיג מחדש את המועמד אם הוא זמין. |
The request was rejected by a safety policy. |
תיאור הבעיה, הקוד הראשוני או מדדי ההערכה שהוזנו הפעילו כללי מדיניות לסיווג בטיחות. | הסירו תוכן זדוני או רגיש מהטקסט של ההנחיות ומתיאורי הבעיות כדי להסיר מילות מפתח או עקבות רגישים. |
The input safety classifier is currently unavailable. |
שירות סיווג הבטיחות לא זמין זמנית או עמוס מדי (נכשל במצב סגור). | להטמיע לוגיקה של השהיה מעריכית לפני ניסיון חוזר (exponential backoff). |
תיקון "השמטות שקטות"
חסימה של מסנן בטיחות (הסרה שקטה) מתרחשת כשמודלים של שפה בצד השרת מסמנים ומסירים הנחיות שעברו שינוי בגלל ניסוח רגיש או טריגרים של כללי בטיחות. השרת משתיק את הפלט, וכתוצאה מכך התור מחזיר תגובות ריקות, וייתכן שהלקוחות ימתינו ללא הגבלת זמן.
פתרון עקיף:
הסרת תוכן זדוני או רגיש מההקשר: מסירים מההקשר
problemDescriptionביטויים טעונים רגשית או רגישים מבחינה אבטחתית.סינון תובנות: מנתחים ומקצרים עקבות של חריגות גולמיות או יומני stderr של מסוף ב-payload של
insightsכדי למנוע חזרה על תוכן מערכת לא בטוח שמפעיל מסננים בהמשך.התאמה לשוק המקומי של קבוצות נתונים: אל תציבו רשומות אימון או קורפוס טקסט גדולים בתוך פרומפטים. טענו אותם באופן מקומי בסביבת הלקוח במהלך הרצה של לולאת ההערכה.
שיטות מומלצות להערכה בצד הלקוח
צוואר הבקבוק של "קוד ספגטי"
פורמט מקור לא אופטימלי פוגע באיכות האופטימיזציה: "קוד ספגטי == מרחב חיפוש רועש". לפני שמציבים סמנים של EVOLVE-BLOCK:
לשנות את המבנה של בלוקים של קוד כדי שהמשתנים והחתימות של הפונקציות יהיו ברורים.
הוסיפו מחרוזות תיעוד (docstrings) תמציתיות שמתארות מה כל פונקציה או משתנה עושים ולמה. חשוב לוודא שמחרוזות התיעוד נמצאות לצד קוד פונקציונלי בפועל. אם תציבו רק מחרוזת תיעוד או הערות בתוך
EVOLVE-BLOCK, המערכת תדחה את הקוד כבלוק ריק.חשוב לוודא שסימני ההערות
EVOLVE-BLOCK-STARTו-EVOLVE-BLOCK-ENDממוקמים לבד בשורות שלהם, חוץ מרווחים בתחילת השורה ותחיליות של הערות (כמו#או//).חשוב לוודא שכל יחסי התלות החיצוניים שלא ניתנים לשינוי (כמו ייבוא של מודולים מסייעים או טעינה של נתונים סטטיים) נמצאים מחוץ ל-
EVOLVE-BLOCK.
הקצאת חלון הקשר
כדי למקסם את היצירתיות של המוטציות, הגבילו את המטען הייעודי (payload) של הקוד שנשלח ל-API. ההקשר הכולל של התוכנית צריך להיות פחות מ-150,000 עד 200,000 טוקנים. בלוקים גדולים של קטעי קוד סטטיים ובלתי ניתנים לשינוי צורכים את תשומת הלב של המודל ופוגעים בביצועים. מעבירים סקריפטים של כלי שירות, פייפליינים של הטמעת נתונים וספריות אימות כבדות לחלוטין למעריך בצד הלקוח.
קודם צריך להפעיל את התוכנית הראשונית
לפני שמפעילים את AlphaEvolve, משתמשים בסוכן תכנות רגיל כדי לנפות באגים גם בבסיס הקוד הראשוני וגם במעריך:
הכנת ה-seed: מתקנים באגים ברורים בתחביר, בעיות בקומפילציה ומקרי קצה.
אימות הניקוד ההתחלתי: מוודאים שהניקוד הבסיסי סביר ושהמעריך הוא דטרמיניסטי לחלוטין (אותו קוד + אותו קלט = אותו ניקוד).
בדיקה עם קלט לא תקין: מריצים את כלי ההערכה עם פונקציות שבורות בכוונה כדי לוודא שהוא מזהה בעיות בקומפיילר, מטפל בלולאות אינסופיות בצורה חלקה ומחזיר ציוני עונש שליליים גבוהים.
הימנעו מקווי בסיס שעברו אופטימיזציית יתר
אל תעבירו תוכנית בסיסית שכבר עברה אופטימיזציה גבוהה כ-seed. אם התוכנית הראשונית כבר קרובה לאופטימלית, ל-AlphaEvolve יהיה קשה לבצע טיפוס גבעות כי יש מעט מאוד מקום לשיפור. מתחילים עם בסיס סביר, אבל לא עם אופטימיזציה מקסימלית. כך ל-AlphaEvolve יש מרחב לחקור ולטפס במעלה הגבעה.
אמצעי הגנה על הרצת קוד בצד הלקוח
כדי למנוע מצב שבו מועמדים זדוניים, מועמדים שצורכים הרבה משאבים או מועמדים שלא מגיבים מעכבים את העובדים המקבילים, מעריכים בצד הלקוח חייבים לאכוף אמצעי הגנה מחמירים:
זמן קצוב מחמיר: אכיפה של זמן קצוב מחמיר לביצוע של 30 דקות (או פחות, בהתאם למבנה של מרחב החיפוש).
הגשת עונש על חריגה מהזמן הקצוב לתפוגה: אם וריאנט של תוכנית מועמדת חורג ממגבלת הזמן הקצוב לתפוגה, מסיימים את שרשור ההרצה שלה באופן מיידי. חשוב לא לאפשר לתהליך המועמד להיכשל. במקום זאת, צריך לקמפל באופן מיידי ולשלוח לשרת ניקוד עונש על כשל חמור (לדוגמה,
-100000.0) יחד עם תובנת ניפוי באגים תיאורית, כדי לשחרר את נעילת התור של התוכנית.מסנני אבטחה של AST: תמיד צריך להריץ בדיקה של Abstract Syntax Tree (AST) על המטען הייעודי (payload) של קוד המקור הנכנס לפני ההידור. אם מזוהים פרימיטיבים מוגבלים של השתקפות או ביצוע (כמו
eval, exec,getattrאוsetattr), צריך להפסיק מיד את הביצוע ולהחיל עונש חמור על הכישלון.
מקורות מידע נוספים
מידע נוסף זמין במקורות המידע הבאים: