שיעור 4 — LangGraph
מטרות
- להעביר את הלולאה משיעור 3 למצב מפורש.
- להבדיל בין צומת שמחזיר שינוי, לבין קוד שמשנה מצב במקום.
- להוסיף מעבר אחר כששליפה לא מחזירה את המקור הדרוש.
למה מסגרת
הלולאה משיעור 3 שומרת הכול ברשימה אחת. קשה לעצור באמצע, לחזור לאותו צעד, או לבדוק צומת בלי להריץ את כל הסיפור. LangGraph נותן לזה צורה: אובייקט מצב, צמתים, וקשתות.
צומת קורא את המפתחות שהוא צריך ומחזיר רק את מה שהשתנה. המסגרת ממזגת. שינוי הרשימה במקום שובר את האפשרות לחזור אחורה למצב שנשמר.
דוגמה מצומצמת
המצב כולל את המשימה, את המזהים שכבר נשלפו, מונה צעדים, ותשובה. אחרי צומת השליפה, קשת מותנית שואלת:
- יש את שני המקורות: ממשיכים לחישוב.
- חסר מקור ונותר תקציב: חוזרים לשליפה בשאילתה אחרת.
- נגמר התקציב: צומת יציאה שמחזיר עצירה, לא תשובה מומצאת.
הקטע הבא הוא תרשים כוונה, לא קוד שהאתר מתקין עבורכם:
def route(state):
if state["answer"]:
return "end"
if state["step"] >= state["budget"]:
return "stop"
if "C:1" not in state["ids"]:
return "retrieve"
return "calculate"
מה בודקים במעבדה
מריצים את אותה שאלה משני המקורות. שומרים צילום של המצב אחרי כל צומת. מכבים את הקשת שחוזרת לשליפה, ומראים שהתהליך נעצר עם מקור אחד.
התיעוד הרשמי: LangGraph. גרסת החבילה תפורסם במודל לפני העבודה המדורגת.