با LangGraph مانند یک زنجیره طولانیتر برخورد نکنید
از اینکه LangGraph را صرفاً LangChain با مراحل بیشتر ببینید، دست بردارید. این اشتباه منجر به ساخت عاملهای (agents) معیوب میشود.
LangGraph برای جریانهای کاری (workflows) است که به وضعیت (state)، شاخهها، فراخوانی ابزارها (tool calls) و تایید انسانی نیاز دارند. این ابزار برای عاملهایی است که باید بدون شروع مجدد، از خطاها بازیابی شوند.
اگر از آن استفاده میکنید، ابتدا باید سه چیز را تعریف کنید: state، interrupts و recovery.
اولین مرز: State Schema
برای یک پرامپت واحد، مرز همان متن است. برای LangGraph، مرز همان State schema است. شما باید تصمیم بگیرید:
- کدام فیلدها بین گرهها (nodes) جابهجا میشوند.
- کدام فیلدها توسط یک گره بهروزرسانی میشوند.
- چگونه شاخههای همزمان (concurrent) مقادیر را ادغام میکنند.
- کدام مقادیر وارد یک checkpoint میشوند.
- کدام مقادیر هرگز نباید ذخیره (persist) شوند.
در اینجا Reducerها حیاتی هستند. اگر قانون مناسبی برای افزودن (append) پیامها تنظیم نکنید، کارهای موازی شما باعث از دست رفتن دادهها میشود.
از کوچک شروع کنید. یک گراف با یک schema، یک node و یک reducer بسازید. اگر نمیتوانید این را به درستی اجرا کنید، اضافه کردن ابزارها (tools) فقط خطاهای شما را پنهان میکند.
مرز زمان اجرا (Runtime Boundary)
قبل از اینکه compile() را فراخوانی کنید، گراف شما فقط یک توصیف است. پس از compile()، زمان اجرا (runtime) کنترل را به دست میگیرد.
وقتی یک گراف با خطا مواجه میشود، فقط به گره (node) نگاه نکنید. این چهار مورد را بررسی کنید:
- آیا State schema به گره اجازه میدهد آن کلید (key) را بنویسد؟
- آیا گره یک فیلد State معتبر برمیگرداند؟
- آیا reducer دادهها را به درستی ادغام میکند؟
- آیا لبه شرطی (conditional edge) مسیر خروجی دارد؟
انسان در چرخه (Human In The Loop)
با تایید انسانی مانند یک ویژگی رابط کاربری (UI) برخورد نکنید. با آن مانند یک قرارداد گراف برخورد کنید.
یک الگوی قابل اعتماد به این صورت است:
- مدل یک فراخوانی ابزار (tool call) را پیشنهاد میدهد.
- گراف یک interrupt ایجاد میکند.
- یک انسان اقدام را تایید یا ویرایش میکند.
- گراف دقیقاً از همان نقطه از سر گرفته میشود.
این کار باعث میشود عاملها به جای اینکه فقط واکنشگر (reactive) باشند، قابلیت بازیابی (recoverable) داشته باشند.
چکلیست تست اولیه (Smoke Checklist)
قبل از رفتن به مرحله تولید (production)، این تست را اجرا کنید:
- از یک دایرکتوری موقت بدون دادههای تولید استفاده کنید.
- یک State حداقلی تعریف کنید.
- یک node بنویسید که فقط فیلدهای معتبر را برمیگرداند.
- از یک reducer برای عملیات append استفاده کنید.
- یک interrupt قبل از یک اقدام ابزاری اضافه کنید.
- یک checkpointer اضافه کنید.
- یک خطا ایجاد کنید و رفتار بازیابی (resume) را بررسی کنید.
اگر این مسیر با شکست مواجه شد، ابزارهای بیشتری اضافه نکنید. مشکل در مرز زمان اجرای (runtime boundary) شماست.
LangGraph برای فراخوانیهای تکمرحلهای مدل نیست. زمانی از آن استفاده کنید که هوش مصنوعی شما نیاز به انجام کارهای چندمرحلهای دارد که قابل بازرسی، قابل توقف و قابل بررسی باشند.
Optional learning community: https://t.me/GyaanSetuAi
