Kitchen Nightmares: LangChain Agents Edition
আমি রেসিপি বিশ্লেষণ করতে এবং মিল প্ল্যান (meal plans) তৈরি করতে একটি হেলথ অ্যাপ তৈরি করেছি।
ওয়েব অ্যাপের জন্য আমি FastAPI এবং React ব্যবহার করেছি। এজেন্টগুলোর জন্য আমি LangChain ব্যবহার করেছি। আমার এজেন্টগুলো কী করছে তা দেখার জন্য আমি LangSmith ব্যবহার করেছি।
লক্ষ্যটি ছিল সহজ। একজন ব্যবহারকারী একটি URL প্রদান করেন। অ্যাপটি রেসিপিটি সংগ্রহ করে এবং সেটিকে মেইনস (mains), সাইডস (sides) এবং সস (sauces)-এর মতো বিভিন্ন উপাদানে বিভক্ত করে। ব্যবহারকারীরা এরপর খাবার তৈরি করতে বা ক্যালরি ট্র্যাক করতে এগুলো মিলিয়ে ব্যবহার করতে পারেন।
আমি এজেন্টের নির্ভরযোগ্যতা নিয়ে একটি বড় সমস্যার সম্মুখীন হয়েছি।
শুরুতে, আমি রেসিপি গ্রুপ করতে এবং আউটপুট ফরম্যাট করতে একটি মাত্র এজেন্ট ব্যবহার করেছিলাম। এটি ক্রমাগত ব্যর্থ হচ্ছিল। এটি ডুপ্লিকেট আইটেম তৈরি করছিল। এটি নির্দেশাবলী (instructions) বাদ দিচ্ছিল। এটি সবকিছুকে একটি বিশাল ব্লকে একত্রিত করে ফেলছিল।
এটি ঠিক করতে আমি একটি ডুয়াল এজেন্ট সেটআপ চেষ্টা করেছিলাম:
- Agent 1 (Grouping): বিভিন্ন রেসিপি উপাদান খুঁজে বের করে এবং উপকরণ ও নির্দেশাবলী গুছিয়ে রাখে।
- Agent 2 (Structuring): সেই সাজানো টেক্সটটি নেয় এবং সেটিকে একটি পরিচ্ছন্ন JSON ফরম্যাটে রূপান্তর করে।
এটি মাত্র একদিন কাজ করেছিল। পরের দিন আবার ত্রুটিগুলো ফিরে এল। স্ট্রাকচারিং এজেন্ট এমন JSON দিতে শুরু করল যেখানে সমস্ত উপকরণ এবং নির্দেশাবলী অনুপস্থিত ছিল।
আমি print স্টেটমেন্ট ব্যবহার করা বন্ধ করে LangSmith ব্যবহার শুরু করেছি।
LangSmith আমাকে ল্যাটেন্সি (latency), টোকেন ব্যবহার এবং খরচ দেখায়। সবচেয়ে গুরুত্বপূর্ণভাবে, এটি আমাকে ঠিক কোথায় চেইনটি ভেঙে যাচ্ছে তা দেখায়।
আমার ক্ষেত্রে, গ্রুপিং এজেন্টটি নিখুঁতভাবে কাজ করছিল। এটি সমস্ত বিবরণসহ চমৎকার মার্কডাউন তৈরি করছিল। ব্যর্থতাটি ঘটেছিল দ্বিতীয় এজেন্টে। ট্রান্সফরমেশনের সময় এটি ডেটা হারিয়ে ফেলছিল।
এখন আমি তিনটি সমাধানের জন্য কাজ করছি:
- এজেন্টের নির্ভরযোগ্যতা উন্নত করা: আমি লক্ষ্য করেছি যে স্ট্রাকচারিং এজেন্ট এমন একটি cuisine ফিল্ড অনুমান করার চেষ্টা করছে যা মূল প্রম্পটে ছিল না। এই বিভ্রান্তি ত্রুটির সৃষ্টি করছে।
- ভ্যালিডেশন যোগ করা: আমি আউটপুট পরীক্ষা করতে Python ফাংশন ব্যবহার করব। আমি নিশ্চিত করতে চাই যে মার্কডাউনটি সঠিক এবং কোনো ডুপ্লিকেট নেই।
- উন্নত অবজারভেবিলিটি (observability): সহজে ট্রেসিং করার জন্য আমি প্রতিটি এজেন্ট এক্সিকিউশনকে একটি নির্দিষ্ট ইউজার রিকোয়েস্টের সাথে লিঙ্ক করতে চাই।
এজেন্ট দিয়ে তৈরি করা কোনো এককালীন কাজ নয়। এটি পরীক্ষা এবং সমাধানের একটি নিরন্তর চক্র।
Source: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Optional learning community: https://t.me/GyaanSetuAi
