এজেন্ট টুল কলের জন্য বাউন্ডেড রিট্রাই (Bounded Retries)
আমাদের এজেন্ট দ্বারা ঘটা সবচেয়ে খারাপ ঘটনাটি কোনো ভুল উত্তর দেওয়া ছিল না। এটি ছিল একটি লুপ।
একটি টুল কল ব্যর্থ হয়েছিল। এজেন্ট আবার চেষ্টা (retry) করেছিল। সেই রিট্রাই আবারও ব্যর্থ হয়েছিল। এজেন্ট চলতেই থাকল। এটি প্রচুর টোকেন খরচ করে ফেলল এবং এক মিনিটে আমাদের API-তে শত শত বার হিট করল।
এজেন্ট ঠিক সেটাই করেছিল যা আমরা তাকে করতে বলেছিলাম। আমরা তাকে বলেছিলাম যদি কোনো টুল ব্যর্থ হয় তবে যেন আবার চেষ্টা করে। কিন্তু কখন থামতে হবে তা বলতে আমরা ভুলে গিয়েছিলাম।
সাময়িক ত্রুটির (temporary errors) জন্য রিট্রাই করা ভালো। সমস্যা হলো, এজেন্ট সাময়িক ত্রুটি এবং স্থায়ী ত্রুটির মধ্যে পার্থক্য করতে পারে না। কোনো সীমা (limit) না থাকলে, একটি এজেন্ট একটি ত্রুটিপূর্ণ কল বারবার চেষ্টা করতে থাকে যতক্ষণ না কোনো কিছু তাকে থামিয়ে দেয়।
প্রথাগত কোডে রিট্রাই লিমিট ব্যবহার করা হয়। এজেন্ট টুল কলের ক্ষেত্রে এই সিদ্ধান্তটি মডেলের রিজনিং (reasoning)-এর ওপর ছেড়ে দেওয়া হয়েছে। এর ফলে লুপটি অদৃশ্য এবং সীমাহীন (unbounded) হয়ে পড়ে।
আমরা মডেলের বাইরে দুটি বাজেট যোগ করে এই সমস্যার সমাধান করেছি:
• Per-call cap: একটি নির্দিষ্ট টুল একটি নির্দিষ্ট সংখ্যক প্রচেষ্টার সুযোগ পায়। যদি এটি ব্যর্থ হয়, তবে এজেন্টকে অন্য কোনো পথ বেছে নিতে হবে। • Per-session budget: পুরো টাস্কের জন্য মোট টুল কলের একটি সীমা থাকে। যদি এজেন্ট এই সীমায় পৌঁছে যায়, তবে এটি থেমে যায় এবং সাহায্য চায়।
সীমা নির্ধারণ করাই সমাধান নয়। সীমা অতিক্রম করার পর কী ঘটে সেটাই আসল।
আপনি যদি শুধু থামিয়ে দেন, তবে এজেন্ট আটকে যাবে। পরিবর্তে, আমরা এজেন্টকে একটি স্পষ্ট বার্তা দিই। আমরা তাকে জানাই যে কলটি ব্যর্থ হয়েছে এবং তাকে আর রিট্রাই করতে হবে না। এটি একটি লুপকে একটি সিদ্ধান্তে রূপান্তরিত করে। সাধারণত, এরপর এজেন্ট একটি নতুন পদ্ধতি বেছে নেয়।
এটি যোগ করার পর থেকে, টুল-অপব্যবহারজনিত লুপগুলো প্রায় অদৃশ্য হয়ে গেছে। যখন এগুলো ঘটে, তখন এগুলো বিশাল API বিল তৈরি করার পরিবর্তে সুন্দরভাবে (cleanly) সামলানো যায়।
সঠিক সীমা খুঁজে পাওয়া কঠিন। খুব কড়া সীমা দীর্ঘ টাস্কগুলোকে বাধাগ্রস্ত করে। আবার খুব শিথিল সীমা ব্যয়বহুল লুপ তৈরি করতে পারে। আমরা আমাদের সীমাগুলো ৯৫তম পার্সেন্টাইল (95th percentile) টাস্ক দৈর্ঘ্যের ওপর ভিত্তি করে নির্ধারণ করি।
এই বাজেটগুলো নির্ধারণ করার জন্য আপনার কাছে কি আরও ভালো কোনো উপায় আছে? কমেন্টে আমাকে জানান।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi