המסמך הזה משמש כהפניה הרשמית ל-API ברמת ייצור וכמפרט מערכת ל-AlphaEvolve Cloud API בשכבות השיחה של Google Cloud Discovery Engine. היא מגדירה את ההיררכיות המדויקות של משאבים מקוננים, נקודות קצה של REST ו-gRPC, אילוצים ברמת השדה, מכונות מצב של מחזור חיים, מטריצות של אבחון שגיאות, כללי ארגז חול לאבטחה ותהליכי עבודה לשילוב, שנדרשים כדי לתכנן בקר בצד הלקוח ולולאת הערכה אוטומטיים לחלוטין.
מכונות מצב מאוחדות של מחזור החיים
סוכן AlphaEvolve מתאם בין שני אוטומטים בלתי תלויים כדי לעקוב אחרי התקדמות קמפיין הניסוי ולנהל את ההצגה והביצוע של מוטציות ספציפיות בתוכנית.
מצבים במחזור החיים של הניסוי
ניסוי מייצג את קמפיין האופטימיזציה הכולל. היא מעובדת כמשאב קבוע בצד השרת ועוברת בין המצבים הבאים:
CREATED: מצב האתחול. המשאב הוכרז והוגדר, אבל עדיין לא אוכלס בדורות ראשוניים או לא שלח קריאות ל-API.
RUNNING: מצב ההערכה הפעיל. המנוע דוגם בו-זמנית מועמדים להורה, יוצר מוטציות בקוד באמצעות תערובת ה-LLM, ומזרים משימות למעריכים.
PAUSED: מצב השהיה זמני שמופעל באופן ידני או באמצעותidle_timeoutאוטומטי להגנה. יצירת הקוד נפסקת, והעובדים הקיימים מפסיקים את העברת המדדים.
COMPLETED: מצב סופי שמציין שהחיפוש השיג בהצלחה את הקצאת היעד שלmax_programsאו הגיע למגבלת הדור המבנית שלו.
FAILED: מצב שגיאה סופית שמציין שבעיות סביבתיות מערכתיות – כמו חריגים בפרטי הכניסה ל-API שלא נתפסו, נזק למאגר הנתונים או קריסות רצופות של תהליך ההרצה – עצרו את ביצוע העיבוד.
מצבי התוכנית
רצף האימות בזמן הריצה מוחל על וריאציות ספציפיות של מועמדים.
כל מוטציה של קוד שנוצרת מתנהגת כישות תוכנה מבודדת שעוברת רצף של מצבים תפעוליים גרנולריים במסד הנתונים של האוכלוסייה.
INITIALIZED: הרשומה של התוכנית נוצרת במסד הנתונים, עם מעקב אחרי שיוך התוכנית לתוכניות קודמות ולתוכנית האב.
GENERATING: משימה נשלחת באופן פעיל אל העורף של תערובת מודלי שפה כדי ליצור טיוטה או לשנות את בלוקי הקוד הפונקציונליים הספציפיים.
EVALUATING: מטען הייעודי (payload) של הקוד נעול על ידי תהליך של עובד הערכה ומופעל בתוך סביבת בדיקה מבודדת.
COMPLETED: ציוני הביצוע ותובנות מבניות תיאוריות נשמרים בצורה מאובטחת במסד הנתונים האבולוציוני, והתוכנית מתווספת למאגר התוכניות לבחירה.
מקביליות ומנגנוני נעילה
התוכניות נרכשות על ידי לולאות של עובדים באמצעות מנגנון אטומי של אסימון נעילה, כדי למנוע תנאי מירוץ או תקורה כפולה של ניקוד בטופולוגיות מבוזרות. כדי שהתוצאות יועברו בהצלחה בחזרה למסד הנתונים, המעריך צריך לשלוח את סכמת הניקוד הסופית יחד עם אסימון הנעילה התואם בדיוק.
סכימות של הגדרות וקביעות הגדרות
סקירה כללית של ההגדרות, הפרמטרים והגדרות ברירת המחדל של סכימת הליבה שמשמשים את זמן הריצה של מנוע AlphaEvolve.
AlphaEvolveExperimentConfig
הגדרת הפרמטרים המבניים העיקריים והמגבלות התוכנתיות של הניסוי האבולוציוני.
| שם השדה | סוג | ברירת מחדל | מגבלות / גבולות ערכים | תיאור טכני |
|---|---|---|---|---|
title |
מחרוזת | חובה | עד 256 תווים | השם המוצג הייחודי של הניסוי. |
problemDescription |
מחרוזת | חובה | עד 5,000 תווים | המפרט הרשמי של הבעיה. הוא מוזרק ישירות להקשרים של פרומפטים כדי לקבוע כללים. |
programLanguage |
מחרוזת | חובה | ערך Freeform | שפת היעד של בסיס הקוד המשודרג (לדוגמה,
"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 שניות) | מחרוזת ISO 8601 dayTimeDuration ערך מינימלי: >0, ערך מקסימלי: 7 ימים |
משך הזמן הכולל שמוקצב לפני שהניסוי מופסק. |
idleTimeout |
מחרוזת | 5 שעות (ארה"ב/אירופה) 2 שעות (ברחבי העולם) |
מחרוזת של משך זמן בפורמט ISO 8601 ערך מינימלי: >0 ערך מקסימלי: ברירת המחדל של המיקום |
משך הזמן של חוסר פעילות לפני מעבר אוטומטי אל PAUSED. ערך ברירת המחדל הוא שעתיים ב-global ו-5 שעות במיקומים אזוריים (us, eu). משך הזמן מוגבל לערך ברירת המחדל של המיקום, ולכן אם מציינים ערך שגבוה מערך ברירת המחדל של המיקום (לדוגמה, 12 שעות ב-global), המערכת מתעלמת ממנו והערך שמוגדר הוא שעתיים (ללא שגיאה). |
הגדרות ליצירת סרטונים
סכימת GenerationSettings שולטת בהרכבת ההנחיות, בחלונות ההקשר ובקביעת התצורה של המודל למוטציות:
context(מחרוזת): מסמכי עזר, ממשקי API נוספים או כללים אופציונליים שסופקו על ידי המשתמש. מומלץ מאוד להשתמש בפחות מ-200,000 טוקנים. גודלי הקשר שחורגים מ-200,000 טוקנים מדללים את תשומת הלב של המודל ומפחיתים את איכות המוטציה.
includeFullProgramInPrompt(bool): ברירת המחדל היאfalse.
true: הפרומפט למוטציה כולל אתEVOLVE-BLOCKשניתן לשינוי ואת קוד ה-boilerplate הבלתי ניתן לשינוי שמסביב (מומלץ מאוד לחשיבה רציונלית מבנית מורכבת).
false: רק הבלוק שניתן לשינוי גלוי, וכך נשמר ההקשר של הטוקן.
models(מערך של אובייקטים): אופציונלי. כל רשומה מציינת שם של מודל ומספקת לוweightאופציונלי, שהוא החלק של המודל הזה בקריאות ליצירה ביחס לרשומות האחרות. אם לא מציינים אתmodels, AlphaEvolve בוחר את ברירת המחדל כשהוא יוצר את הניסוי: מודל Gemini ש-Google ממליצה עליו ליצירת קוד באמצעות AlphaEvolve. ההמלצה הזו משתנה ככל שיוצאים מודלים חדשים יותר. החל מ-29 בספטמבר 2026, ברירת המחדל היאgemini-3.8-flash. כדי להשתמש במודל אחר, מציינים את המודל הרצוי ב-models. כדי להצמיד את אותו מודל בכל הפעלה, צריך להגדיר אתmodelsבעצמכם.מכיוון ש-AlphaEvolve פותר את ברירת המחדל כשהוא יוצר את הניסוי, ניסויים שנוצרו לפני השינוי של מודל ברירת המחדל שומרים את המודל שמתועד בהגדרה שלהם. כדי להעביר ניסוי קיים ל-Gemini 3.8 Flash, צריך לציין אותו ב-
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-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 לשם של מודל שלא מופיע בטבלה הזו או שלא זמין באזור שביקשתם.
הגדרות של התפתחות
סכימת EvolutionSettings שולטת בהרצת סימולציה מחדש של מודל האיים ובהסתברויות של דגימת ההורה:
-
parentSamplingConfig←paretoSamplingConfig←paretoSamplingProbability(מספר ממשי): ההסתברות (0.0 עד 1.0) לדגימת תוכניות אב ישירות מהחזית הפארטו הפעילה, במקום להשתמש בבחירה רגילה שמבוססת על התאמה. אם המדדים שעברו אופטימיזציה מחזירים רק מדד סקלרי יחיד, צריך להגדיר את הפרמטר הזה לערך0.0(מושבת).
מודלים של נתוני תוכניות של מועמדים
בקטע הזה מפורטים סכימות הנתונים והייצוגים שמשמשים להגדרת מבני קוד מועמדים ולארגון שלהם במסד הנתונים של האוכלוסייה.
AlphaEvolveProgramContent
הגדרת הקבצים והמבנה של תוכנית המועמדים.
files(מערך שלAlphaEvolveSourceFile): רשימה של כל הקבצים שמרכיבים את בסיס הקוד של המועמד. המטען הייעודי צריך להכיל לפחות קובץ מקור אחד. Google ממליצה להגביל את מספר הקבצים הכולל ל-50 קבצים לכל תוכנית מועמדת. כך המודל יכול להתמקד בצורה אופטימלית ולהשתמש בחלון ההקשר בצורה יעילה.
description(מחרוזת): סיכום שנוצר אוטומטית ומתאר את השינויים התוכנתיים שהוצעו על ידי מודל היצירה (עד 1,000 תווים).
AlphaEvolveSourceFile
מייצג קובץ קוד מקור בודד בבסיס הקוד.
path(מחרוזת): נתיב היעד ביחס לסביבת העבודה (חובה, עד 256 תווים). לכל רשומה בקובץ המקור צריך לציין נתיב לא ריק. אם מגדירים סביבת עבודה של Python, נקודת הכניסה של קובץ ההפעלה הראשי חייבת להיקרא בדיוק"initial_program.py".
content(מחרוזת): מחרוזת קוד המקור הגולמי שכוללת את בלוקי ההטמעה הפונקציונליים. Google ממליצה לשמור על גודל מצטבר של בסיס הקוד בכל הקבצים מתחת ל-4,000 עד 5,000 שורות קוד (LOC). זהו הגודל האופטימלי לביצועי המודל מבחינת תשומת לב ויצירת מוטציות.
programLanguage(מחרוזת): תג המיפוי של מנתח השפה. המחרוזת הזו צריכה להיות זהה לשפה שמוגדרת בניסוי הראשי.
description(מחרוזת): סיכום אופציונלי שמתאר את הארכיטקטורה או המטרה של הקובץ, שמוצג ל-LLM במהלך מעברי מוטציה (עד 500 תווים).
AlphaEvolveProgramEvaluation
המטען הייעודי המובנה שנשלח על ידי מופעי הלקוח הרצים חזרה למסד הנתונים האבולוציוני אחרי ההרצה בזמן הריצה.
scores(AlphaEvolveScores): ערכים מספריים אובייקטיביים שעברו סטנדרטיזציה. השיטות המומלצות הן להגביל את ההגדרה הזו ל-3 עד 5 מדדים שונים של float ; מימדי יעד מוגזמים פוגעים בביצועים של כלי ההשוואה הרב-יעדי של פרטו.
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 ניסויים פעילים בו-זמנית (
STARTEDאוRUNNING) של AlphaEvolve לכל מיקום. התחלה או חידוש של ניסוי שחורג מהמגבלה הזו מחזירה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: התור ריק או שהקמפיין מושהה. הפעולות צריכות להמתין (למשל, 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 הוחזר עם הקשר של מטען ייעודי ריק.
שליחת הערכות של תוכניות (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 שהופיע בגרסת הטרום-השקה של ה-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 |
מסווג הבטיחות של הקלט לא זמין או שהשירות לקצה העורפי עמוס מדי באופן זמני. | צריך להטמיע לולאת ניסיון חוזר עם השהיה מעריכית לפני ניסיון חוזר אקראית בצד הלקוח. |
הודעות שגיאה נפוצות ופתרונות
בהמשך מפורטות הודעות שגיאה נפוצות שמוחזרות על ידי ה-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:
משכתבים בלוקים של קוד כך ששמות המשתנים וחתימות הפונקציות יהיו ברורים.
מוסיפים מחרוזות תיעוד תמציתיות שמתארות מה כל פונקציה או משתנה עושים ולמה. מוודאים שמחרוזות התיעוד נמצאות לצד קוד פונקציונלי בפועל; הצבה של רק מחרוזת תיעוד או הערות בתוך
EVOLVE-BLOCKנדחית כבלוק ריק.חשוב לוודא שסמני ההערות
EVOLVE-BLOCK-STARTו-EVOLVE-BLOCK-ENDמופיעים לבד בשורות שלהם, למעט רווחים מובילים וקידומות של הערות (כמו#או//).חשוב לוודא שכל התלות החיצונית והקבועה (כמו ייבוא מודולים של פונקציות עזר או טעינת נתונים סטטיים) נמצאת מחוץ ל-
EVOLVE-BLOCK.
הקצאת חלון ההקשר
כדי למקסם את היצירתיות של המוטציות, כדאי להגביל את מטען הנתונים של הקוד שנשלח אל ה-API. ההקשר הכולל של התוכנית צריך להיות בין 150,000 ל-200,000 טוקנים. בלוקים גדולים של קוד סטנדרטי סטטי ובלתי ניתן לשינוי צורכים את תשומת הלב של המודל ופוגעים בביצועים. להעביר סקריפטים של כלי עזר, צינורות להעברת נתונים וספריות אימות כבדות לגמרי למעריך בצד הלקוח.
קודם כל, מכינים את התוכנית הראשונית
לפני שמריצים את AlphaEvolve, צריך להשתמש בסוכן קידוד רגיל כדי לנפות באגים ב-codebase של ה-seed ובכלי ההערכה:
הכנת הזרע: תיקון באגים ברורים בתחביר, בעיות בקומפילציה ומקרים קיצוניים.
בודקים את ציון ההתחלה: מוודאים שציון הבסיס סביר ושההערכה דטרמיניסטית לחלוטין (אותו קוד + אותו קלט = אותו ציון).
בדיקה באמצעות קלט לא תקין: מריצים את כלי ההערכה עם פונקציות שבורות בכוונה כדי לוודא שהוא מזהה בעיות בקומפיילר, מטפל בלולאות אינסופיות בצורה חלקה ומחזיר ציוני עונש שליליים גבוהים.
אל תגדירו בסיסי ביצועים שעברו אופטימיזציה יתר
אל תעבירו תוכנית בסיסית שכבר עברה אופטימיזציה גבוהה כתוכנית ראשונית. אם התוכנית הראשונית שלכם כבר קרובה לאופטימלית, ל-AlphaEvolve יהיה קשה לבצע שיפורים כי אין הרבה מקום לשיפור. מתחילים עם בסיס סביר אבל לא אופטימלי. כך AlphaEvolve יכול לחקור ולבצע אופטימיזציה.
אמצעי הגנה ב-Client-side runner
הבודקים בצד הלקוח חייבים לאכוף אמצעי הגנה מחמירים כדי למנוע ממועמדים זדוניים, שדורשים הרבה משאבים או שלא מגיבים, לעכב עובדים מקבילים:
הגבלות זמן מחמירות: הגבלת זמן מחמירה של 30 דקות (או פחות, בהתאם למבנה של מרחב החיפוש).
שליחת עונש על חריגה מזמן קצוב: אם וריאציה של תוכנית מועמדת חורגת ממגבלת הזמן הקצוב, צריך להפסיק את שרשור הביצוע שלה באופן מיידי. לא לאפשר לתהליך של המועמד להיכשל. במקום זאת, המערכת תרכיב ותשלח באופן מיידי ציון חמור של קנס על כשל (לדוגמה,
-100000.0) יחד עם תובנה תיאורית לניפוי באגים בחזרה לשרת, כדי לשחרר את נעילת התור של התוכנית.מסנני אבטחה של AST: תמיד מריצים בדיקה של עץ תחביר מופשט (AST) על מטען הנתונים של קוד המקור הנכנס לפני ההידור. אם מזוהים פרימיטיבים של שיקוף או ביצוע מוגבלים (כמו
eval,exec,getattrאוsetattr), צריך להפסיק את הביצוע באופן מיידי ולהחיל עונש חמור על כשל.
מקורות מידע נוספים
מידע נוסף זמין במקורות המידע הבאים:
- AlphaEvolve במאגר Google Cloud GitHub
- הפניית AlphaEvolve REST API
- מאמרי העזרה של ה-API של AlphaEvolve RPC