একটি রেসপন্স হারিয়ে গেলে আপনার AI Agent ডাবল-চার্জ করতে পারে
যদি আপনার AI agent একটি কার্ড চার্জ করার জন্য কোনো টুল কল করে এবং নেটওয়ার্ক রেসপন্সটি হারিয়ে ফেলে, তবে আপনার এজেন্টটি ভুলভাবে কাজ করবে। এটি না জেনেই গ্রাহকের কাছ থেকে ডাবল-চার্জ করে ফেলবে।
টাকা ইতিমধ্যেই স্থানান্তরিত হয়ে গেছে। এজেন্ট কখনোই "ok" শুনতে পায়নি। এটি ঠিক তাই করে যা প্রতিটি retry loop করে: এটি আবার চেষ্টা করে। এটি একই prompt এবং একই arguments ব্যবহার করে। এর ফলে দ্বিতীয়বার চার্জ হয়ে যায়।
একটি retry কেবল একটি নেটওয়ার্ক ইভেন্ট নয়। এটি একটি side effect সম্পর্কে নেওয়া সিদ্ধান্ত যা ইতিমধ্যে ঘটে থাকতে পারে।
backoff এবং jitter-এর মতো স্ট্যান্ডার্ড retry টুলগুলো retry প্রক্রিয়াকে মার্জিত করে। কিন্তু ডাবল-চার্জ বন্ধ করতে এগুলো কিছুই করতে পারে না।
আপনার একটি idempotency ledger প্রয়োজন। এটি একটি unique key ব্যবহার করে নিশ্চিত করে যে একটি কাজ বড়জোর একবারই সম্পন্ন হবে।
একটি টুল কল ব্যর্থ হওয়ার দুটি উপায় আছে:
- রিকোয়েস্টটি হারিয়ে গেছে। কাজটি কখনোই সম্পন্ন হয়নি। এক্ষেত্রে retry করা নিরাপদ।
- রেসপন্সটি হারিয়ে গেছে। কাজটি ইতিমধ্যে সম্পন্ন হয়ে গেছে। এক্ষেত্রে retry করলে ডুপ্লিকেট চার্জ বা কাজ হয়ে যাবে।
একটি এজেন্টের কাছে এই দুটি বিষয় দেখতে একই রকম। উভয় ক্ষেত্রেই এটি একটি timeout বা কানেকশন ড্রপ হওয়া বলে মনে হয়।
যদি কোনো টুলের side effect হিসেবে পেমেন্ট, ইমেল বা রিফান্ডের মতো কাজ থাকে, তবে আপনি কেবল সাধারণ retry-এর ওপর নির্ভর করতে পারবেন না। আপনাকে অবশ্যই একটি idempotency key ব্যবহার করতে হবে।
এটি কীভাবে সমাধান করবেন:
- আপনার টুলগুলোকে ট্যাগ করুন। চিহ্নিত করুন কোন টুলগুলোর অপরিবর্তনীয় side effects রয়েছে।
- deterministic keys ব্যবহার করুন। workflow ID, step এবং arguments-এর ওপর ভিত্তি করে একটি স্থিতিশীল (stable) কী তৈরি করুন। LLM arguments পরিবর্তন করার আগেই এটি করুন।
- provider keys ব্যবহার করুন। আপনি যদি Stripe ব্যবহার করেন, তবে তাদের idempotency key পাস করুন। চার্জ বন্ধ করতে প্রোভাইডারকে অবশ্যই এই পুনরাবৃত্তিটি চিনতে হবে।
- আপনার নিজস্ব টুলের জন্য একটি ledger তৈরি করুন। আপনার নিয়ন্ত্রণে থাকা side effect-এর জন্য, একটি unique constraint সহ ডাটাবেস টেবিল ব্যবহার করুন। এটি নিশ্চিত করে যে আপনার সিস্টেম পুনরায় চেষ্টা করার আগেই ফলাফলটি রেকর্ড করে রাখে।
"at-least-once"-কে "exactly-once" মনে করার ভুল করবেন না। distributed systems-এ, আপনি at-most-once delivery-এর সাথে at-least-once retries এবং একটি deduplication ledger সমন্বয় করার মাধ্যমে "exactly-once" অর্জন করতে পারেন।
write-কে read-এর মতো মনে করা বন্ধ করুন। একটি read পুনরায় করার জন্য কোনো খরচ নেই। কিন্তু একটি write পুনরায় করলে টাকা খরচ হয়।
উৎস: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi