আমার কোডিং এজেন্ট সেশন মনে রাখছিল, কাজ নয়
একটি কোডিং এজেন্ট একটি থ্রেডকে সচল রাখতে পারে, তবুও এটি ভুলে যাওয়ার প্রবণতা দেখাতে পারে।
CliGate তৈরির সময় আমি এই সমস্যার সম্মুখীন হয়েছিলাম। আমি সেশন কন্টিনিউটি (session continuity) ঠিক করেছি, কিন্তু বারবার করা কাজগুলো তখনও অনেক ধীরগতির ছিল।
এজেন্ট কথোপকথন মনে রাখছিল, কিন্তু কাজ মনে রাখছিল না।
সেশন কন্টিনিউটি একটি সমস্যার সমাধান করে। এটি নিচের মতো ফলো-আপ কমান্ডগুলোতে সাহায্য করে:
- continue
- do the same for this file
- retry that
এটি দরকারী। কিন্তু কয়েক দিন পর যখন আপনি কোনো ওয়ার্কফ্লো (workflow) পুনরায় করেন, তখন এটি কোনো কাজে আসে না।
একটি এজেন্টের প্রয়োজন হলো শেষবার কী কারণে কাজটি সফল হয়েছিল তা মনে রাখা। এর জানা প্রয়োজন:
- কোন বাটনটি কাজ করে
- কোন ধাপটি একটি ডেড এন্ড (dead end)
- কোন ফিল্ডটির বিশেষ হ্যান্ডলিং প্রয়োজন
- কোন নিয়মটি আপনি সবসময় প্রয়োগ করতে চান
প্রথমবার রান করা সবচেয়ে ব্যয়বহুল। তখনই এজেন্ট অনুসন্ধান করে এবং এমন সব তথ্য খুঁজে পায় যা আপনার প্রম্পটে (prompt) ছিল না।
আমার সমাধানের আগে, এই তথ্যগুলো কেবল র (raw) লগে থাকত। এজেন্টের কাছে ইতিহাস ছিল, কিন্তু কোনো পুনরায় ব্যবহারযোগ্য মেমরি (reusable memory) ছিল না। প্রতিবার তাকে সবকিছু নতুন করে খুঁজে বের করতে হতো।
এটি বুদ্ধিমত্তা নয়। এটি হলো একই ডিবাগিং খরচের দ্বিগুণ প্রদান করা।
ভুল পদ্ধতি হলো আরও বেশি ইতিহাস সংরক্ষণ করা এবং মডেলটি সেটি ব্যবহার করবে এমন আশা করা। এটি কেবল নয়েজ (noise) তৈরি করে।
পরিবর্তে আমি একটি ছোট, পুনরায় ব্যবহারযোগ্য মেমরি লেয়ার (memory layer) তৈরি করেছি। আমি নিচের বিষয়গুলোর ওপর গুরুত্ব দিয়েছি:
- প্রসিডিউর (procedures)
- ফ্যাক্টস (facts)
- ডিরেক্টিভস (directives)
- রেফারেন্স (references)
আমি যা কিছু ঘটেছিল তার সবকিছু সেভ করার চেষ্টা করা বন্ধ করে দিয়েছি। আমি কেবল সেই বিষয়গুলো সেভ করা শুরু করেছি যা মনে রাখা উচিত।
এখন, অ্যাসিস্ট্যান্টটি নিচের বিষয়গুলো মনে রাখতে একটি ফাইল-ভিত্তিক মেমরি লেয়ার ব্যবহার করে:
- একটি প্রসিডিউর: সেরা ধাপগুলো এবং পরিচিত ডেড এন্ডগুলো
- একটি ফ্যাক্ট: একটি URL বা একটি নির্দিষ্ট সেটিংস
- একটি ডিরেক্টিভ: আপনি কীভাবে কাজগুলো করতে চান
- একটি রেফারেন্স: ডকুমেন্টেশন কোথায় আছে
মানুষ এভাবেই কাজ করে।
আমি অতীতের একটি নিখুঁত রিপ্লে চাই না কারণ ইন্টারফেস পরিবর্তিত হয় এবং বাটনগুলোর অবস্থান বদলে যায়। আমি চাই এজেন্টটি:
- জানা সেরা প্রসিডিউরটি মনে রাখুক
- প্রথমে সেটি চেষ্টা করুক
- প্রতিটি ধাপ যাচাই করুক
- ব্যর্থ হলে পুনরায় অনুসন্ধানে ফিরে যাক
- সফল হওয়ার পর মেমরি আপডেট করুক
এটি ভঙ্গুর অটোমেশনকে একটি দরকারী অপারেশনাল মেমরিতে রূপান্তরিত করে।
আমি কনভারসেশন হিস্ট্রি থেকে স্থায়ী নিয়মগুলোকে (standing rules) আলাদা করেছি। "সবসময় চাইনিজ ভাষায় উত্তর দাও" বা "প্রোডাকশন ডেটা স্পর্শ করো না"-এর মতো নিয়মগুলো সেশন কনটেক্সট নয়। এগুলো হলো অপারেটিং রুলস (operating rules)।
একবার এগুলো আলাদা করার পর, অ্যাসিস্ট্যান্টটি প্রেডিক্টেবল (predictable) হয়ে উঠল। কোনো কাজের মাঝপথে তাকে আর আপনার পছন্দগুলো নতুন করে খুঁজে বের করতে হয় না।
পুনরাবৃত্তিমূলক কাজগুলো এখন আরও দ্রুত সম্পন্ন হয়। অ্যাসিস্ট্যান্টটি দ্রুত কাজ করে কারণ তাকে প্রতিবার একটি খালি মডেল দিয়ে শুরু করতে হয় না।
একটি নিরবচ্ছিন্ন থ্রেড এবং একটি শেখার সক্ষমতা সম্পন্ন সিস্টেমের মধ্যে গুলিয়ে ফেলবেন না।
একটি সেশন কথোপকথনকে সচল রাখে
