מאמרי עזרה על AlphaEvolve API

המסמך הזה משמש כהפניה הרשמית ל-API ברמת ייצור וכמפרט מערכת ל-AlphaEvolve Cloud API בשכבות השיחה של Google Cloud Discovery Engine. היא מגדירה את ההיררכיות המדויקות של משאבים מקוננים, נקודות קצה של REST ו-gRPC, אילוצים ברמת השדה, מכונות מצב של מחזור חיים, מטריצות של אבחון שגיאות, כללי ארגז חול לאבטחה ותהליכי עבודה לשילוב, שנדרשים כדי לתכנן בקר בצד הלקוח ולולאת הערכה אוטומטיים לחלוטין.

מכונות מצב מאוחדות של מחזור החיים

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

מצבים במחזור החיים של הניסוי

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

  • ‫CREATED: מצב האתחול. המשאב הוכרז והוגדר, אבל עדיין לא אוכלס בדורות ראשוניים או לא שלח קריאות ל-API.

  • ‫RUNNING: מצב ההערכה הפעיל. המנוע דוגם בו-זמנית מועמדים להורה, יוצר מוטציות בקוד באמצעות תערובת ה-LLM, ומזרים משימות למעריכים.

  • ‫PAUSED: מצב השהיה זמני שמופעל באופן ידני או באמצעות idle_timeout אוטומטי להגנה. יצירת הקוד נפסקת, והעובדים הקיימים מפסיקים את העברת המדדים.

  • ‫COMPLETED: מצב סופי שמציין שהחיפוש השיג בהצלחה את הקצאת היעד של max_programs או הגיע למגבלת הדור המבנית שלו.

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

מצבי התוכנית

רצף האימות בזמן הריצה מוחל על וריאציות ספציפיות של מועמדים.

כל מוטציה של קוד שנוצרת מתנהגת כישות תוכנה מבודדת שעוברת רצף של מצבים תפעוליים גרנולריים במסד הנתונים של האוכלוסייה.

  1. ‫INITIALIZED: הרשומה של התוכנית נוצרת במסד הנתונים, עם מעקב אחרי שיוך התוכנית לתוכניות קודמות ולתוכנית האב.

  2. ‫GENERATING: משימה נשלחת באופן פעיל אל העורף של תערובת מודלי שפה כדי ליצור טיוטה או לשנות את בלוקי הקוד הפונקציונליים הספציפיים.

  3. ‫EVALUATING: מטען הייעודי (payload) של הקוד נעול על ידי תהליך של עובד הערכה ומופעל בתוך סביבת בדיקה מבודדת.

  4. ‫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

  1. דוגמה לגוף הבקשה (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
            }
          }
        }
      }
    }
    
  2. דוגמה לגוף התגובה (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

  1. דוגמה לגוף הבקשה

    {
      "desiredProgramsCount": 1
    }
    
  2. דוגמה לגוף התגובה (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

  1. דוגמה לגוף הבקשה

    {
      "desiredProgramsCount": 1
    }
    
  2. דוגמה לגוף התגובה (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    ..."
              }
            ]
          }
        }
      ]
    }
    
  3. דוגמה לגוף התגובה (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

  1. דוגמה לגוף הבקשה

    {
      "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."
                }
              ]
            }
          }
        }
      ]
    }
    
  2. דוגמה לגוף התגובה (200 OK)

    {}
    

המשך הניסוי (POST)

  • נתיב:

    POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:resume
    
  • גוף הבקשה: ResumeExperimentRequest

  • תשובה: GoogleLongrunningOperation (LRO).

  • סטטוס HTTP: 200 OK (המעבר בין המצבים הוא מ-PAUSED ל-RUNNING)

דוגמאות ל-payload של API

  1. דוגמה לגוף הבקשה

    {}
    
  2. דוגמה לגוף התגובה (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

  1. דוגמה לכתובת URL של שאילתה לבקשה

    GET v1alpha/projects/.../alphaEvolveExperiments/sort-opt-01/
      alphaEvolvePrograms?stateFilter=COMPLETED&orderBy=latency_performance%20desc
      &pageSize=1
    
  2. דוגמה לגוף התגובה (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 שנוצרו בצורה לא תקינה (לדוגמה, שיתוף תוכן בשורה של הסמן, בלוקים מוטמעים או סמן סיום חסר).
  • בלוק evolve ריק שמכיל רק הערות או רווחים לבנים ללא קוד שניתן לעריכה.
  • הערך maxPrograms הוגדר לפחות מ-2.
  • שדות הגדרה לא מזוהים.
  • הגדרת מודל לא תקינה (יותר משני מודלים, רשומות כפולות, משקלים לא חיוביים או טמפרטורה מחוץ לטווח [0.0, 2.0]).
  • שליחת כמה הערכות בקריאה אחת של submitProgramsEvaluations.
  • הפרויקט הוא פרויקט Assured Workloads.
מוודאים שהסמנים נמצאים לבד בשורה שלהם, ושהם מקיפים לפחות שורה אחת של קוד שאינה הערה. מגדירים את maxPrograms לערך 2 או יותר. מסירים שדות שלא נכללים ב-API, כמו notes שהופיע בגרסת הטרום-השקה של ה-API. שולחים את ההערכות בנפרד, אחת בכל פעם.
403 PERMISSION_DENIED
  • למבצע הקריאה אין את התפקיד 'עורך' (roles/discoveryengine.editor) או 'אדמין' (roles/discoveryengine.admin) ב-Discovery Engine. הערה: roles/discoveryengine.user לא מעניק הרשאות ל-AlphaEvolve, ו-roles/discoveryengine.viewer לא יכול לקבל ניסויים.
  • למבצע הקריאה אין הרשאה במשאב של סשן ההורה.
  • לא הוקצה רישיון פעיל ל-Gemini Enterprise.
נותנים הרשאה 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
  • טוקן נעילה לא עדכני או שפג תוקפו, או חוסר התאמה במצב התוכנית (לדוגמה, מועמד נרכש מחדש או שהרכישה שלו הושלמה אחרי שפג תוקף ההרשאה).
  • הניסוי נוצר במיקום שלא נתמך (מחוץ ל-global, ל-us או ל-eu).
  • ‫Vertex AI API‏ (aiplatform.googleapis.com) לא מופעל בפרויקט.
משכפלים את הערך המדויק של lockToken שמוחזר על ידי :acquirePrograms. אוכפים זמני קצובים מצד הלקוח (מומלץ 30 דקות) ושולחים ציוני עונש על כשלים אחרי שהזמן הקצוב מסתיים. יוצרים מחדש את הניסוי במיקום נתמך. מפעילים את Vertex AI API: gcloud services enable aiplatform.googleapis.com --project=PROJECT_ID.
429 RESOURCE_EXHAUSTED
  • הפרויקט הגיע למגבלה של 30 ניסויים פעילים בו-זמנית (STARTED מתוך RUNNING) לכל מיקום.
  • הגעתם למכסת הטוקנים של יצירת מודלים בשרת העורפי.
לגבי מגבלת הניסויים הפעילים: צריך להשלים או להפסיק את הניסויים הפעילים לפני שמתחילים ניסוי חדש (הקטנת הערך של 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), צריך להפסיק את הביצוע באופן מיידי ולהחיל עונש חמור על כשל.

מקורות מידע נוספים

מידע נוסף זמין במקורות המידע הבאים: