LangGraph کو ایک طویل چین (Chain) کے طور پر نہ سمجھیں
LangGraph کو محض زیادہ مراحل والی LangChain سمجھنا بند کریں۔ یہ غلطی خراب ایجنٹس (agents) کا باعث بنتی ہے۔
LangGraph ان ورک فلو (workflows) کے لیے ہے جنہیں state، شاخوں (branches)، ٹول کالز (tool calls) اور انسانی منظوری کی ضرورت ہوتی ہے۔ یہ ان ایجنٹس کے لیے ہے جنہیں دوبارہ شروع کیے بغیر غلطیوں سے سنبھلنا (recover) ضروری ہے۔
اگر آپ اسے استعمال کرتے ہیں، تو آپ کو پہلے تین چیزیں متعین کرنی ہوں گی: state، interrupts، اور recovery۔
پہلی حد: State Schema
ایک سنگل پرامپٹ (prompt) کے لیے، حد متن (text) ہوتی ہے۔ LangGraph کے لیے، حد State schema ہے۔ آپ کو فیصلہ کرنا ہوگا:
- کون سے فیلڈز (fields) نوڈز (nodes) کے درمیان منتقل ہوتے ہیں۔
- کون سے فیلڈز ایک نوڈ اپ ڈیٹ کرتا ہے۔
- متوازی شاخیں (concurrent branches) ویلیوز کو کیسے ضم (merge) کرتی ہیں۔
- کون سی ویلیوز چیک پوائنٹ (checkpoint) میں داخل ہوتی ہیں۔
- کون سی ویلیوز کو کبھی بھی مستقل (persist) نہیں ہونا چاہیے۔
یہاں Reducers انتہائی اہم ہیں۔ اگر آپ پیغامات کو شامل (append) کرنے کے لیے مناسب اصول مقرر نہیں کرتے، تو آپ کا متوازی کام ڈیٹا ضائع کر دے گا۔
چھوٹے پیمانے سے شروع کریں۔ ایک اسکیما (schema)، ایک نوڈ اور ایک ریڈیوسر (reducer) کے ساتھ ایک گراف بنائیں۔ اگر آپ اسے درست طریقے سے نہیں چلا سکتے، تو ٹولز (tools) کا اضافہ صرف آپ کی غلطیوں کو چھپائے گا۔
رن ٹائم (Runtime) کی حد
compile() کو کال کرنے سے پہلے، آپ کا گراف محض ایک تفصیل ہوتا ہے۔ compile() کے بعد، رن ٹائم (runtime) کنٹرول سنبھال لیتا ہے۔
جب کوئی گراف ناکام ہو جائے، تو صرف نوڈ کو نہ دیکھیں۔ ان چار چیزوں کو چیک کریں:
- کیا State schema نوڈ کو وہ کی (key) لکھنے کی اجازت دیتا ہے؟
- کیا نوڈ ایک درست State فیلڈ واپس کرتا ہے؟
- کیا ریڈیوسر ڈیٹا کو درست طریقے سے ضم (merge) کرتا ہے؟
- کیا کنڈیشنل ایج (conditional edge) کا کوئی ایگزٹ پاتھ (exit path) ہے؟
ہیومن ان دی لوپ (Human In The Loop)
انسانی منظوری کو محض ایک UI فیچر کے طور پر نہ لیں۔ اسے ایک گراف کنٹریکٹ (graph contract) کے طور پر دیکھیں۔
ایک قابل اعتماد پیٹرن (pattern) کچھ اس طرح کا ہوتا ہے:
- ماڈل ایک ٹول کال (tool call) تجویز کرتا ہے۔
- گراف ایک انٹراپٹ (interrupt) پیدا کرتا ہے۔
- ایک انسان عمل کو منظور کرتا ہے یا اس میں ترمیم کرتا ہے۔
- گراف بالکل اسی مقام سے دوبارہ شروع ہو جاتا ہے۔
یہ ایجنٹس کو محض ری ایکٹیو (reactive) بنانے کے بجائے ریکوریبل (recoverable) بناتا ہے۔
آپ کی سموک چیک لسٹ (Smoke Checklist)
پروڈکشن (production) میں جانے سے پہلے، یہ ٹیسٹ چلائیں:
- بغیر کسی پروڈکشن ڈیٹا کے ایک عارضی ڈائریکٹری استعمال کریں۔
- ایک کم سے کم (minimal) State متعین کریں۔
- ایک ایسا نوڈ لکھیں جو صرف درست فیلڈز واپس کرے۔
- اپینڈ (append) ایکشنز کے لیے ریڈیوسر استعمال کریں۔
- ٹول ایکشن سے پہلے ایک انٹراپٹ شامل کریں۔
- ایک چیک پوائنٹر (checkpointer) شامل کریں۔
- جان بوجھ کر ناکامی پیدا کریں اور دوبارہ شروع ہونے کے عمل (resume behavior) کی تصدیق کریں۔
اگر یہ راستہ ناکام ہو جاتا ہے، تو مزید ٹولز شامل نہ کریں۔ مسئلہ آپ کی رن ٹائم حد (runtime boundary) میں ہے۔
LangGraph یک سہمیہ (one-off) ماڈل کالز کے لیے نہیں ہے۔ اسے اس وقت استعمال کریں جب آپ کے AI کو ایسا کثیر مرحلہ وار (multi-step) کام کرنے کی ضرورت ہو جسے معائنہ (inspectable)، روکنا (pausable) اور نظر ثانی (reviewable) کیا جا سکے۔
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi
