נמק ופעל (ReAct)

כלים וסוכנים

הגדרה

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

הבעיה: נימוק בלי פעולה, פעולה בלי נימוק

לפני ReAct, שתי גישות עיקריות התמודדו בנפרד עם שני חלקים של אותה בעיה. "שרשור-מחשבה" (Chain of Thought) גרם למודל-שפה לנמק צעד-אחר-צעד לפני מתן תשובה, אבל בלי גישה למידע-חיצוני-מעודכן — מה שהותיר אותו חשוף להזיות ולשגיאות שמצטברות לאורך הנימוק, בלי דרך לתקן אותן תוך-כדי. מנגד, שיטות שרק ביצעו פעולות (הרצת-כלים, שאילתות-חיפוש) בלי נימוק מפורש שקדם להן, התקשו לתכנן רצף-פעולות ארוך או לפרש נכון את תוצאות הפעולה כדי להחליט מה לעשות הלאה.

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

הרעיון: מחשבה, פעולה ותצפית, לסירוגין

מאמר ReAct, שפרסמו חוקרים מאוניברסיטת פרינסטון ומ-Google Research באוקטובר 2022, הציע לגרום למודל לייצר, בתוך אותו רצף-טקסט-יחיד, שני סוגי-שורות לסירוגין: "מחשבה" (Thought) — נימוק מפורש על מה שצריך לבדוק או לעשות בשלב הבא — ואחריה "פעולה" (Action) — קריאה בפועל לכלי-חיצוני, כמו חיפוש במאגר-ידע. תוצאת-הפעולה חוזרת אל המודל כ"תצפית" (Observation), ומזינה את המחשבה הבאה. המעגל חוזר-על-עצמו עד להשלמת המשימה — כך שכל צעד-פעולה נשען על נימוק גלוי שקדם לו, וניתן לעקוב אחריו ולבקר אותו בדיעבד, בניגוד לשרשרת-מחשבה סגורה שאין לה עוגן במידע חיצוני.

המאמר בחן את השיטה בשני אופנים שונים, לא רק כדרך-הנחיה יחידה. באופן הראשון, "הנחיה" (Prompting) — מספר-דוגמאות-הדגמה בודד בתוך הפרומפט עצמו, בלי כל אימון-מחדש של המודל. באופן השני, "אימון-דק" (Fine-tuning) על תבנית ReAct עצמה — וכאן נמצאה תוצאה בולטת: כשמודל קטן-יחסית (PaLM בגודל 8 מיליארד פרמטרים) אומן-דק על כ-3,000 דוגמאות בלבד בתבנית ReAct, הוא עלה בביצועיו על כל שיטות ה-Prompting שהופעלו על מודל גדול-בהרבה (PaLM בגודל 62 מיליארד פרמטרים) — עדות לכך שהתבנית עצמה, לא רק גודל-המודל, היא מה שתורם לאיכות-הנימוק.

התוצאות: HotpotQA, Fever, ALFWorld ו-WebShop, וההגהה האנושית

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

ALFWorld ו-WebShop הם שני מבחני קבלת-החלטות-אינטראקטיביים בסביבות-סימולציה: ב-ALFWorld סוכן צריך להשיג יעד-ביתי (למשל "לבדוק מסמך לאור מנורת-שולחן") על-ידי ניווט-ואינטראקציה עם בית מדומה דרך פקודות-טקסט; ב-WebShop סוכן צריך לרכוש מוצר מתוך קטלוג של כ-1.18 מיליון מוצרים אמיתיים, לפי הוראה בשפה-טבעית. ב-ALFWorld ReAct עלה על שיטות מבוססות-חיקוי ולמידת-חיזוק בשיעור-הצלחה מוחלט של 34 אחוזים, וב-WebShop ב-10 אחוזים — תוך שימוש באחת או שתי דוגמאות-הדגמה בלבד בתוך הפרומפט. יתרון נוסף שהמחברים הדגימו במפורש: מכיוון שכל צעד-פעולה מלווה בנימוק-גלוי, אדם יכול לערוך ידנית שורת-"מחשבה" בודדת בתוך תרשים-פעולה שגוי — למשל להסיר משפט-הזיה או להוסיף רמז — ולגרום למודל לשנות התנהגות ולהצליח במשימה, צורת-שיתוף-פעולה-אדם-מכונה שלא הייתה אפשרית מול מדיניות-פעולה סגורה של שיטת-למידת-חיזוק רגילה.

מ-2022 להיום: ICLR 2023, ותבנית שהמשיכה להתפתח במחקר

המאמר התקבל לכנס ICLR 2023, אחד מכנסי-המחקר המרכזיים בתחום למידת-המכונה, וגרסתו-הסופית ("camera ready") פורסמה במרץ 2023. מאז, תבנית "נמק-ופעל" הפכה לרכיב-יסוד כמעט בכל מסגרת-פיתוח לבניית סוכני-AI, והביטוי "סוכן-ReAct" (ReAct Agent) עצמו הפך לשם נפוץ במסגרות כאלה, המשמש לתאר בדיוק את הלולאה הזו — תכנון-פעולה-תצפית-חוזרת — גם כשמימוש-הקוד בפועל שונה במפורט מהפרומפט המדויק שהוצג במאמר המקורי. גם מודלים שאינם מיישמים את הפורמט המדויק (שורות "מחשבה"/"פעולה"/"תצפית" מוגדרות) שאולים ממנו את העיקרון הבסיסי: לגרום למודל לחשוב-בקול-רם לפני שהוא פועל, ולתת לתוצאת-הפעולה להשפיע על הצעד הבא.

ReAct גם לא נשאר מאמר בודד: אותה קבוצת-מחברים כמעט-זהה — שישה מתוך שבעת מחברי ReAct, בהם שאניו יאו וקרתיק נרסימחן — פרסמה כבר במאי 2023 את Tree of Thoughts, מאמר שמכליל את רעיון-הנימוק-הרציף למבנה-עץ: במקום מסלול-מחשבה ליניארי יחיד, המודל בוחן כמה מסלולי-מחשבה מקבילים ובוחר ביניהם, הרחבה מפורשת מעבר לשרשור-מחשבה הרגיל. במרץ 2023 פרסמו שאניו יאו וקרתיק נרסימחן, יחד עם נח שין וחוקרים נוספים, גם את Reflexion: מסגרת שבה סוכן-שפה מבקר-במילים את הכישלון של ניסיון קודם, שומר את הביקורת בזיכרון-אפיזודי, ומשתמש בה בניסיון הבא — למידה מ"משוב-לשוני" בלי עדכון-משקלות של המודל עצמו, שהגיעה לדיוק של 91 אחוזים במבחן-הקידוד HumanEval, מעל 80 האחוזים של GPT-4 שקדם לו. שני קווי-המחקר האלה ממחישים ש-ReAct הפך לנקודת-פתיחה לזרם-מחקר שלם על נימוק-סוכן, לא רק לתבנית-הנדסית בודדת.

מגבלות שהמחברים עצמם תיעדו: לולאות-חוזרות וטווח-הפרומפט

המאמר המקורי לא הציג את ReAct כפתרון-מושלם, אלא תיעד במפורש כמה תבניות-כשל חוזרות. הנפוצה שבהן: "לולאת-חזרה" (Repetition), שבה המודל מייצר שוב-ושוב את אותה "מחשבה" ו"פעולה" קודמת בלי להתקדם — תופעה ספציפית לתבנית ReAct, שנובעת מכך שהמודל "רואה" את הרצף-שהוא-עצמו-ייצר כהקשר לצעד הבא, ולפעמים נתקע בו. תבנית-כשל שנייה, אחראית לכ-23 אחוזים משגיאות ReAct במבחן HotpotQA לפי ניתוח המחברים: תוצאת-חיפוש לא-אינפורמטיבית שמטעה את הנימוק ומקשה על המודל להתאושש ממנה, בניגוד לבן-אדם שהיה פשוט מנסח-מחדש את השאילתה.

המחברים ציינו גם מגבלה מבנית של השיטה עצמה: משימות מורכבות עם מרחב-פעולות גדול דורשות יותר דוגמאות-הדגמה כדי שהמודל ילמד היטב את התבנית — ומספר-הדוגמאות הזה עלול בקלות לחרוג ממגבלת-אורך-הקלט של המודל, מה שמציב תקרה מעשית על כמה "ידע-פעולה" אפשר לדחוס לפרומפט בודד. ולבסוף, המחברים היו גלויים לגבי מקום השיטה ביחס לפתרונות-ייעודיים: גם עם השיפור המשמעותי על שיטות-קודמות, ReAct נותר עדיין רחוק-משמעותית מגישות state-of-the-art ספציפיות-לתחום שפותחו במיוחד עבור כל אחד מארבעת המבחנים בנפרד — התרומה שלו היא כלליות ופרשנות, לא ניצחון על כל בנצ'מרק.

נמק-ופעל מול קריאת-כלים הנדסית: מה בדיוק שונה

כדאי להבחין בין ReAct כתבנית-מחקר לבין המימוש-ההנדסי שהתעשייה בנתה סביבה מאז. "קריאה-לפונקציה" (Function Calling) ו"קריאת-כלים" (Tool Calling), הכלים שהפכו סטנדרטיים בממשקי-התכנות של ספקי-מודלים מאז 2023, נותנים למודל ערוץ-מובנה ואמין לבחור פעולה ולהחזיר אותה בפורמט-נתונים קבוע — אבל הם, מצד עצמם, לא מחייבים שום נימוק-גלוי שמלווה את הבחירה. מודל יכול, מבחינה טכנית, לקרוא לפונקציה בלי לומר מילה על למה הוא בחר בה. תבנית ReAct היא בדיוק השכבה שמעל: היא זו שקובעת שכל קריאת-כלי כזו צריכה להיות מלווה ב"מחשבה" גלויה שקדמה לה — לא רק תוצאה, אלא גם הנימוק שהוביל אליה.

ההבדל הזה נעשה מוחשי דווקא בהשוואה לשרשור-מחשבה: שרשור-מחשבה, כפי שתואר במאמר המקורי שלו מ-2022 (Wei ואחרים, חוקרי Google Brain), מייצר אך-ורק טקסט-נימוק פנימי — הוא לא ניגש בזמן-ריצה לשום מקור-מידע חיצוני, ולכן לא יכול לתקן הנחה-שגויה על-סמך עובדה חדשה. ReAct שואל את אותה שאלת "מה הצעד הבא", אבל עונה עליה תוך-כדי גישה בפועל לעולם-החיצוני, ולא רק מתוך זיכרון-האימון של המודל. שלוש הגישות — שרשור-מחשבה, קריאת-כלים רגילה, ונמק-ופעל — אינן דורג-איכות אחד-מול-השני אלא שלושה פתרונות לשלוש בעיות-חלקיות שונות, שרוב מערכות-הסוכן המודרניות מרכיבות יחד.

נמק-ופעל (ReAct) מול שרשור-מחשבה (Chain-of-Thought) מול קריאת-כלים רגילה (Tool-Calling)
נמק-ופעל (ReAct)שרשור-מחשבה (Chain-of-Thought)קריאת-כלים רגילה (Tool-Calling)
כולל נימוק גלוי לפני כל צעד?כן — נימוק חובה לפני כל פעולהכן — זו כל השיטהלא בהכרח — יכול להחזיר קריאת-כלי בלי הסבר
ניגש למידע חיצוני בזמן-ריצה?כן — דרך לולאת פעולה-תצפיתלא — נימוק פנימי בלבדכן — זו כל מטרתו
מתקן את עצמו על-סמך תוצאת-ביניים?כן — התצפית מזינה את המחשבה הבאהלא — אין ערוץ-משוב חיצוניתלוי-במימוש, לא מובנה בפרוטוקול
הוצג על-ידי / מתיפרינסטון ו-Google Research, אוקטובר 2022חוקרי Google Brain, ינואר 2022OpenAI, יוני 2023

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

מה זה ReAct בקצרה?

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

מי כתב את מאמר ReAct, ומתי?

חוקרים מאוניברסיטת פרינסטון ומ-Google Research, שפרסמו את המאמר באוקטובר 2022; הוא התקבל לכנס ICLR 2023.

איך ReAct שונה משרשור-מחשבה (Chain of Thought) רגיל?

שרשור-מחשבה מנמק צעד-אחר-צעד בלי גישה למידע-חיצוני, ולכן חשוף להזיות; ReAct משלב פעולות-בפועל (כמו חיפוש) בתוך הנימוק עצמו, כך שהמודל יכול לבדוק ולתקן את עצמו תוך-כדי.

איפה ReAct משמש בפועל היום?

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