מושגים
איך האופטימיזציה עובדת
חוזה הריצה והציון, סוגי התוצרים, והמנועים לכל סוג.
Skynet הוא Optimize Anything: מוצר אחד שמשפר כל תוצר מול הנתונים ופונקציית המדידה (Metric) שלך. כל ריצה משתמשת באותו חוזה הרצה ובאותו חוזה של פונקציית מדידה. סוג התוצר קובע אילו מנועים יכולים לעבוד עליו.
החוזה המשותף
לכל ריצה יש שני קבצים. run.py מריץ את התוצר על מקרה אחד. metric.py נותן ציון לפלט.
from skynet import llm
def run(artifact, input):
return llm(artifact, input=input)def score(input, output, expected=None):
ok = output == expected
return (1.0 if ok else 0.0), {"feedback": "Match." if ok else "No match."}artifactהיא הגרסה הנוכחית שהאופטימייזר מציע.inputהוא dict שמכיל את שדות הקלט של מקרה אחד.expectedהוא הערך הצפוי של המקרה, אוNoneכשאין למקרה ערך כזה.scoreמחזיר זוג: מספר, ו-dict עם מחרוזת"feedback".
מודול העזר skynet נותן את llm, Image ו-log. קריאה ל-llm מקוד ההרצה הולכת למודל המשימה. קריאה ל-llm מפונקציית המדידה הולכת למודל של פונקציית המדידה.
קרא/י את פונקציות מדידה ופונקציות ציון לחוזה המלא של פונקציית המדידה.
סוגי תוצרים ומנועים
| סוג התוצר | מנועים |
|---|---|
| פרומפט | Auto, GEPA, Best-of-N, AutoResearch, Meta-Harness, AutoSaddler, ShinkaEvolve |
| קוד | כמו פרומפט |
| טקסט | כמו פרומפט |
| תוכנית DSPy | Auto, DSPy GEPA, DSPy MIPROv2, DSPy BootstrapFewShot |
המנועים מתחלקים לשתי משפחות:
- המנועים המובנים מתייחסים לתוצר כקופסה שחורה. הם עובדים על תוצרים מסוג פרומפט, קוד וטקסט.
- האופטימייזרים של DSPy עובדים בתוך תוכנית DSPy. הם עובדים רק על תוצרים מסוג תוכנית DSPy.
DSPy MIPROv2 ו-DSPy BootstrapFewShot צריכים זוגות (מקרים עם פלטים צפויים). עם קלט יחיד, תוכנית DSPy יכולה להשתמש רק ב-Auto וב-DSPy GEPA.
תוצרים מסוג פרומפט, קוד וטקסט
המנועים המובנים מתייחסים לתוצר כקופסה שחורה. מנוע מציע גרסה חדשה, מריץ את run(artifact, input) על המקרים, וקורא את הציון ואת המשוב.
ששת המנועים המובנים משתמשים בשיטות חיפוש שונות:
- GEPA מפתח גרסאות בעזרת רפלקציה ושומר חזית Pareto.
- Best-of-N מבקש ממודל האופטימיזציה הצעות בלתי תלויות ושומר את הטובה ביותר.
- AutoResearch, Meta-Harness, AutoSaddler ו-ShinkaEvolve משתמשים בסוכן קוד כדי להציע גרסאות.
קרא/י את מנועים כדי להכיר כל מנוע ואת ההגדרות שלו.
תוצרים מסוג תוכנית DSPy
תוכנית DSPy היא סוג תוצר אחד. קובץ run.py שלך בונה dspy.Module ברמת המודול וקורא לו בתוך run. אם בקובץ יש יותר ממודול אחד, יש לתת למודול שרוצים לשפר את השם program.
מה קורה כשאופטימייזר של DSPy רץ:
- Skynet מוצא את המודול שלך ועוטף אותו בפונקציית
runשלך. כל מקרה עובר דרך ה-runשלך. - האופטימייזר של DSPy מקמפל את התוכנית על מקרי האימון.
- הוא בוחר לפי מקרי האימות.
- המנצח הוא טקסט ההוראות של כל predictor, יחד עם המצב המקומפל המלא של המודול. המצב כולל את דוגמאות ה-few-shot.
הציונים הסופיים מודדים את אותה תוכנית ש-Skynet שומר.
| אופטימייזר | קורא את טקסט המשוב |
|---|---|
| DSPy GEPA | כן |
| DSPy MIPROv2 | לא, רק את הציון |
| DSPy BootstrapFewShot | לא, רק את הציון |
DSPy BootstrapFewShot לא משתמש במודל אופטימיזציה.
Auto
Auto היא בחירת ברירת המחדל באשף.
- בתוצר מסוג פרומפט, קוד או טקסט, Auto חוקר עם חמישה מנועים מובנים, ואז ממשיך עם GEPA מהגרסה הטובה ביותר.
- בתוכנית DSPy, Auto מריץ DSPy GEPA.
שתי הצורות של Auto קוראות את טקסט המשוב מפונקציית המדידה שלך.
איזה מנוע לבחור
| המצב שלך | במה להשתמש |
|---|---|
| יש לך פרומפט שמודל מריץ | תוצר מסוג פרומפט. כדאי להתחיל עם Auto. |
| יש לך קוד שרוצים להפוך למהיר יותר, זול יותר או נכון יותר | תוצר מסוג קוד. כדאי להתחיל עם Auto. |
| יש לך מסמך או קובץ הגדרות | תוצר מסוג טקסט. כדאי להתחיל עם Auto. |
| יש לך תוכנית DSPy | תוצר מסוג תוכנית DSPy. כדאי להתחיל עם Auto. |
| דרושות לך דוגמאות few-shot שנבחרות מהנתונים שלך | תוצר מסוג תוכנית DSPy עם DSPy BootstrapFewShot או DSPy MIPROv2 |