LangGraph-কে একটি দীর্ঘ চেইন হিসেবে গণ্য করবেন না
LangGraph-কে কেবল আরও বেশি ধাপযুক্ত LangChain হিসেবে দেখা বন্ধ করুন। এই ভুলটি ত্রুটিপূর্ণ এজেন্ট তৈরির দিকে নিয়ে যায়।
LangGraph হলো সেই সব ওয়ার্কফ্লোর জন্য যেখানে state, branches, tool calls এবং মানুষের অনুমোদনের (human approval) প্রয়োজন হয়। এটি এমন এজেন্টদের জন্য যারা রিস্টার্ট না করেই ত্রুটি থেকে কাটিয়ে উঠতে পারে।
আপনি যদি এটি ব্যবহার করেন, তবে আপনাকে প্রথমে তিনটি জিনিস সংজ্ঞায়িত করতে হবে: state, interrupts এবং recovery।
প্রথম সীমানা: State Schema
একটি সিঙ্গেল প্রম্পটের ক্ষেত্রে সীমানা হলো টেক্সট। LangGraph-এর ক্ষেত্রে সীমানা হলো State schema। আপনাকে সিদ্ধান্ত নিতে হবে:
- কোন ফিল্ডগুলো নোডগুলোর মধ্যে স্থানান্তরিত হবে।
- কোন ফিল্ডগুলো একটি নোড আপডেট করবে।
- সমান্তরাল শাখাগুলো (concurrent branches) কীভাবে ভ্যালুগুলো মার্জ করবে।
- কোন ভ্যালুগুলো একটি চেকপয়েন্টে (checkpoint) প্রবেশ করবে।
- কোন ভ্যালুগুলো কখনোই স্থায়ী (persist) করা যাবে না।
এখানে Reducers অত্যন্ত গুরুত্বপূর্ণ। আপনি যদি মেসেজ অ্যাপেন্ড (append) করার জন্য সঠিক নিয়ম সেট না করেন, তবে আপনার প্যারালাল কাজের ক্ষেত্রে ডেটা হারিয়ে যেতে পারে।
ছোট থেকে শুরু করুন। একটি স্কিমা, একটি নোড এবং একটি রিডিউসার দিয়ে একটি গ্রাফ তৈরি করুন। আপনি যদি সেটি সঠিকভাবে চালাতে না পারেন, তবে টুলস যোগ করলে কেবল আপনার ভুলগুলো লুকিয়ে থাকবে।
রানটাইম সীমানা (The Runtime Boundary)
compile() কল করার আগে, আপনার গ্রাফটি কেবল একটি বর্ণনা মাত্র। compile() করার পর, রানটাইম নিয়ন্ত্রণ নেয়।
যখন একটি গ্রাফ ব্যর্থ হয়, তখন কেবল নোডটির দিকে তাকাবেন না। এই চারটি জিনিস পরীক্ষা করুন:
- State schema কি নোডটিকে সেই কী (key) লিখতে অনুমতি দেয়?
- নোডটি কি একটি বৈধ State ফিল্ড রিটার্ন করছে?
- রিডিউসার কি সঠিকভাবে ডেটা মার্জ করছে?
- কন্ডিশনাল এজ (conditional edge)-এর কি কোনো এক্সিট পাথ আছে?
হিউম্যান ইন দ্য লুপ (The Human In The Loop)
মানুষের অনুমোদনকে (human approval) কেবল একটি UI ফিচার হিসেবে দেখবেন না। এটিকে একটি গ্রাফ কন্ট্রাক্ট হিসেবে বিবেচনা করুন।
একটি নির্ভরযোগ্য প্যাটার্ন দেখতে এমন হয়:
- মডেল একটি টুল কল প্রস্তাব করে।
- গ্রাফ একটি ইন্টারাপ্ট (interrupt) তৈরি করে।
- একজন মানুষ কাজটি অনুমোদন বা এডিট করেন।
- গ্রাফটি ঠিক সেই পয়েন্ট থেকে পুনরায় শুরু হয়।
এটি এজেন্টদের কেবল রিঅ্যাক্টিভ নয়, বরং রিকভারেবল (recoverable) করে তোলে।
আপনার স্মোক চেকলিস্ট (Your Smoke Checklist)
প্রোডাকশনে যাওয়ার আগে, এই পরীক্ষাটি চালান:
- কোনো প্রোডাকশন ডেটা নেই এমন একটি টেম্পোরারি ডিরেক্টরি ব্যবহার করুন।
- একটি মিনিমাল State সংজ্ঞায়িত করুন।
- এমন একটি নোড লিখুন যা কেবল বৈধ ফিল্ডগুলো রিটার্ন করে।
- অ্যাপেন্ড অ্যাকশনের জন্য একটি রিডিউসার ব্যবহার করুন।
- একটি টুল অ্যাকশনের আগে একটি ইন্টারাপ্ট যোগ করুন।
- একটি চেকপয়ন্টার (checkpointer) যোগ করুন।
- জোরপূর্বক একটি ব্যর্থতা তৈরি করুন এবং রজিউম (resume) আচরণটি যাচাই করুন।
যদি এই ধাপটি ব্যর্থ হয়, তবে আরও টুলস যোগ করবেন না। সমস্যাটি হলো আপনার রানটাইম সীমানায়।
LangGraph কোনো ওয়ান-অফ (one-off) মডেল কলের জন্য নয়। এটি তখন ব্যবহার করুন যখন আপনার AI-এর এমন মাল্টি-স্টেপ কাজ করার প্রয়োজন হয় যা পরিদর্শনযোগ্য (inspectable), পজযোগ্য (pausable) এবং পর্যালোচনযোগ্য (reviewable)।
Optional learning community: https://t.me/GyaanSetuAi
