এজেন্টিক পরিকাঠামো এবং নতুন ব্যাকএন্ড
· 10 min read · Filippo Spinella · AI, Agents, Infrastructure, Developer Tools
আমরা প্রায়ই এজেন্টিক কাঠামো সম্পর্কে কথা বলেছি। LangGraph, CrewAI, AutoGen, বিভিন্ন SDK, লুপ, টুল কলিং, মেমরি, পরিকল্পনাকারী, সমালোচক, সুপারভাইজার। সমস্ত দরকারী শব্দ, কল্যাণের জন্য। কিন্তু আমি আসলে ব্যবহৃত এজেন্টদের দিকে যত বেশি তাকাই, ততই আমার কাছে মনে হয় যে আকর্ষণীয় অংশটি কাঠামোর স্তরের নীচে চলে গেছে।
প্রশ্নটি আর শুধু নয়: আমি কোন লাইব্রেরিটি ব্যবহার করব একটি ধাপ মডেল চিন্তা করতে?
The real question is: where does this agent live when he stops being a demo?
কারণ একটি গুরুতর এজেন্ট এমন একটি ফাংশন নয় যা একটি মডেলকে কল করে এবং পাঠ্য ফেরত দেয়। এটি একটি ছোট বিতরণ ব্যবস্থা। এটিকে অবশ্যই প্রসঙ্গ পড়তে হবে, সরঞ্জামগুলি ব্যবহার করতে হবে, কোড কার্যকর করতে হবে, ফাইলগুলি স্পর্শ করতে হবে, সিদ্ধান্তগুলি মনে রাখতে হবে, অনুমতি চাইতে হবে, ভালভাবে ব্যর্থ হতে হবে, পুনরায় চালু করতে হবে, লগগুলি ছেড়ে দিতে হবে, বাজেট বার্ন না করতে হবে এবং উত্পাদন ভান্ডারের ভিতরে বুলডোজারে পরিণত হবে না।
ফ্রেমওয়ার্ক হল স্টিয়ারিং হুইল। অবকাঠামো হল রাস্তা, ব্রেক, গ্যারেজ, ইন্সুরেন্স এবং সেই ব্যক্তি যিনি জানেন চাবিগুলি কোথায়।
কারণ এটা নিয়ে এখন অনেক কথা হচ্ছে
2023 এবং 2024 সালে কথোপকথনটি খুব মডেল-কেন্দ্রিক ছিল। কোন এলএলএম? কত প্রসঙ্গ? এটার দাম কত? তিনি প্রোগ্রামিং এ কতটা ভালো?
2025 এবং 2026 সালে কথোপকথন স্থানান্তরিত হয়েছে। মডেলগুলি বাস্তব কাজ করার জন্য যথেষ্ট ভাল, কিন্তু সেই কারণেই বিরক্তিকর বিটগুলি দৃশ্যমান হয়ে ওঠে: রানটাইম, নিরাপত্তা, সংযোগকারী, পরিচয়, পর্যবেক্ষণযোগ্যতা, কোড সম্পাদন, স্থাপনা, রোলব্যাক৷
এটি যাদু থেকে প্রকৌশলে প্রাকৃতিক রূপান্তর।
When an agent just needs to generate a response, a chat is enough. যখন আপনাকে একটি পুল অনুরোধ খুলতে হবে, একটি ডাটাবেস জিজ্ঞাসা করতে হবে, একটি CRM কল করতে হবে, একটি কাজ শুরু করতে হবে, একটি সাইট নেভিগেট করতে হবে, স্ল্যাক পড়তে হবে, কোড কম্পাইল করতে হবে এবং একটি নথি আপডেট করতে হবে, আপনার এটির চারপাশে একটি অপারেটিং সিস্টেম প্রয়োজন৷
আক্ষরিক অর্থে নয়। সাংগঠনিক অর্থে।
প্রথম অংশ: একটি রানটাইম যেখানে এজেন্ট স্থায়ী হতে পারে
একজন এজেন্ট প্রায়ই ধাপে ধাপে কাজ করে। রাষ্ট্রের দিকে তাকান, একটি ক্রিয়া চয়ন করুন, একটি সরঞ্জাম ব্যবহার করুন, ফলাফলটি পর্যবেক্ষণ করুন, পরিকল্পনা আপডেট করুন, পুনরাবৃত্তি করুন।
যদি এই লুপটি একটি একক HTTP অনুরোধের মধ্যে থাকে তবে আপনার অবিলম্বে একটি সমস্যা আছে। Some actions are slow. কিছু মানুষের ইনপুট অপেক্ষা করছে. কিছু ব্যর্থ এবং আবার চেষ্টা করা আবশ্যক. কিছু একটি স্থাপনা বা টাইমআউট বেঁচে থাকা আবশ্যক.
এখানেই টেকসই কর্মপ্রবাহ, সারি, কাজের পটভূমি এবং রাষ্ট্রীয় মেশিনগুলি কার্যকর হয়। এগুলি চটকদার নয়, তবে তারা একটি এজেন্টের মধ্যে পার্থক্য যাকে ডেমোতে স্মার্ট বলে মনে হয় এবং আপনি কফি পান করার সময় কাজ ছেড়ে যেতে পারেন৷
আমার জন্য এজেন্টিক রানটাইমকে অবশ্যই খুব সুনির্দিষ্ট প্রশ্নের উত্তর দিতে হবে:
- এক কদম থেকে আরেক ধাপের মধ্যে রাষ্ট্রকে কোথায় বাঁচাবো?
- প্রক্রিয়া অর্ধেক মারা গেলে কি হবে?
- আমি কি বিরতি দিয়ে অনুমোদন চাইতে পারি?
- আমি কি একটা রান রিপ্লে করতে পারি বুঝতে পারি কেন সে এই পছন্দ করেছে?
- আমি কি সময়কাল, মেমরি, সরঞ্জাম এবং খরচ সীমিত করতে পারি?
Vercel AI SDKs, ফাংশন, ওয়ার্কফ্লো এবং ওয়েব অ্যাপ্লিকেশনের মধ্যে এজেন্ট তৈরির সরঞ্জামগুলির সাথে এই ফ্রন্টে কঠোরভাবে চাপ দিচ্ছে৷ কিন্তু বিন্দু শুধু Vercel নয়। বিন্দু হল যে এজেন্টের একটি অপারেশনাল হোম প্রয়োজন, একটি একক শেষ পয়েন্ট নয়।
দ্বিতীয় টুকরা: স্যান্ডবক্স, কারণ এজেন্ট অবশ্যই ভেঙ্গে নোংরা করতে সক্ষম হবে
যত তাড়াতাড়ি একজন এজেন্ট কোড লেখে বা কমান্ড চালায়, একটি স্যান্ডবক্স প্রয়োজন।
এটি একটি প্রযুক্তিগত শব্দের মতো মনে হচ্ছে, তবে ধারণাটি ঘরোয়া: আপনি তাকে একটি ওয়ার্কবেঞ্চ দিন। এটি ফাইল খুলতে পারে, নির্ভরতা ইনস্টল করতে পারে, পরীক্ষা চালাতে পারে, পরীক্ষা করতে পারে, আউটপুট তৈরি করতে পারে। If he gets it wrong, you've contained the damage. যদি এটি কাজ করে, ফলাফল প্রচার করুন।
একটি এজেন্টিক স্যান্ডবক্সের কিছু বৈশিষ্ট্য থাকা উচিত:
- বিচ্ছিন্ন ফাইল সিস্টেম;
- CPU, মেমরি এবং সময় সীমা;
- নিয়ন্ত্রিত নেটওয়ার্ক;
- গোপনীয়তা শুধুমাত্র যখন প্রয়োজন হয় মাউন্ট করা হয়;
- সম্পূর্ণ লগ;
- নিদর্শন রপ্তানি করার সম্ভাবনা;
- রানের মধ্যে পরিষ্কার রিসেট, যখন প্রয়োজন।
ভার্সেল স্যান্ডবক্স ঠিক এই দিকেই যায়: কোড চালানোর জন্য বিচ্ছিন্ন পরিবেশ, নির্ভরতা ইনস্টল করা, ফাইলগুলির সাথে কাজ করা এবং মূল অ্যাপ্লিকেশন রানটাইমে সবকিছু না চালিয়ে আর্টিফ্যাক্ট তৈরি করা।
এই জিনিসটি মনে হয় তার চেয়ে বেশি গুরুত্বপূর্ণ। অনেক এজেন্টিক প্রোটোটাইপ সরাসরি মডেল থেকে বাস্তব সিস্টেমে লাফ দেয়। মডেল টুল কল করতে পারেন. Tools can do things. প্রথম ভুল কমান্ড, প্রথম নির্ভরতা ভুল জায়গায় ইনস্টল করা, লগে শেষ হওয়া প্রথম টোকেন না হওয়া পর্যন্ত সবকিছুই মার্জিত মনে হয়।
স্যান্ডবক্স হল প্রাপ্তবয়স্কদের বলার উপায়: এগিয়ে যান, কিন্তু এখানে।
তৃতীয় অংশ: MCP এবং সংযোগকারী সমস্যা
মডেল কনটেক্সট প্রোটোকল বাস্তুতন্ত্রের সবচেয়ে আকর্ষণীয় অংশগুলির মধ্যে একটি হয়ে উঠেছে কারণ এটি এমন কিছু মানক করার চেষ্টা করে যা অন্যথায় দ্রুত নিয়ন্ত্রণের অযোগ্য হয়ে যায়: কীভাবে একটি মডেল বাহ্যিক সরঞ্জামগুলি আবিষ্কার করে এবং ব্যবহার করে।
একটি মান ছাড়া, প্রতিটি ইন্টিগ্রেশন একটি ছোট দ্বীপ. GitHub-এর জন্য একটি সংযোগকারী একভাবে করেছে, একটি স্ল্যাকের জন্য অন্যভাবে করেছে, একটি ভিন্ন শব্দার্থবিদ্যা সহ ডেটাবেসের জন্য, একটি ব্রাউজার অটোমেশনের জন্য যা দেখতে কিছুই নয়৷
MCP ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি সাধারণ ভাষা প্রস্তাব করে: সরঞ্জাম, সংস্থান, প্রম্পট, অনুমোদন, পরিবহন, আবিষ্কার। এটি যাদুকরীভাবে শাসন এবং নিরাপত্তার সমাধান করে না, তবে এটি একটি ব্যাকরণ দেয়।
এবং ব্যাকরণ বিষয়. যখন একজন এজেন্ট অনেক সরঞ্জামের সাথে সংযোগ করতে পারে, তখন প্রশ্নটি কেবল "সে কি করতে পারে?" নয়। সমস্যাটি হল "সে কি বোঝে যে সে কি করতে পারে, কোন সীমার সাথে, কার পক্ষে এবং কোন ট্রেস রেখে যাচ্ছে?"।
আমার জন্য MCP হাইপ নয় কারণ এটি "টুল কলিং করে"। আমরা ইতিমধ্যে এটি করেছি। এটি হাইপ কারণ এটি মাধ্যাকর্ষণ কেন্দ্রকে একক ইন্টিগ্রেশন থেকে টুলের অপারেশনাল ক্যাটালগে স্থানান্তরিত করে।
একটি ভাল এজেন্টিক আর্কিটেকচারে, MCP এক ধরণের প্যাচ প্যানেল হয়ে যায়:
- কোড এবং সমস্যার জন্য গিটহাব;
- কথোপকথন প্রসঙ্গের জন্য শিথিলতা;
- পরিকল্পিত কাজের জন্য লিনিয়ার বা জিরা;
- বিশ্লেষণের জন্য শুধুমাত্র পঠনযোগ্য ডাটাবেস;
- বহিরাগত সাইটগুলির জন্য ব্রাউজার বা স্ক্র্যাপার নিয়ন্ত্রিত;
- নথি সংরক্ষণ;
- বিচ্ছিন্ন মৃত্যুদন্ড পরিবেশন;
- অভ্যন্তরীণ সিস্টেমগুলি কঠোর অনুমতির সাথে উন্মুক্ত।
চতুর অংশ হল যে একটি নীতি-মুক্ত টুল ক্যাটালগ হল বিশৃঙ্খলা তৈরি করার একটি আরও মার্জিত উপায়।
চতুর্থ অংশ: পরিচয় এবং অনুমতি
এটি সেই এলাকা যেখানে অনেক ডেমো চোখ বন্ধ করে।
একজন এজেন্ট কারো পক্ষে কাজ করে। সুতরাং কর্মের বিষয় কে তা স্পষ্ট হতে হবে।
এটা কি ব্যবহারকারীর অনুমতি ব্যবহার করছে? একটি পরিষেবা অ্যাকাউন্টের? একটি কর্মক্ষেত্রের? আপনার কি অস্থায়ী বা স্থায়ী অ্যাক্সেস আছে? আপনি সবকিছু বা শুধু কিছু সম্পদ পড়তে পারেন? আপনি লিখতে পারেন? আপনি বাতিল করতে পারেন? তিনি কি সত্যিকারের মানুষকে টেক্সট করতে পারেন?
আপনি যদি এই প্রশ্নের উত্তর না দেন, তাহলে শীঘ্রই বা পরে আপনি বাড়ির চাবি দিয়ে একজন সহকারী তৈরি করবেন এবং কে সেগুলি তাকে দিয়েছে তার কোনও স্মৃতি থাকবে না।
আমার পছন্দের নিয়মটি হল: এজেন্টকে অবশ্যই মানুষের চেয়ে কম করতে সক্ষম হতে হবে, মানুষের চেয়ে বেশি নয়। এবং যখন তাকে ঝুঁকিপূর্ণ কিছু করতে হবে, তখন তাকে থামতে হবে এবং জিজ্ঞাসা করতে হবে।
এর মানে হল OAuth, টোকেন স্কোপড, সিক্রেট ম্যানেজমেন্ট, অডিট লগ, টুল পলিসি, অনুমোদন তালিকা, অনুমোদনের ধাপ। খুব রোমান্টিক জিনিস না. প্রয়োজনীয় জিনিসপত্র।
পঞ্চম অংশ: স্মৃতি এবং প্রসঙ্গ, কিন্তু আবর্জনা জমা না করে
এজেন্টদের মেমরির প্রয়োজন, কিন্তু স্মৃতি বিপজ্জনক যখন এটি একটি অ্যাটিক হয়ে যায়।
অন্তত তিন ধরনের মেমরি আছে:
- মেমরি চালান: এই মৃত্যুদন্ডে কি ঘটেছে;
- প্রকল্প মেমরি: সম্মেলন, সিদ্ধান্ত, সীমাবদ্ধতা;
- ব্যক্তিগত বা দলের স্মৃতি: পছন্দ, স্বন, আচার, প্রক্রিয়া।
প্রম্পটে সবকিছু রাখা হল শর্টকাট। এটি আর কাজ না করা পর্যন্ত এটি কাজ করে। দরকারী মেমরির যত্ন নেওয়া আবশ্যক: সূচীকৃত, আপডেট করা, মেয়াদ শেষ, যাচাই করা, উদ্ধৃত করা।
একজন এজেন্ট যে খারাপভাবে মনে রাখে সে একজন এজেন্টের চেয়ে খারাপ যে মনে রাখে না। কারণ সে আত্মবিশ্বাসের সাথে কথা বলে।
তাই পরিকাঠামোর মধ্যে অবশ্যই পুনরুদ্ধার, নির্দেশনা ফাইল, নলেজ বেস, প্রয়োজনে এম্বেডিং, তবে পরিষ্কার করাও অন্তর্ভুক্ত থাকতে হবে। আমাদের স্মৃতির সংস্কৃতি দরকার: কী প্রবেশ করে, কে এটি অনুমোদন করে, কখন এটি ক্ষয় হয়, আমি কীভাবে এটি সংশোধন করব।
ষষ্ঠ অংশ: পর্যবেক্ষণযোগ্যতা, ইভাল এবং রিপ্লে
If an agent makes a mistake, the "called the model" log is not enough.
আপনি রুট দেখতে চান. তিনি কি প্রসঙ্গ পেয়েছেন? কি সরঞ্জাম উপলব্ধ ছিল? আপনি কোন টুল নির্বাচন করেছেন? কোন যুক্তি দিয়ে? আপনি কি প্রতিক্রিয়া পেয়েছেন? কত খরচ হয়েছে? এটা কোথায় আটকে গেল? মানুষ কি কিছু অনুমোদন করেছে? ত্রুটি মডেল, টুল, প্রম্পট, ডেটা বা অনুমতি ত্রুটি?
এখানে এজেন্টরা চ্যাটবটের চেয়ে ডিস্ট্রিবিউটেড সিস্টেমের মতো।
আপনার পঠনযোগ্য ট্রেস প্রয়োজন, শুধু পাঠ্য লগ নয়। আপনি একটি রান পুনরায় খেলতে সক্ষম হতে হবে. পরিচিত কাজগুলিতে একই এজেন্টের দুটি সংস্করণ তুলনা করা প্রয়োজন। আমাদের রিগ্রেশন পরিমাপ করতে হবে: এটি শুধুমাত্র "ভালো উত্তর" দেয় না, তবে এটি "অবাঞ্ছিত ফাইলগুলি স্পর্শ না করেই সঠিক টিকিট বন্ধ করে"।
এজেন্টিক ইভালগুলি টেক্সট ইভালগুলির চেয়ে বেশি কঠিন কারণ এতে অ্যাকশন অন্তর্ভুক্ত থাকে। একটি প্রত্যাশিত স্ট্রিং তুলনা করা যথেষ্ট নয়। You have to look at sequences, side effects, quality of the artefact, time, cost, number of human interventions.
মজার বিষয় হল, আমরা সবসময় সেখানে ফিরে আসি: সফটওয়্যার ইঞ্জিনিয়ারিং। পরীক্ষা, পরিবেশ, ট্রেস, রোলব্যাক। তা ছাড়া কোড এখন সিদ্ধান্ত নেয় পরবর্তী কি করতে হবে।
সপ্তম অংশ: মানুষের ইন্টারফেস
এজেন্টকে শুধু আড্ডায় থাকতে হবে না।
কিছু এজেন্ট একটি বোর্ড প্রয়োজন. অন্যরা স্ট্যাটাস এবং লগ সহ একটি পৃষ্ঠা। একটি "অনুমোদন" বোতাম অন্যান্য. আরো ইনলাইন মন্তব্য. এখনও একটি CLI এর অন্যদের.
UI আচরণ পরিবর্তন করে। যদি একটি এজেন্টকে নিয়ন্ত্রণ করার একমাত্র উপায় একটি দীর্ঘ বার্তা লিখতে হয়, ব্যবহারকারী এজেন্টকে অস্পষ্ট নির্দেশনা দেবেন। যাইহোক, যদি তিনি পরিকল্পনা, পার্থক্য, উত্স, ঝুঁকি এবং পরবর্তী পদক্ষেপ দেখেন তবে তিনি সুনির্দিষ্টভাবে হস্তক্ষেপ করতে পারেন।
একটি শালীন এজেন্ট অবকাঠামো নিয়ন্ত্রণ পৃষ্ঠ অন্তর্ভুক্ত:
- বর্তমান অবস্থা;
- সম্পাদনাযোগ্য পরিকল্পনা;
- উত্পাদিত প্রত্নবস্তু;
- পার্থক্য;
- অনুমোদনের অনুরোধ;
- কালানুক্রম;
- স্টপ বোতাম;
- পুনরায় চেষ্টা বোতাম;
- দৃশ্যমান অনুমতি।
এটা তুচ্ছ মনে হয়, কিন্তু এটা না. "ভয়ঙ্কর এআই" এবং "নির্ভরযোগ্য সহকারী" এর মধ্যে পার্থক্যটি প্রায়শই কেবলমাত্র পরবর্তীটি আপনাকে দেখায় যে এর হাত কোথায় রয়েছে।
মানসিক স্ট্যাক
যদি আমি আজ এটি আঁকতাম, তাহলে ন্যূনতম এজেন্ট স্ট্যাকটি হবে:
- মডেল: যুক্তি, জেনারেশন, টুল কলিং, প্রয়োজনে মাল্টিমোডাল।
- অর্কেস্ট্রেশন: লুপ, স্টেপ, প্ল্যানার, পলিসি, হিউম্যান-ইন-দ্য-লুপ।
- টেকসই রানটাইম: কর্মপ্রবাহ, সারি, পুনরায় চেষ্টা, বিরতি, পুনরায় শুরু করুন।
- স্যান্ডবক্স: কোড এক্সিকিউশন, বিচ্ছিন্ন ফাইল সিস্টেম, সীমাবদ্ধতা, শিল্পকর্ম।
- টুল স্তর: MCP, অভ্যন্তরীণ API, ব্রাউজার, ডাটাবেস, সংগ্রহস্থল।
- পরিচয় স্তর: OAuth, সুযোগ, গোপন, নিরীক্ষা, নীতি।
- মেমরি স্তর: প্রকল্পের প্রসঙ্গ, পুনরুদ্ধার, নির্দেশাবলী, মেয়াদ শেষ।
- পর্যবেক্ষণযোগ্যতা: ট্রেস, রিপ্লে, ইভাল, খরচ এবং মানের মেট্রিক্স।
- পণ্য পৃষ্ঠ: যথেষ্ট যখন চ্যাট, ড্যাশবোর্ড যখন প্রয়োজন, পর্যালোচনা যখন এটি গুরুত্বপূর্ণ.
এজেন্টিক ফ্রেমওয়ার্ক প্রধানত পয়েন্ট 2 এবং পয়েন্ট 1 এর একটি অংশ কভার করে। বাকিটা আসল কাজ।
অনুশীলনে যা করতাম
যদি একটি দল আমাকে বলে "আমরা উৎপাদনে এজেন্ট চাই," আমি দশজন এজেন্ট দিয়ে শুরু করব না।
আমি একটি ছোট, পুনরাবৃত্তিমূলক এবং পর্যবেক্ষণযোগ্য কর্মপ্রবাহ দিয়ে শুরু করব। উদাহরণস্বরূপ: ওপেন রক্ষণাবেক্ষণ পিআর, বন্ধ সমস্যা থেকে ডকুমেন্টেশন আপডেট করা, একটি সাপ্তাহিক পর্যালোচনা প্রস্তুত করা, ট্রাইজ ডুপ্লিকেট বাগ, প্রভাবিত ফাইলগুলির জন্য পরীক্ষা তৈরি করা।
তারপর আমি খুব স্পষ্ট সীমা সেট করব:
- শাখা বা স্যান্ডবক্স ছাড়া কোন লেখা নেই;
- প্রম্পটে কোন গোপনীয়তা নেই;
- অনুমোদিত তালিকায় সরঞ্জাম;
- বাহ্যিক কর্মের জন্য মানুষের অনুমোদন;
- বাধ্যতামূলক লগ এবং ট্রেস;
- রান প্রতি বাজেট;
- আউটপুট সর্বদা পরিদর্শনযোগ্য।
তবেই আমি প্রসারিত হব।
মডেলগুলি ভুল হওয়ার কারণে এজেন্টরা ব্যর্থ হয় না। তারা ব্যর্থ হয় কারণ আমরা তাদের বিভ্রান্তিকর অনুমতি এবং নাট্য প্রত্যাশা সহ অস্পষ্ট পরিবেশে রাখি।
আমার পড়া
এজেন্টিক পরিকাঠামো সবচেয়ে ভালো উপায়ে বিরক্তিকর।
এটি এমন অংশ নয় যা আপনাকে ডেমোতে হাততালি দেয়। এটি সেই অংশ যা আপনাকে প্রকৃত মানুষ, বাস্তব তথ্য এবং বাস্তব ফলাফল সহ সোমবার সকালে ডেমো ব্যবহার করতে দেয়।
এজেন্টদের ভবিষ্যত শুধুমাত্র সেরা রোল মডেলের দ্বারা নির্ধারিত হবে না। কে তাকে কাজ করার জন্য সর্বোত্তম জায়গা তৈরি করবে তার দ্বারা সিদ্ধান্ত নেওয়া হবে: তিনি যখন পরীক্ষা করেন তখন বিচ্ছিন্ন, প্রয়োজনে সংযুক্ত, সর্বদা পর্যবেক্ষণযোগ্য, মানদণ্ডের সাথে অনুমোদিত এবং যখন তিনি জানেন না তখন থামানোর জন্য যথেষ্ট নম্র।
এখানেই এজেন্টরা খেলনা হওয়া বন্ধ করে অবকাঠামোতে পরিণত হয়।