בניתי עם קלוד כלי לשיפור פרומפטים מבוסס GEPA.

הרעיון: LLM שמריץ סבבי איטרציות של פרומפטים על מקרי מבחן, עד שמגיעים לפרומפט האופטימלי למשימה.

השיטה נוצרה כאופטימייזר בתוך ספריית DSPy, מתאימה למשימות עם output ברור כמו חילוץ נתונים, סיווג חשבוניות וכו’.

תהליך הבנייה

רציתי להבין לעומק והתחלתי לבנות דוגמאות עם קלוד קוד על בסיס LLM as judge. תוך כדי היו הרבה טעויות ואי הבנות, הוא הסביר, אני תיקנתי וכיוונתי אותו, עד שהבנתי מה אנחנו בונים והגענו לתוצאה טובה.

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

השלבים

ככה נכנסנו לעומק של כל השלבים:

  • בסיס: LLM מריץ את הפרומפט המקורי על test cases ונותן ציון
  • רפלקציה: מנתח את שרשרת החשיבה וה-traces של המודל
  • מוטציה: יוצר פרומפטים משופרים על בסיס הרפלקציה ומריץ שוב (כולל קרוסאובר בין פרומפטים מוצלחים)
  • הפרומפט שנבחר הוא ה-baseline לסבב הבא

Pareto Frontier

שלב חשוב לבחירה - Pareto Frontier: לא בוחרים רק לפי הציון הגבוה, מאזנים בין פרמטרים כמו דיוק מול אורך, יצירתיות מול עובדות, ועוד משתנים רלוונטיים למשימה.

התוצאה

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

מה אפשר ללמוד מזה?

  • תמיד כדאי לשאול את המודל איך כדאי לעבוד איתו, גם אם לא בתהליך מובנה
  • תנו למודל קונטקסט, הוא יבין ויכתוב לעצמו פרומפטים
  • הלמידה הכי טובה היא לבנות

לכלי