סוכנים אוטונומיים - מנגנון ReAct
סוכן הוא מערכת שמחברת מודל שפה עם לולאת החלטה, כלים, וזיכרון. ReAct היא תבנית שמערבבת Reasoning ו-Acting כדי לפתור בעיות רב-שלביות.
1) Agentic Loop - הלולאה שמבדילה סוכן מצ'אט
צ'אט "רגיל" מחזיר טקסט. סוכן מפעיל כלים, קורא API, כותב לקובץ, ומתקן את עצמו לפי תוצאות. לכן יש לו לולאת עבודה עם מצבים:
2) מהי ReAct?
ReAct מציעה מבנה טקסטואלי שבו המודל מייצר:
- Reasoning (חשיבה): ניסוח השלב הבא, מה חסר, ומה צריך לבדוק.
- Action (פעולה): הפעלת כלי או קריאת API עם פרמטרים.
- Observation (תצפית): תוצאת הכלי חוזרת למודל והוא ממשיך.
למה זה עובד טוב?
כי זה מפריד בין "דיבור" לבין "אימות". במקום להמציא, המודל לומד להיעזר במקורות חיצוניים ולבדוק את עצמו. זה קריטי בסביבה ארגונית שבה טעויות הן יקרות.
- כלי חיפוש - מביא עובדות.
- כלי DB - מחזיר נתונים אמיתיים.
- כלי קוד - מחשב תוצאות ולא מסתמך על אינטואיציה.
3) Tool Calling - API עבור המודל
כדי שסוכן יפעל בעולם, הוא צריך "כלים". כלי הוא פונקציה עם חתימה מוגדרת (סכמה), והמודל בוחר מתי לקרוא לה. במערכת שלך, הכלים יכולים להיות:
כלי מידע
חיפוש, קריאה ממסד נתונים, RAG, קריאת קבצים.
כלי פעולה
שליחת מייל, יצירת ticket, עדכון CRM, ביצוע רכישה.
כלי אימות
הרצת קוד, בדיקת סכמות, חוקים עסקיים.
4) מצב (State) וזיכרון (Memory)
המודל עצמו סטטיסטי, ולכן ה"מצב" של הסוכן נשמר סביבו: היסטוריית שיחה, תוצאות כלים, ומבנה עבודה (למשל checklist). באופן פרקטי יש שני סוגי זיכרון:
- Short-term: קונטקסט נוכחי של המשימה.
- Long-term: ידע מצטבר - מסמכים, אינדקס, פרופיל משתמש.
כלל פרקטי: סוכן טוב לא שומר הכל. הוא מסכם, שומר "עובדות" שנבדקו, ומשתמש במפתחות שליפה כדי להחזיר מידע בזמן הנכון.
5) דוגמת תסריט ReAct (מפורמט)
זה פורמט קריא שממחיש את המבנה. בפריימוורקים מודרניים לא חייבים לחשוף את ה-Reasoning, אבל כן שומרים את ה-Action וה-Observation לצרכי ניטור.
Goal: "Create a note for user 42 and return its id"
Thought: I need to validate input, then call the Notes API to create the resource.
Action: POST /api/v1/notes {"user_id": 42, "title": "Todo", "content": "Buy milk"}
Observation: 201 Created {"id": 999}
Thought: Return the id in a compact response.
Final: {"id": 999}
כדי להפוך את זה למעשי, צריך API אמיתי. לכן הפרק הבא מראה איך בונים CRUD ב-FastAPI עם סכמות וטעויות אחידות.
לקריאת הפרק FastAPI CRUD