AlphaEvolve מתבסס על קוד הבסיס שסופק ועל ההקשר הספציפי שסופק על ידי המשתמש כדי להנחות את הפעולות שלו.
הקשר של המשתמש
ההקשר שסופק על ידי המשתמש מוזרק לכל הנחיה ליצירה. הוא מאזן את מרחב החיפוש על ידי אספקת ידע בתחום, ניסוחים מתמטיים ומגבלות מערכת ל-LLM.
- תקציב הטוקנים: עד 200,000 טוקנים מניבים ביצועים טובים. מעבר לסף של 200, 000 טוקנים, חלון ההקשר נטען, תשומת הלב של מודל ה-LLM פוחתת ואיכות המוטציה יורדת. אם ההקשר המשולב (תיאור הבעיה, הקוד והתוכניות הקודמות) גדול מ-200, 000 טוקנים, צריך להקטין אותו.
מה צריך לכלול
ניסוח מתמטי מדויק של בעיית האופטימיזציה.
מגבלות מרכזיות וההצדקה שלהן.
טרמינולוגיה והגדרות שספציפיות לדומיין.
גישות טובות מוכרות או ידע קודם שיכולים להנחות את כיוון החיפוש של ה-LLM.
הוראות ספציפיות ומפורשות שמפרטות מה אסור לעשות.
מה לא לכלול
מדריכים כלליים לתכנות.
תיעוד של ספרייה רגילה (ה-LLM כבר מכיר את
numpy,sklearnוכו'). עם זאת, חשוב לכלול תיעוד של ספריות נישה או ספריות ספציפיות לדומיין, שאולי מודל ה-LLM לא מכיר היטב (ממשקי API של ליבת מערכת מותאמים אישית, ערכות SDK קנייניות או שפות DSL מיוחדות).נתונים גולמיים שרירותיים, גיליונות אלקטרוניים או קובצי dump גדולים של נתונים. הנתונים צריכים להיות בכלי ההערכה, ולא בהקשר של ההנחיה.
הקשר לא רלוונטי שצורך טוקנים בלי להוסיף אות חיפוש.
כל פיסת הקשר שאתם כוללים צריכה לספק ערך ברור על ידי עזרה פעילה למודל שפה גדול (LLM) ליצור מוטציות טובות יותר מבחינה מבנית.
משוב על הערכה (תובנות)
אחרי כל לולאת ביצוע, המעריך יכול להחזיר טקסט של משוב אבחוני לצד ציונים מספריים. המשוב הזה מצורף אוטומטית למבני הנחיות עתידיים.
בסיס איכות: משוב טוב הוא ספציפי, מעשי ותמציתי. משוב לא טוב הוא כללי (למשל "הבדיקה נכשלה") או ארוך מדי.
מטרה תפעולית: התובנות האלה מוצגות למודל השפה הגדול בדורות הבאים, כדי לאפשר לו ללמוד באופן מפורש מטעויות בביצוע ולהימנע מבאגים חוזרים.
גיוון מובנה של הנחיות
AlphaEvolve מגוון באופן אוטומטי את ההנחיות שהוא מעביר למערך ה-LLM של ה-Backend. הפעולה הזו מתבצעת באופן פנימי ולא דורשת הגדרה ידנית של המשתמש.
המערכת משנה את הוראות הליבה שלה בין דורות עוקבים כדי לעודד מוטציות מגוונות ולמנוע ממודל השפה הגדול ליפול לדפוסי קידוד חוזרים. ההתנהגות הזו היא אחד מהמנגנונים העיקריים שעוזרים ל-AlphaEvolve לחקור מגוון רחב של אפשרויות במקום להיתקע באופטימיזציות מקומיות מצומצמות.
קריאות הקוד
מורכבות הקוד היא מדד עזר יעיל. אם קריאות הקוד הסופי היא גורם חשוב בתרחיש השימוש שלכם בסביבת הייצור, כדאי להוסיף את אורך הקוד או את המורכבות הקוגניטיבית כמדד יעד משני.
AlphaEvolve יכולה להשיג דחיסה של עד 50% של קבצים בלי לפגוע בביצועים הפונקציונליים. עם זאת, מודל ה-LLM ינצל מדדים פשוטים ותמימים (כמו הסרת כל התגובות בשורה כדי להפחית את מספר התווים הגולמי). כדי למנוע את זה, כדאי להטמיע מדדים שמציגים מורכבות מבנית משמעותית, כמו מורכבות ציקלומטית או ספירת צמתים של עץ תחביר מופשט (AST), במקום להעריך את האורך של מחרוזות גולמיות.