דלג לתוכן

דפוס מתזמר-עובדים (Orchestrator-Worker Pattern)

הגדרה

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

מימין כרטיס המתזמר (מודגש בכחול). ממנו יוצאים שלושה חצים אל עמודה של שלושה עובדים, ומהם שלושה חצים מתכנסים אל כרטיס הסינתזה משמאל. חץ מקווקו חוזר מהסינתזה אל המתזמר, עם השאלה אם צריך עוד סבב. בתחתית פס הסבר. הטקסט בתמונה: מתזמר ועובדים: פירוק, הפצה, סינתזה | מתזמר | מפרק את המשימה; מספר החלקים לא ידוע מראש | עובד | עובד | עובד | במקביל, כל אחד עם הקשר וכלים משלו | סינתזה לתשובה אחת | צריך עוד סבב? | משתלם במחקר רחב; כשהשלבים תלויים זה בזה, סוכן יחיד עדיף
המתזמר מפרק את המשימה לחלקים שמספרם לא ידוע מראש, שולח אותם לכמה עובדים שפועלים במקביל, ומאחד את התוצאות לתשובה אחת. אם צריך, הוא מריץ סבב נוסף.תרשים מקורי של Wiki-AI · לחצו על התרשים להגדלה

הגדרה: מה זה דפוס מתזמר-עובדים, ואיך הוא שונה מצינור-עבודה קבוע

דפוס מתזמר-עובדים (Orchestrator-Worker Pattern) הוא תבנית-זרימת-עבודה שבה מודל-שפה מרכזי — "המתזמר" — מפרק דינמית משימה מורכבת לתת-משימות, מפיץ אותן במקביל לכמה "סוכני-עובד" (Worker LLMs), ולבסוף מסנתז את התוצאות שחוזרות מהם לתשובה אחת מאוחדת. ההבדל המהותי מול צינור-עבודה קבוע-מראש (למשל "שרשור-פרומפטים", Prompt Chaining, שבו כל שלב מוגדר מראש בקוד ומורץ בסדר קבוע) הוא שהמתזמר מחליט "תוך-כדי-ריצה" כמה תת-משימות יש, מה תוכנן, ולאיזה עובד לשלוח כל אחת — הפירוק עצמו הוא פלט של המודל, לא לוגיקה קשיחה שנכתבה מראש על-ידי מפתח. זה מה שהופך את הדפוס למתאים במיוחד למשימות שבהן מספר תת-השלבים הדרושים אינו ידוע מראש, ותלוי בתוכן הבקשה הספציפית — לדוגמה, שאילתת-מחקר שדורשת לפעמים תת-משימה אחת ולפעמים חמש, בהתאם למידת-המורכבות של הנושא ולמספר-הזוויות שראוי לבדוק בו בנפרד לפני שמגבשים תשובה סופית.

המקור התיעודי: "Building Effective Agents" של Anthropic ומשפחת חמשת-הדפוסים

המונח מתועד באופן מדויק ורשמי בפוסט המכונן של Anthropic מדצמבר 2024, "בניית סוכנים אפקטיביים" (Building Effective Agents), שמגדיר אותו כאחד מחמישה דפוסי-זרימה-עבודה סטנדרטיים לבניית מערכות-LLM מורכבות. ארבעת האחרים: "שרשור-פרומפטים" (Prompt Chaining) — פירוק משימה לרצף-שלבים קבוע-מראש, לעיתים עם "שערי-בדיקה" (gates) שמוודאים תקינות-ביניים לפני מעבר לשלב הבא; "ניתוב" (Routing) — סיווג קלט נכנס ושליחתו לאחד מכמה נתיבי-טיפול מיוחדים; "הרצה-מקבילית" (Parallelization) — הרצת אותה משימה כמה פעמים לצורך הצבעה, או פיצול משימה לתתי-חלקים ידועים-מראש שמורצים בו-זמנית; ו"מעריך-משפר" (Evaluator-Optimizer) — מודל אחד מייצר טיוטה, מודל שני (או אותו מודל בתפקיד שונה) מבקר אותה, בלולאה חוזרת עד שהתוצאה עומדת ברף איכות. ההגדרה הרשמית של מתזמר-עובדים בפוסט: "בזרימת-העבודה מתזמר-עובדים, LLM מרכזי מפרק דינמית משימות, מאציל אותן לLLM-י-עובד, ומסנתז את תוצאותיהם". הפוסט גם מבחין בין "זרימת-עבודה" (Workflow) לבין "סוכן" (Agent) במובן הצר-יותר: זרימת-עבודה עוברת דרך נתיבי-קוד קבועים-מראש, בעוד סוכן "מנהל אוטונומית" את התהליך שלו-עצמו — ודפוס מתזמר-עובדים נמצא בתווך: יש בו פירוק דינמי (כמו סוכן), אבל בתוך מסגרת-שליטה קבועה של "פרק, האצל, סנתז" (כמו זרימת-עבודה).

מקרה-מבחן: מערכת-המחקר הרב-סוכנית של Anthropic

הדוגמה המפורטת והמתועדת ביותר ליישום בקנה-מידה תעשייתי מופיעה בפוסט ההנדסי הבא של Anthropic, מיוני 2025, שמתאר את מערכת-המחקר-הרב-סוכנית שלה: סוכן-מתזמר בשם LeadResearcher מקבל שאילתת-מחקר, בונה תוכנית-מחקר, ואז מפעיל 3 עד 5 "תת-סוכני-עובד" (Subagents) במקביל — כל אחד עם חלון-הקשר וגישת-כלים משלו — לחקור זוויות-משנה שונות של אותה שאלה, ולעיתים אף עם 3 כלים או יותר שכל עובד מפעיל בו-זמנית מבפנים. כשהעובדים מסיימים, LeadResearcher מסנתז את התוצאות ומחליט אם דרוש עוד סבב-חקירה לפני שמעביר את התוצאה לניסוח סופי אצל סוכן-ציטוטים ייעודי. Anthropic מדווחת ש-95% משונות-הביצועים בהערכת BrowseComp הוסברה על-ידי שלושה גורמים בלבד — מספר-הטוקנים-שנצרכו, מספר-קריאות-הכלים, ובחירת-המודל — כשמספר-הטוקנים לבדו הסביר 80% מהשונות; ושהמערכת המתוזמרת-רב-סוכנית עקפה ב-90.2% סוכן בודד על מבחן-מחקר פנימי, במחיר של כ-15 פי יותר טוקנים מאשר שיחת-צ'אט רגילה (לעומת פי-4 בלבד לסוכן בודד עם כלים). שיפורים תפעוליים לאורך זמן הראו שהתועלת-בפועל מהדפוס לא הייתה קבועה: שדרוג תיאורי-הכלים שכל עובד קיבל צמצם את זמן-השלמת-המשימה ב-40%, ושינויים בדרך שבה עובדים הופעלו במקביל הביאו במקרים מסוימים לקיצור זמן-המחקר הכולל בעד 90% — הוכחה שבדפוס מתזמר-עובדים, איכות-ניסוח-ההוראות שכל עובד מקבל מהמתזמר משפיעה על התוצאה לפחות באותה מידה כמו עצם קיום-המקביליות.

מתי להשתמש בדפוס הזה, ומתי להימנע ממנו

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

הבדל מ"תזמור-סוכנים" הכללי ומדפוסי-זרימה שכנים אחרים

חשוב להבדיל בין דפוס מתזמר-עובדים הספציפי הזה לבין המונח הרחב יותר "תזמור-סוכנים" (Agent Orchestration): תזמור-סוכנים הוא הקטגוריה הכללית של כל שיטת-ניהול בין כמה סוכנים — כולל ניתוב מרכזי, זרימה-רציפה (pipeline), ותיאום-לא-מרכזי — ואילו מתזמר-עובדים הוא דפוס-ספציפי אחד בתוך הקטגוריה הזו, המזוהה עם פירוק-דינמי + הפצה-מקבילית + סינתזה. הוא גם שונה מ"הרצה-מקבילית" הפשוטה (Parallelization) — שם, לרוב, אותה משימה מופצת לכמה מודלים באופן זהה כדי להשוות תוצאות ("הצבעה") או שתת-המשימות ידועות-מראש ומפוצלות סטטית לפי חלוקה קבועה; במתזמר-עובדים, לעומת זאת, המתזמר עצמו מחליט דינמית מה כל עובד יעשה. מדריך-הארכיטקטורה של מיקרוסופט ל-Azure מתעד תבנית קרובה תחת השם "תזמור-מקבילי" (Concurrent Orchestration), עם הכינויים החלופיים "פאן-אאוט/פאן-אין", "scatter-gather" ו-"map-reduce" — אך שם, בניגוד למתזמר-עובדים, כל הסוכנים בדרך-כלל מעבדים בו-זמנית את אותו קלט מנקודות-מבט שונות, ולא מקבלים תת-משימות שונות שפורקו דינמית. לבסוף, "דפוס תת-סוכן" (Subagent Pattern) מתאר את לבנת-הבניין הממוקדת יותר — יחידת-הפעלה בודדת עם חלון-הקשר מבודד — שממנה, בפועל, בנוי דפוס מתזמר-העובדים: תת-הסוכן הוא ה"עובד", ומתזמר-העובדים הוא הדפוס השלם שמתאר איך המתזמר מנהל את קבוצת-התת-הסוכנים הזו מקצה-לקצה.

קרוב-משפחה פרוע-יותר: תזמור מגנטי (Magentic) לבעיות פתוחות-לחלוטין

מדריך-הארכיטקטורה של Azure מתעד גם דפוס שכן נוסף, "תזמור מגנטי" (Magentic Orchestration), שמיועד לבעיות פתוחות-ומורכבות שאין להן תוכנית-פעולה קבועה-מראש כלל — לא רק תת-משימות לא-ידועות, אלא אפילו לא ברור מראש כמה סבבי-תכנון יידרשו. שם, "מנהל מגנטי" (Magentic Manager) בונה "פנקס-משימות" (Task Ledger) שמתעדכן דינמית ככל שהקשר מתפתח, ומתעד יעדים ותתי-יעדים לאורך כל התהליך, לא רק בשלב-הפירוק הראשוני היחיד כמו במתזמר-עובדים הקלאסי. ההבדל המעשי בין השניים: במתזמר-עובדים, הפירוק מתרחש בעיקר פעם אחת בתחילת התהליך ואז העובדים פועלים במקביל עד לסיום; בתזמור-מגנטי, התוכנית-עצמה ממשיכה להתעדכן תוך-כדי-ריצה בהתאם לתוצאות-ביניים, מה שהופך אותו לגמיש יותר אך גם לפחות צפוי מבחינת עלות — Azure מציינת במפורש ש"תזמורי-מגנטי הם המשתנים-ביותר, מכיוון שסוכן-המנהל ממשיך לחזור-על-עצמו עד שהוא בונה תוכנית בת-קיימא, מה שמקשה על חיזוי העלות הכוללת" מראש, בניגוד למתזמר-עובדים שבו לפחות מספר-סבבי-הפירוק-הראשוניים ניתן להעריך מראש בקירוב.

ניהול-עלות בפועל: התאמת-מודל לכל עובד, וניטור לפי סוכן

מכיוון שדפוס מתזמר-עובדים מכפיל את מספר-קריאות-המודל בהשוואה לסוכן בודד, ניהול-עלות הופך לשיקול-תכנון מרכזי ולא רק תוצאה-לוואי. מדריך-הארכיטקטורה של Azure ממליץ על שתי פרקטיקות מרכזיות: ראשית, "להקצות לכל סוכן מודל שמתאים למורכבות המשימה שלו — לא כל סוכן צריך את המודל-היכולתי-ביותר; סוכנים שמבצעים סיווג, חילוץ-מידע, או עיצוב-פלט יכולים לרוב להשתמש במודלים קטנים וזולים יותר בלי פגיעה באיכות הכוללת" — כלומר במתזמר-עובדים אמיתי, לא כל העובדים חייבים לרוץ על אותו מודל; המתזמר עצמו, שמבצע את עבודת-התכנון המורכבת-יותר, יכול לרוץ על מודל חזק, בעוד עובד שמבצע חיפוש-פשוט או עיצוב-טקסט סופי יכול לרוץ על מודל קטן ומהיר בהרבה. שנית, מומלץ לנטר צריכת-טוקנים בנפרד לכל סוכן ולכל הרצת-תזמור שלמה, כדי לזהות באילו עובדים ספציפיים כדאי להשקיע מאמץ-אופטימיזציה — בהתאם לממצא של Anthropic ש-80% משונות-הביצועים מוסברת על-ידי צריכת-הטוקנים לבדה, מעקב ברמת-עובד-בודד הוא הכלי המעשי הראשון לאיתור נקודות-הבזבוז.

📬 הגיליון השבועי של Wiki-AI

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

שאלות נפוצות ❓

מה ההבדל בין דפוס מתזמר-עובדים לבין "תזמור-סוכנים" באופן כללי?

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

איך יודעים כמה "עובדים" להפעיל?

המתזמר עצמו מחליט זאת דינמית בזמן-ריצה, בהתאם למורכבות הבקשה שהתקבלה — במקרה של Anthropic, בדרך-כלל 3 עד 5 תת-סוכנים במקביל, אך המספר יכול להשתנות בהתאם לתוכן השאלה.

האם דפוס מתזמר-עובדים תמיד משתלם?

לא — הוא צורך משמעותית יותר טוקנים מסוכן בודד (Anthropic מדווחת על עד פי-15), ולכן משתלם בעיקר במשימות רחבות-היקף שבאמת נהנות ממקביליות, לא במשימות פשוטות או תלויות-הקשר-רציף.

מה ההבדל בין מתזמר-עובדים לבין הרצה-מקבילית (Parallelization) רגילה?

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

האם המתזמר "רואה" את כל מה שהעובדים עשו?

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

שתפו:וואטסאפטלגרם

מצאתם טעות בערך, או שיש לכם מקור שכדאי להוסיף? כתבו לנו