המסמך הזה משמש כהפניה הרשמית ל-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 תווים | המפרט הרשמי של הבעיה. הוא מוזרק ישירות להקשרים של ההנחיות כדי לקבוע כללים. |
programmingLanguage |
מחרוזת | חובה | ערך חופשי | שפת היעד של בסיס הקוד המשודרג (לדוגמה,
"python", "cpp", "verilog",
"cuda", "julia", "java"). |
runSettings |
אובייקט | חובה | מיפוי לסכימה RunSettings |
פרמטרים של קצב הצגת המודעות וזמן קצוב לתפוגה. |
generationSettings |
אובייקט | חובה | מיפוי לסכימה GenerationSettings |
בחירת מודל ופרמטרים של הקשר. |
evolutionSettings |
אובייקט | חובה | מיפוי לסכימה EvolutionSettings |
פרמטרים של בחירת הורה וגיוון. |
notes |
מחרוזת | חובה | עד 1,000 תווים | הערות אופציונליות לתיעוד של הריצה. |
RunSettings
ההגדרה הזו קובעת את קצב העברת הנתונים, את מגבלות ההפעלה המקבילית ואת פסק הזמן האוטומטי של המערכת.
| שם השדה | סוג | ברירת מחדל | מגבלות / גבולות ערכים | תיאור טכני |
|---|---|---|---|---|
maxPrograms |
int32 | 100 | מינימום: 1, מקסימום: 100,000 | התקציב הכולל להרצת התוכניות (ליצירה ולהערכה). |
concurrency |
int32 | 1 | מינימום: 1, מקסימום: 30 | מספר המוטציות המקבילות של תוכניות שפעילות בתור. הערכים המותרים הם 0-30. |
maxDuration |
מחרוזת | null | מחרוזת של משך זמן בפורמט ISO 8601 ערך מינימלי: >=0, ערך מקסימלי: 7 ימים |
הזמן הכולל שחלף מההתחלה ועד שהניסוי מופסק. |
idleTimeout |
מחרוזת | null | מחרוזת dayTimeDuration בפורמט ISO 8601 ערך מינימלי: >=0, ערך מקסימלי: 24 שעות |
משך חוסר הפעילות לפני מעבר אוטומטי למצב `PAUSED`. |
הגדרות יצירה
סכימת GenerationSettings שולטת בהרכבת ההנחיות, בחלונות ההקשר ובקביעת התצורה של המודל למוטציות:
context(מחרוזת): מסמכי עזר, ממשקי API משלימים או כללים אופציונליים שסופקו על ידי המשתמש. מומלץ מאוד להשתמש בפחות מ-200,000 טוקנים. גדלי הקשר שעולים על 200,000 אסימונים מדללים את תשומת הלב של המודל ומפחיתים את איכות המוטציה.
includeFullProgramInPrompt(bool): ברירת המחדל היאfalse.
true: הנחיית המוטציה כוללת את# EVOLVE-BLOCKשניתן לשינוי ואת קוד ה-boilerplate הבלתי ניתן לשינוי שמסביב (מומלץ מאוד לניתוח מבני מורכב).
false: רק הבלוק שניתן לשינוי גלוי, וההקשר של הטוקן נשמר.
הגדרות של התפתחות
סכימת EvolutionSettings שולטת בהרצת סימולציה חוזרת של מודל האיים ובסיכויים לדגימה של תבנית האב:
-
parentSamplingConfig→paretoSamplingConfig→paretoSamplingProbability(float): ההסתברות (0.0 עד 1.0) לדגימת תוכניות אב ישירות מהגבול הפארטו הפעיל, במקום להשתמש בבחירה רגילה שמבוססת על התאמה. אם המדדים שעברו אופטימיזציה מחזירים רק מדד סקלרי יחיד, צריך להגדיר את הפרמטר הזה לערך0.0(מושבת).
מודלים של נתונים של תוכניות מועמדים
בקטע הזה מפורטות סכמות הנתונים והייצוגים שמשמשים להגדרה ולארגון של מבני קוד מועמדים במסד הנתונים של האוכלוסייה.
AlphaEvolveProgramContent
הגדרת הקבצים והמבנה של תוכנית המועמדים.
files(מערך שלAlphaEvolveSourceFile): רשימה של כל הקבצים שמרכיבים את בסיס הקוד של המועמד. האוסף הזה מוגבל ל-50 קבצים לכל תוכנית מועמדת.
description(מחרוזת): סיכום שנוצר באופן אוטומטי ומתאר את השינויים הפרוגרמטיים שהוצעו על ידי מודל היצירה (עד 1,000 תווים).
AlphaEvolveSourceFile
מייצג קובץ קוד מקור ספציפי בבסיס הקוד.
path(מחרוזת): נתיב היעד ביחס לסביבת העבודה (עד 256 תווים). אם מגדירים סביבת עבודה של Python, שם הקובץ הראשי שניתן להפעלה חייב להיות"initial_program.py".
content(מחרוזת): מחרוזת קוד המקור הגולמי שכוללת את בלוקי ההטמעה הפונקציונליים. הגודל הכולל של בסיס הקוד המצטבר, בשילוב של כל הקבצים, צריך להיות בין 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 הבא כשכלי ההערכה מבצע אופטימיזציה לפי פונקציית מטרה סקלרית יחידה.
```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}
יצירת ניסוי (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", "notes": "Exploring convergence with Gemini 3.5 Flash.", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.5-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", "notes": "Exploring convergence with Gemini 3.5 Flash.", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.5-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 הוחזר עם הקשר של מטען ייעודי ריק.
שליחת הערכות של תוכניות (POST)
נתיב:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:submitProgramsEvaluationsגוף הבקשה:
SubmitProgramsEvaluationsRequest-
evaluationSubmissions(מערך): מכיל אתlockTokenהתואם, את הנתיב המלא למשאב התוכנית ואת מטען הייעודי (payload) של ההערכה (ציונים ותובנות).
-
תגובה:
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 |
חסרים תגי הערה # EVOLVE-BLOCK-START /
# EVOLVE-BLOCK-END; תחביר סכימת JSON לא תקין; חריגה ממגבלות הקובץ או השורות. |
מוודאים שהערות חסימה ממוקמות בתוך גופי הפונקציות באמצעות תחביר תקין של שפת היעד. בודקים שמספר הקבצים והגבולות של LOC מכובדים. |
| 403 | PERMISSION_DENIED |
למשתמש או לחשבון השירות אין את התפקיד 'משתמש ב-Discovery Engine' או רישיון ל-Gemini Enterprise. | אימות רישיונות פעילים ל-Gemini Enterprise.
כדי לוודא שפרטי ברירת המחדל של האפליקציה מוגדרים בצורה תקינה גם למשתמש וגם לפרויקט, מריצים את הפקודה הבאה:gcloud auth
application-default login
--project=<<PROJECT_ID>>הערה: אין תמיכה ב-Model Armor בהגדרות של AlphaEvolve. |
| 408 | LOCK_TIMEOUT |
התקופה שבה הלקוח פעל חרגה ממשך הביצוע שלו. נעילת התוכנית פגה בתור. | אכיפת פסק זמן קפדני בצד הלקוח של 30 דקות. אם חורגים מהמגבלה, צריך לשלוח מייד ציוני עונש על כשל כדי לבטל את נעילת התור. |
| 429 | RESOURCE_EXHAUSTED |
חריגה מהמגבלות על ביצועים מקבילים פעילים או ממכסות המודל. | הטמעה של נסיגה אקספוננציאלית בצד הלקוח;
הגדרת הגדרות שמרניות של פעולות בו-זמניות בתוך
RunSettings. |
| 503 | SERVICE_UNAVAILABLE |
עומס יתר בשירות הקצה העורפי או שהוא עובר תחזוקה. | צריך להטמיע לולאת ניסיון חוזר עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) אקראית בצד הלקוח. |
תיקון של 'הפסקות שיחה שקטות'
הסינון הבטוח מתבצע כשמודלים של שפה בצד השרת מסמנים הנחיות מועמדות שעברו שינוי ומסירים אותן בגלל ניסוח רגיש או הפעלה של כללי בטיחות. השרת משתיק את הפלט, ולכן התור מחזיר תגובות ריקות, והרצים של הלקוח עשויים להמתין ללא הגבלת זמן.
פתרון עקיף:
ניקוי ההקשר: הסרת ביטויים טעונים רגשית או רגישים מבחינת אבטחה מ
problemDescription.סינון תובנות: ניתוח וקיצוץ של עקבות חריגים גולמיים או יומני שגיאות סטנדרטיות של מסוף במטען הייעודי (payload) של
insightsכדי למנוע שיקוף של תוכן מערכת לא בטוח שמפעיל מסננים במורד הזרם.לוקליזציה של מערכי נתונים: אל תציבו רשומות אימון או קורפוסים גדולים של טקסט בהנחיות. טוענים אותם באופן מקומי בסביבת הלקוח במהלך הביצוע של לולאת ההערכה.
שיטות מומלצות להערכה בצד הלקוח
צוואר הבקבוק של 'קוד ספגטי'
עיצוב לא אופטימלי של המקור פוגע באיכות האופטימיזציה: "קוד ספגטי ==
מרחב חיפוש רועש". לפני שמציבים EVOLVE-BLOCK סמנים:
לשכתב את בלוקי הקוד כך ששמות המשתנים וחתימות הפונקציות יהיו ברורים.
מוסיפים מחרוזות תיעוד תמציתיות שמתארות מה כל פונקציה או משתנה עושים ולמה.
חשוב לוודא שכל התלות החיצונית והבלתי ניתנת לשינוי (כמו ייבוא של מודולים מסייעים או טעינה של נתונים סטטיים) נמצאת מחוץ ל-
# EVOLVE-BLOCK.
הקצאת חלון ההקשר
כדי למקסם את היצירתיות של המוטציות, כדאי להגביל את מטען הנתונים של הקוד שנשלח ל-API. ההקשר הכולל של התוכנית צריך להיות בין 150,000 ל-200,000 טוקנים. בלוקים גדולים של תבנית סטטית ובלתי ניתנת לשינוי צורכים את תשומת הלב של המודל ופוגעים בביצועים. להעביר סקריפטים של כלי עזר, צינורות להעברת נתונים וספריות אימות כבדות אל כלי ההערכה בצד הלקוח.
קודם צריך להכין את התוכנית הראשונית
לפני שמריצים את AlphaEvolve, משתמשים בסוכן קידוד רגיל כדי לנפות באגים ב-codebase של ה-seed ובכלי ההערכה:
הכנת הזרע: תיקון באגים ברורים בתחביר, בעיות בקומפילציה ומקרים קיצוניים.
בודקים את הניקוד ההתחלתי: מוודאים שהניקוד הבסיסי סביר ושההערכה דטרמיניסטית לחלוטין (אותו קוד + אותו קלט = אותו ניקוד).
בדיקה עם קלט לא תקין: מריצים את כלי ההערכה עם פונקציות שבורות בכוונה כדי לוודא שהוא מזהה בעיות בקומפיילר, מטפל בלולאות אינסופיות בצורה תקינה ומחזיר ציוני עונש שליליים גבוהים.
הימנעות משימוש בקווי בסיס שעברו אופטימיזציה יתר
אל תעבירו תוכנית בסיסית שכבר עברה אופטימיזציה גבוהה כתוכנית ראשונית. אם התוכנית הראשונית שלכם כבר קרובה לאופטימלית, ל-AlphaEvolve יהיה קשה לבצע שיפורים כי אין הרבה מקום לשיפור. מתחילים עם בסיס סביר אבל לא אופטימלי. כך יש ל-AlphaEvolve מרחב לחקור ולשפר את עצמו.
אמצעי הגנה בצד הלקוח
הבודקים בצד הלקוח חייבים לאכוף אמצעי הגנה קפדניים כדי למנוע ממועמדים זדוניים, שדורשים הרבה משאבים או שלא מגיבים, לעכב עובדים מקבילים:
הגבלות זמן מחמירות: הגבלת זמן מחמירה של 30 דקות (או פחות, בהתאם למבנה של מרחב החיפוש).
הגשת עונש על חריגה מזמן קצוב: אם וריאציה של תוכנית מועמדת חורגת ממגבלת הזמן הקצוב, יש להפסיק את שרשור הביצוע שלה באופן מיידי. לא לאפשר לתהליך של המועמד להיכשל. במקום זאת, המערכת תבצע קומפילציה ותשלח באופן מיידי לשרת ציון חמור של קנס על כשל (לדוגמה,
-100000.0) יחד עם תובנה תיאורית לניפוי באגים, כדי לשחרר את נעילת התור של התוכנית.מסנני אבטחה של AST: תמיד מריצים בדיקה של עץ תחביר מופשט (AST) במטען הייעודי (payload) של קוד המקור הנכנס לפני ההידור. אם מזוהים פרימיטיבים של שיקוף או ביצוע מוגבלים (כמו
eval,exec,getattrאוsetattr), צריך להפסיק את הביצוע באופן מיידי ולהחיל קנס חמור על כשל.
מקורות מידע נוספים
מידע נוסף זמין במקורות המידע הבאים:
- AlphaEvolve ב Google Cloud מאגר GitHub
- הפניית API ל-REST של AlphaEvolve
- הפניית API של AlphaEvolve RPC