Sub Agents במערכות AI: איך מחליטים מה להשאיר ומה לזרוק

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