בחירה בין סוכן יחיד למערכת מרובת סוכנים עבור תהליך עבודה מורכב.
ברירת מחדל היא סוכן יחיד עם כלים. פצל למספר סוכנים רק כאשר גבולות המשימות ברורים, הקונטקסט עולה על גדותיו, או כאשר רמות מודלים שונות מתאימות למשימות משנה שונות.
למה: כל סוכן נוסף מכפיל את זמן ההשהיה, משטח השגיאות ועלות התזמור; רוב עומסי העבודה מצליחים עם סוכן אחד מצויד היטב.
המתזמר חייב לשלוח משימות משנה הטרוגניות למומחים.
השתמש בסוכן מפקח שמפרק את המטרה, מנתב לסוכני עבודה עם הנחיות וכלים משלהם, ומאגד תוצאות.
למה: שליטה מרכזית שומרת על מצב עקבי והופכת את גבול ההחלטה לניתן לביקורת לעומת נחיל חופשי לכל.
לזרימת ה-agent יש ענפים מותנים, לולאות והתפצלות מקבילה (parallel fan-out).
מַדֵּל את תהליך העבודה כגרף מפורש של צמתים וקצוות במקום לולאה חופשית, כך שזרימת הבקרה תהיה דטרמיניסטית וניתנת לחידוש.
למה: גרף מאפשר בדיקה של ענפים ומאפשר לך ליצור נקודות ביקורת (checkpoint) ולשחזר מכל צומת לאחר כשל.
בקשות נכנסות משתנות באופן נרחב בסוגן ובעלותן.
מקם לפני המערכת סוכן נתב קל משקל שמסווג כוונות ושולח לסוכן או כלי היכולים לבצע את המשימה בעלות הנמוכה ביותר.
למה: ניתוב מונע תשלום עלות frontier-model לבקשות טריוויאליות ומבודד חששות לכל נתיב.
מספר סוכנים חייבים לקרוא ולכתוב מצב תהליך עבודה משותף.
העבר את המצב לאחסון משותף חיצוני (מפתח-ערך או מסמך) שמקודד לפי סשן, במקום להעביר את התמליל המלא בין סוכנים.
למה: אחסון משותף מגביל את צמיחת הקונטקסט ומונע עותקים מגוונים של מצב בין סוכנים.
תכנון סוכנים להרחבה אופקית.
שמור על חישוב ה-agent כחסר מצב (stateless); שמור שיחה וזיכרון באופן חיצוני כך שכל עותק יוכל לטפל בכל בקשה.
למה: צמתים חסרי מצב מבצעים הרחבה אוטומטית נקייה ושורדים הפעלות מחדש של pods מבלי לאבד עבודה בתהליך.
סוכן משנה או כלי נכשלים באמצע תהליך העבודה.
תכנן צעדים אידמפוטנטיים עם ניסיון חוזר/השהיה הולכת וגוברת, פעולות פיצוי לתופעות לוואי, ונתיב חלופי או הסלמה אנושית כאשר הניסיונות החוזרים נגמרים.
למה: מערכות מבוססות agent נכשלות באופן חלקי; התאוששות חייבת להיות שיקול עיצובי מרכזי, לא מחשבה בדיעבד.
סוכני משנה מפותחים על ידי צוותים נפרדים.
הגדר את חוזה הקלט/פלט של כל agent כסכימה מוגדרת וטפל בסוכנים כשירותים מאחורי ממשקים יציבים.
למה: חוזים מפורשים מאפשרים לסוכנים להתפתח באופן עצמאי ולהיבדק ביחידות בנפרד.
איכות הפלט של הסוכן אינה עקבית במשימות קשות.
הוסף שלב ביקורת/רפלקציה שבודק את הטיוטה מול קריטריונים ומפעיל ניסיון חוזר מוגבל לפני החזרה.
למה: ביקורת עצמית תופסת שגיאות בזול, אך הגבל את האיטרציות כדי למנוע לולאות בלתי נשלטות ועלויות.
פיתוח סוכנים
ה-agent חייב לקיים אינטראקציה עם APIs חיצוניים, מסדי נתונים או קבצים.
חשוף יכולות כהגדרות פונקציות/כלים מוגדרות; המודל פולט קריאת כלי, הקוד שלך מבצע אותה ומחזיר את התוצאה, ואז הלולאה ממשיכה.
למה: קריאת כלי מובנית אמינה יותר וניתנת לביקורת מאשר ניתוח הוראות בטקסט חופשי.
ה-agent חייב להסיק מסקנות לגבי תצפיות לפני שהוא פועל שוב.
יישם לולאת ReAct: המודל מייצר מחשבה, בוחר כלי, מקבל את התצפית, וחוזר על הפעולה עד לעמידה בתנאי עצירה.
למה: שילוב חשיבה ופעולה חושף את השרשרת לניפוי באגים ומשפר את הדיוק בריבוי שלבים.
המודל משתמש לרעה או מדמיין (hallucinates) ארגומנטים של כלים.
כתוב תיאורים מדויקים של כלים, הגבל סוגי ארגומנטים ו-enums, וספק דוגמה אחת או שתיים לשימוש לכל כלי.
למה: רוב שגיאות קריאת הכלים נובעות מסכימות מעורפלות; התיאור הוא ה-prompt עבור הכלי.
קוד במורד הזרם (downstream) זקוק ל-JSON אמין מה-agent.
הגבל את היצירה לסכימת JSON (פלט מובנה) במקום לנתח טקסט חופשי, ובדוק תקינות לפני השימוש.
למה: פענוח מוגבל על ידי סכימה מבטל ניתוח regex שביר וסטייה שקטה בפורמט.
בניית agent בסביבת ייצור על גבי ערימת NVIDIA.
השתמש ב-NeMo Agent Toolkit כדי להרכיב agents, tools, ותהליכי עבודה, ולחבר קריאות מודלים לקצה האחורי (backends) המוגש על ידי NIM.
למה: ה-toolkit מתקנן את הצינורות (plumbing) של ה-agent ומשתלב באופן טבעי עם שירותי NVIDIA.