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

אך בשלות אינה מהווה חובה. העובדה שכלי מוכן לייצור אינה אומרת שהוא שייך לכל קובץ ייצור שתכתבו. אי שם בין ה-release notes לבין מסמך הדרישות שלכם, מפתחים רבים מאבדים את הכיוון. הם נשלחים ל-LangChain או ל-LangGraph כמו למפתח ברגים אוניברסלי, ומנסים להבריג אותם לכל בעיית LLM שהם נתקלים בה. ההרגל הזה שורף כסף, מסתיר באגים והופך קוד פשוט לסיוט תחזוקתי.

מלכודת הבשלות

אבן הדרך של גרסה 1.0 פירושה שה-APIs התייצבו, תאימות לאחור (backward compatibility) היא כעת הבטחה אמיתית, ולמפתחים יש כ

במקרים אלו, הטוקנים הנוספים ש-LangGraph צורך הם הוצאה הנדסית, לא בזבוז. ה-framework מטפל בלוגיקת ניסיונות חוזרים (retry logic), שמירת מצב (state persistence), תנאי פיצול וויזואליזציה של גרפים. אתם מחליפים עודף טוקנים בשפיות ארכיטקטונית, וזה בדרך כלל עסקה טובה. כשהחלופה היא להמציא מריץ גרפים מכוונים (directed graph executor) משלכם בצהרי יום שלישי, הבחירה בכלי מתוחזק היא המהלך החכם יותר.

מס ה-Framework

הסכנה טמונה בקצה השני של הספקטרום: צ'אטבוטים פשוטים וצינורות (pipelines) בסיסיים של retrieval-augmented generation (RAG).

זרימת RAG ישירה כוללת אולי שלושה שלבים. יצירת embedding לשאילתה, הרצת חיפוש וקטורי, הכנסת הקטעים שנשלפו לתוך תבנית פרומפט (prompt template), וקריאה למודל. זהו זה. ניתן לכתוב זאת ב-40 שורות של Python פשוטה תוך שימוש ישיר ב-SDK של OpenAI, Anthropic או Gemini. הקוד קריא, ניתן לדיבאגינג ומהיר.

אם תכניסו את אותה זרימה לתוך framework ברמה גבוהה, אתם יורשים overhead בלתי נראה. שכבות הפשטה (abstraction layers) מכניסות system prompts נסתרים, עטיפת הוראות מפורטת (verbose) ועיצוב מטא-דאטה תובעני טוקנים שמעולם לא ביקשתם. קריאת API ישירה שולחת בדיוק את הבייטים שצוינו. עטיפה של framework יכולה להוסיף לכל בקשה מאות טוקנים נסתרים. אם תריצו זאת בקנה מידה גדול, חשבון ה-LLM החודשי שלכם יתנפח ללא שום משתמש