AI Agents / Agentic App Development and the Future of Human Computer Interaction

Photo of author

By Md. Arif Islam

AI Agents বা Agentic App Development আসলে কী জিনিস? এইটাকেই কেন সবাই Generative AI এর ফিউচার ভাবছে? জাকারবার্গ কেন বলছেন পৃথিবীতে যতো মানুষ আছে, তার চেয়ে বেশি AI Agent বানাতে হবে? এর ইউজ-কেইস কী? এক্সপার্ট থেকে শুরু করে যাদের জন্য কম্পিউটার ব্যবহার করা কঠিন, ডিজিটাল ডিভাইড দূর করে সবাইকে সাহায্য করতে এইটার ভূমিকা কী হতে পারে? কেমন হবে আগামী দিনের অ্যাপ? Agentic অ্যাপ বানানোর ভালো ফ্রেমওয়ার্ক কোনটা?

১.
একটু পিছন থেকে শুরু করি।

বিভিন্ন ওয়েবসাইটে বা অ্যাপে আমরা যেভাবে ফর্ম পূরণ করি বা বই-খাতা-খাবার অর্ডার করি, এইটা ঠিক মানুষের জন্য স্যুইটেবল না। আমরা স্বশরীরে কোন সার্ভিস নিতে কোন অফিসে গেলে বা দোকানে কিছু কিনতে গেলে যেভাবে কথা বলি, তারপর অফিসের লোক বা দোকানদার যেভাবে আরো কিছু জানতে চেয়ে প্রশ্ন করেন আর তখন আমরা যেভাবে উত্তর দেই, সেটার সাথে ওয়েবসাইটে একই কাজটা করার কিন্তু কোন মিল নাই। বলতে পারেন, কম্পিউটারের মানুষের কথা বোঝার লিমিটেশনের কারণেই এই ফর্মগুলা বা ওয়েবসাইট গুলা এরকমভাবে বানানো হয়েছিলো। কিন্তু এই ফর্ম বা ওয়েবসাইট আপনার আমার বাবা-মা, দাদী-নানীদের বেশিরভাগের জন্য ব্যবহার করা খুবই কঠিন। তাদের কতোজনই পারেন ফোন বা কম্পিউটারের শত হুপস পার হয়ে এগুলা করতে? আমরা যারা প্রো হয়ে গেছি ফোন চালানোয়, তাদের ও তো মাঝে মাঝে প্যারা লাগে এক এক অ্যাপের এক এক ফাংশনালিটি কোথায় আছে খুঁজে বের করে কাজগুলা করতে। আর তাছাড়া অ্যাপ বা কম্পিউটারের সাথে আমরা যেভাবে লিনিয়ার স্টাইলে ইন্টার‍্যাকশন করি, দুটা মানুষের ভিতরের স্বতঃস্ফূর্ত কথোপকথন কিন্তু তার ঠিক উল্টো।

গত কয়েক বছরের AI এর কিছু রিভোল্যুশনের কারণে কম্পিউটারের মানুষের ভাষা বোঝার লিমিটেশন প্রায় চলেই গেছে, আর তার সাথে দূর হয়েছে লিনিয়ার ইন্টার‍্যাকশনের বাধ্যবাধকতা। কিন্তু মানুষের সাথে কনভার্সেশনের মাঝেমাঝে বা শেষে কম্পিউটার আরো যে কাজগুলা করবে আর যেভাবে করবে তার সাথে এই কনভার্সেশন করাটার কিছু পার্থক্য আছে।

২.
এখন ধরুন আপনি একটা অ্যাপ বানাচ্ছেন যেটা ট্রেডিশনাল অ্যাপের চেয়ে অনেক বেশি হিউম্যান-ফ্রেন্ডলি, ফর এক্সাম্পল AI-এনাবলড ইকমার্স ওয়েবসাইট, যেটায় ডিজিটাল ডিভাইড থাকবে না। আপনি চান কম্পিউটার বা ফোন ভালোভাবে ব্যবহার করতে পারেন না যারা, তারাও যেন আপনার অ্যাপটা ওপেন করে শুধু মুখে কথা বলে বা নিজের মতো করে লিখে প্রোডাক্ট খুঁজে কিনে ফেলতে পারে। অথবা আপনার দেয়া একটা নাম্বারে কল দিয়ে AI এর সাথে কথা বলেও সবকিছু করে ফেলতে পারে।

তো আপনার অ্যাপে একটা AI রাখলেন, সে কাস্টমারের ফোন কল ধরে, বা কাস্টোমারের সাথে চ্যাট করে কথা শোনে। এখন কাস্টমারে সাথে কথা বলাটা একটা পার্ট, কথা বলার সাথে ওর হয়তো ডেটাবেইজে একটু সার্চ করে দেখতে হবে এরকম কী প্রোডাক্ট এভেইলেবল আছে, আবার কাস্টমারের আগে কেনাকাটা করে থাকলে তার পছন্দের কালার বা কাপড়ের সাইজ কী। আবার কাস্টোমারের সাথে কথা শেষে কিন্তু অর্ডারটা একটা ডেটাবেইজে বসাতে হবে, যাতে প্যাকিং টীম, ডেলিভারি টীম নোটিফিকেশন পেয়ে যায়। এর সাথে আরো কিছু জিনিস রাখলেন যেগুলা এক এক ওয়েবসাইটে এক এক জায়গায় থাকে, খুঁজে বের করা খুব প্যারার কাজ। যেমন কাস্টোমার জাস্ট তার বর্তমান ঠিকানা বদলাতে চায়, বা অলরেডি অর্ডার করা কোন জিনিসের কালার বা সাইজ বদলাতে চায়। আপনি চান কাস্টোমার শুধু ফোনে বা চ্যাটে বলুক এটা করতে, আর AI মডেল তখন দরকারী ফাংশন বা API কল দিয়ে সেটা করে ফেলুক।

ধরুন আপনি অ্যাপটায় খুব অ্যাডভান্সড দুইটা ফীচার ও রাখতে চান- (১) কাস্টমার আপনাকে বললো অমুক আরেকটা ওয়েবসাইট বা ফেইসবুক পেইজে একটা গ্রে কালারের কাশ্মীরি শাল দেখেছে, সেটা আপনার শপেও আছে কিনা, যেহেতু আপনার কাছ থেকে ২টা জামা নিচ্ছেই, ঐরকম শাল থাকলে সেটাও আপনার কাছ থেকেই একবারে নিতো। আপনি চান আপনার অ্যাপ ঐ সাইট ব্রাউজ করে প্রোডাক্টটা খুঁজে বের করুক, তার একইধরনের কী কী আপনার শপে আছে, সেটার লিস্ট কাস্টমারকে দেখাক। (২) কাস্টোমার কেনাকাটা শেষে ইনভয়েস এমন একটা ফরম্যাটে দিতে বললো, যেটার জন্য আপনার ব্যাকএন্ড API বা ফ্রন্টএন্ড ভিজ্যুয়ালাইজেশন কোড -কোনটাই লেখা নাই। কিন্তু আপনি চান আপনার অ্যাপ আপনার ডেটাবেইজ স্কেমা পড়ে SQL ক্যুয়ারি লিখুক, ক্যুয়ারি রেজাল্ট থেকে প্রোপার JSON ও বানাক। আর তারপর ফ্রন্টএন্ডের কোডটাও লিখে ফেলুক JSON থেকে ভিজ্যুয়ালাইজেশন বানিয়ে দেখানোর জন্য।

৩.
তো এখানে সবগুলা কাজ কিন্তু AI এর দিক থেকে একইরকম না। যেমন কাস্টোমারের সাথে কথা বলা তার জন্য সহজ, কিন্তু অন্য সাইটে যেয়ে কিছু খুঁজে দেখা, তারপর তার কালার ঠিক আছে কিনা সেটা দেখা, আবার অর্ডারটা ডেটাবেইজে প্লেস করা, সেজন্য হয়তো নিজে অ্যাপের কোন API কল করা, API কল করার জন্য ঠিকঠাক JSON বানানো, তারপর কাস্টমারের সাথের নতুন কনভার্সেশন হিসাবে তার প্রোফাইল আর প্রেফারেন্স আপডেইট রাখা -একটা AI মডেল কিন্তু এই সবগুলা কাজেই ভালো হবে না, আবার সব কাজ কিন্তু AI মডেলের কাজ ও না, কিছু কাজে ডিটারমিনিস্টিক প্রোগ্রামই পার্ফেক্ট। AI মডেলকে সেই ডেলিগেইট ও কিন্তু করতে হবে, করার সময় আবারো সেই JSON পাঠাতে হবে বা সরাসরি কোন টুল (পড়ুন ফাংশন) কল করতে বলতে হবে।

একই মডেল কেন একই কাজে ভালো না? ব্যাপারটা সিম্পল, বেশিরভাগ AI মডেলই কিন্তু খুব জেনেরিক ডেটার উপর ট্রেইন করা হয়, জেনেরিক মানে বুঝাচ্ছি এর ভিতর মুভি, ফুড রেসিপি, ইয়োগা থেকে শুরু করে ডেটা সায়েন্স, রকেট সায়েন্স, কোয়ান্টাম মেকানিক্স -সবকিছুর ব্যাপারেই ডেটা থাকে। আর কিছু মডেল থাকে স্পেসিফিক কিছু জিনিসের উপরে ট্রেইনড, যেমন কোড, SQL ক্যুয়ারি লেখা বা শেক্সপীয়ারের স্টাইলে নাটক লেখা। অন্যদিকে কিছু AI মডেল টেক্সটে ভালো, তো কিছু মাল্টিমোডাল -ছবি, অডিও-ভিডিও এসব থেকে ডেটা নিতে পারে বা এই ফরম্যাটে আউটপুট দিতেও পারে। সব কাজে একই মডেল ভালো হওয়া সম্ভব না, আর হতে গেলেও মডেলের সাইজ অনেক বেশি হবে, মডেলটা চালাতে গেলে অনেক ইলেক্ট্রিসিটি খরচ হবে, আর সময় ও বেশি নিবে।

সবকাজে মোটামুটি ভালো যে মডেল, সে কিন্তু শুধু SQL লিখতে শেখা মডেলের সাথে SQL লিখে পাল্লা দিতে পারবে না। আবার ছোটখাটো কাজের জন্য আপনি মাল্টিমোডাল একটা মডেলকে কাজ করাতে চাইবেন না।

৪.
তো মানুষের জন্য খুব সহজ এমন অ্যাপ বানাতে যেয়ে এখন আর আপনি শুধু একটা AI মডেলের উপর ভরসা করতে পারছেন না। আপনার ব্যবহার করতে হবে মাল্টিপল মডেল; কিছু মডেলকে আপনি দিবেন আপনার ডেটাবেইজ স্কেমার ইনফরমেশন আর সে হবে SQL লেখায় তুখোড়, কিছু মডেলকে দিবেন আপনার লেখা কিছু API এর লিস্ট, কারো থাকবে আপনার শপের রিটার্ন পলিসির ডকুমেন্টের ভেক্টর ডেটাবেইজে RAG বেইজড অ্যাক্সেস, কোনটাকে আবার দিবেন ওয়েব ব্রাউজ করার টুলে অ্যাক্সেস, কোনটার থাকবে ইমেইজ দেখে বোঝার ক্যাপাবিলিটি, আবার কোনটা শুধু ইউজারের সাথে কথা বলবে যতোক্ষণ না আপনার দেয়া একটা চেকলিস্ট ধরে ইউজারের কাছ থেকে নন-লিনিয়ার ওয়েতে সব ইনফো পাচ্ছে।

তো এই যে মাল্টিপল AI মডেল, তার ভিতর আবার কিছু মডেলের কিছু এক্সট্রা ক্যাপাবিলিটি আছে, একটা থেকে আরেকটায় ফ্লো এর অর্কেস্ট্রেশন হচ্ছে স্মুথলি, এইটাই আসলে Agentic ওয়ার্কফ্লো। আর এই ইন্টার‍্যাকশন প্ল্যান করার মতো প্রতিটা AI মডেল যার কিনা আপনার সাপ্লাই করা এক্সট্রা কিছু টুল ব্যবহার করার পারদর্শীতা আছে, এরা সকলেই ব্রোড সেন্সে এক একটা Agent.

এখানে আরেকটা সুন্দর ব্যাপার আছে; এই যে Agent গুলা আর এদেরকে একসাথে নিয়ে যে ওয়ার্কফ্লো, এটা কিন্তু মোটেও লিনিয়ার কিছুতে সীমাবদ্ধ না। ইউজারের কথার উপর ডিপেন্ড করে এক এক বার এক এক Agent অন্য একটা এজেন্টের কাছে ডেলিগেট করে দিবে। কারণ দুইজন কাস্টোমারের কথার ফ্লো কিন্তু একরকম খুব কমই হবে। কেউ হঠাত বলবে “একটু আগে যে জামাটা অর্ডার করছি, ঐটা এক সাইজ বড় দাও”, কেউ কেনাকাটার মাঝে বলবে “গতমাসে যে প্যান্টটা অর্ডার করেছিলাম ঐটার সাথে ম্যাচ করে কিছু জামা দেখাও”।

আনলাইক ট্রেডিশনাল ওয়েবসাইট বা অ্যাপ, আপনার প্রোপারলি ডিজাইনড Agentic অ্যাপের কাছে এরকম ফ্লো ইন্টেরাপশন কোন প্রবলেমই হবে না, বরং মানুষের কাছে স্বতঃস্ফূর্ত এই জিনিসগুলার বাঁধা দূর করাই ওর বড় একটা লক্ষ্য।

৫.
এবার আসি আরো ডেভেলপমেন্টের কথায়। এই মাল্টিপল Agent এর কলাবোরেশন ওয়ার্কফ্লোসহ নন-লিনিয়ার অ্যাপ বানানোর ফ্রেমওয়ার্ক কোনগুলা? LangChain, LlamaIndex, CrewAI, Agent Swarm -অনেকগুলাই আছে। আমি ইউজ করি LangChain/LangGraph.

কারণ, একেতো ওরা রেগুলার নতুন ফীচার আর ইউজ-কেইস ভিডিও রিলিজ করে। তাছাড়া ওরা LangGraph আনার পর থেকে যেকোন ফ্লো ডিজাইন করা খুব সহজ আর খুব ইনট্যুইটিভ হয়ে গেছে। যেকোন মডেলকে নিয়ে তার সাথে টুল (বা পড়ূন পাইথন/জাভাস্ক্রিপ্ট ফাংশন) বাইন্ড করে দিলেই সে একটা Agent ক্যাপাবিলিটি পেয়ে যায়। এরপর আপনার দেয়া প্রম্পট আর আপনার লেখা কন্ডিশনাল এজ ফাংশনের উপর বেইজ করে রানটাইমেই ঠিক হয় কোন এজেন্টের পর কোন এজেন্ট কাজ করবে। মাত্র দুই সপ্তাহ আসা “কমান্ড” (কমান্ড প্রম্পট/শেল কমান্ড না কিন্তু) তো আরেকধাপ এগিয়ে, আলাদা আর্কিটেকচারের এজেন্ট নোডকেও কল দেয়ার ব্যাপারটা ঠিক করে দিতে পারে GoTo ইউজ করে, যেটাকে ওরা বলছে Edgeless Graphs ক্যাপাবিলিটি।

৬.
এখানে একটা ডিসক্লেইমার, AI মডেল কিন্তু নিজে টুলকে (পড়ুন ফাংশনকে) কল দেয় না। ও ঠিক করে ওকে যেসব ফাংশন আপনি দিয়েছেন, তার থেকে কোনটা কল করতে হবে আর ফাংশন কলের আর্গুমেন্ট কী হবে। কল করার কাজ কিন্তু আপনার কোডই করে।

আরো একটা জিনিস বলে রাখি Agent নোড থেকে টুলে কল যাওয়ার জন্য কিন্তু অনেকসময় খুব স্ট্রাকচারড JSON দরকার হয়, যেটা বানাতে ক’দিন আগেও সব অ্যাডভান্সড মডেল স্ট্রাগল করতো আর Llama বেইজড মডেল তো সাপোর্টই করতো না স্ট্রাকচারড আউটপুট। এখন আর সেই ঝামেলাও নেই বললেই চলে, Pydantic এ বানানো মডেল দিলে, ঠিক সেই ফরম্যাটেই আউটপুট দিতে পারে প্রায় সব ছোটবড় মডেল।

৭.
বোনাস একটা আলোচনা ও করে ফেলি এখানে।

আমার প্রফেশনাল লাইফের প্রথম ৫-৬ বছর ছিলো পিওরলি ব্যাকএন্ড ডেভেলপমেন্টে, Java / Spring Boot -এ। সেখান থেকে AI তে কাজ শুরু ভিশন সাইড থেকে, PyTorch, Image Detection / Segmentation, Object Tracking ইত্যাদি। এরপর Andrej Karpathy এর কারণে Transformer আর্কিটেকচার নিয়ে পড়াশোনা করে ইন্টারেস্টেড হয়ে আসি Generative AI -তে।

Generative AI -এর একটা বড় দিক হলো, এটার জন্য অ্যাট লিস্ট শুরুতে তেমন কোন ম্যাথ বা AI মডেলের আর্কিটেকচার বা কীভাবে কাজ করে, কীভাবে ট্রেইন করা হয়, এসব না জেনেও শুরু করা যায়। এখানে অ্যাপ ডেভেলপমেন্টের সময়ে মডেলকে যেভাবে ব্ল্যাকবক্স হিসাবে কনসিডার করা যায়, ভিশনে সেই সুযোগটা অনেকটা কম। এই কারণে Generative AI -এর ডেভেলপমেন্ট সাইডটার লার্নিং কার্ভ খুব বেশি স্টীপ না।

আরো মজার ব্যাপার হলো, এটা একদমই নতুন ফিল্ড। এই ফিল্ডে প্রতিদিন এতোই ডেভেলপমেন্ট হচ্ছে, যেটা খুবই এক্সসাইটিং। এই যেমন কদিন আগেও আমি AI বেইজড অ্যাপের জন্য API, ওয়েবসকেট বানানো, অথেন্টিকেশন আর অথোরাইজেশনের কাজ করতাম Spring Boot দিয়ে, তারপর প্যারালালি শুরু করলাম FastAPI শেখা। এই সেদিন দেখি LangChain নিজেদের অথেন্টিকেশন মেকানিজম নিয়ে এসেছে।

এছাড়া ডিজাইন প্যাটার্নেও Generative AI অনেক পিছিয়ে আছে, আর সেজন্য প্রচুর পেপার পাবলিশ হচ্ছে, ফ্রেমওয়ার্কগুলাও অহরহ সেগুলা অ্যাডপ্ট করছে। আমার ধারণা ব্যাকএন্ডে মাইক্রোসার্ভিসের জন্য Saga ডিজাইন প্যাটার্নে যেভাবে অর্কেস্ট্রেশন বা কোরিওগ্রাফি করা হয়, খুব শীঘ্রই ফ্রেমওয়ার্কগুলা সেই অপশনগুলাও অ্যাডপ্ট করে ফেলবে Agentic ওয়ার্কফ্লোতে।

The field is new, and therefore, surely and inevitably exciting!

N.B.: The attached image is a very simplified example of an Agentic application’s Architecture. The group of LLMs parts can be multiple LLMs or a single one based on your need, and each or a combination of LLMs can be connected to different Agent nodes.

@Ahsan Iqbal

Tags -

Leave a Comment