কীভাবে AI অ্যাপ তৈরি করার সময় কোড ও সিদ্ধান্ত তৈরি করে—টোকেন, কন্টেক্সট, টুল, টেস্ট—সেটার সরল মানসিক মডেল, সীমাবদ্ধতা এবং ব্যবহারিক প্রম্পটিং টিপস।

মানুষ যখন বলে “AI চিন্তা করে,” তারা সাধারণত বোঝায়: এটি আপনার প্রশ্ন বুঝছে, যুক্তি করছে, এবং তারপর উত্তর ঠিক করছে।
আধুনিক টেক্সট‑ভিত্তিক AI (LLM) এর জন্য একটি বেশি প্রাযুক্তিক মানসিক মডেলটি সহজ: মডেলটি ভবিষ্যৎ টেক্সট—পরবর্তী যা আসবে—অনুমান করে।
এটি কম আকর্ষণীয় শোনালেও — যতক্ষণ না আপনি দেখবেন “পরবর্তী টেক্সট” কতদূর যেতে পারে। যদি মডেল প্রশিক্ষণে পর্যাপ্ত প্যাটার্ন শিখে থাকে, তবে পরবর্তী শব্দ (এবং পরের, এবং পরের) অনুমান করেই এটি ব্যাখ্যা, পরিকল্পনা, কোড, সারাংশ, এমনকি আপনার অ্যাপের ব্যবহারের উপযোগী কাঠামোবদ্ধ ডেটাও তৈরি করতে পারে।
ভালো AI ফিচার বানাতে আপনার মূলত নিচের বিষয়গুলো জানা দরকার, গাণিতিক বিশ্লেষণ নয়। আপনি যাতে অনুমান করতে পারেন:
এই আর্টিকেলটি সেই ধরনের মডেল সরবরাহ করে: হাইপ নয়, গভীর টেকনিক্যাল পেপার নয়—কেবল সেই ধারণাগুলো যা আপনাকে নির্ভরযোগ্য প্রোডাক্ট অভিজ্ঞতা ডিজাইন করতে সাহায্য করবে।
অ্যাপ নির্মাতার দৃষ্টিকোণ থেকে, মডেলের “ভাবনা” হল আপনি যে ইনপুট দেন (প্রম্পট, ইউজার মেসেজ, সিস্টেম নিয়ম এবং যেকোনো রিট্রিভ করা কন্টেন্ট) তার প্রতিক্রিয়ায় এটি যে টেক্সট তৈরি করে। মডেল ডিফল্টভাবে তৎক্ষণাত সত্য যাচাই করে না, ওয়েব ব্রাউজ করে না, এবং আপনার ডাটাবেস কী আছে তা “জানেনা” যদি না আপনি সেই তথ্য প্রম্পটে দেন।
এজন্য প্রত্যাশা সেট করুন: LLM গুলি খসড়া লেখার, রূপান্তর করার, শ্রেণিবদ্ধ করার এবং কোড‑মতো আউটপুট তৈরিতে অসাধারণ। তারা যাদুকরী সত্য‑ইঞ্জিন নয়।
আমরা মানসিক মডেলটি কয়েকটি অংশে ভাগ করব:
এসব ধারণা দিয়ে আপনি প্রম্পট, UI, এবং সেফগার্ড ডিজাইন করে AI ফিচারকে ধারাবাহিক ও বিশ্বাসযোগ্য করে তুলতে পারবেন।
মানুষ যখন বলে একটি AI “ভাবছে,” তখন সহজেই কল্পনা করা যায় এটি মানুষের মত যুক্তি করে। একটি বেশি উপযোগী মানসিক মডেল সহজ: এটি অত্যন্ত দ্রুত অটোকমপ্লিট করছে—এক ছোট টুকরো করে।
একটি টোকেন হল এমন একটি টুকরা টেক্সট যার উপর মডেল কাজ করে। কখনও তা পুরো শব্দ ("apple"), কখনও শব্দের অংশ ("app" + "le"), কখনও পাংশু চিহ্ন, কখনও সাদা স্থান। নির্দিষ্ট টুকরো করা মডেল‑ভিত্তিক টোকেনাইজারের ওপর নির্ভর করে, কিন্তু মূল কথা হল: মডেল বাক্য হিসেবে নয়—টোকেন হিসেবে প্রসেস করে।
মডেলের মূল লুপ:
এটাই। প্রতিটি অনুচ্ছেদ, বুলেট লিস্ট, এবং “রিজনিং” চেইন আপনি দেখেন তা বহুবার এই পরবর্তী‑টোকেন অনুমানের পুনরাবৃত্তি থেকে গঠিত।
মডেল প্রশিক্ষণের সময় বিপুল পরিমাণ টেক্সট দেখেছে, তাই এটি ব্যাখ্যার প্রবাহ কেমন হয়, একটি বিনীত ইমেইল কেমন শোনায়, বা কোনো বাগ ফিক্স কিভাবে বর্ণিত হয়—এসব প্যাটার্ন শিখে ফেলে। যখন আপনি প্রশ্ন করেন, এটি এমন উত্তর তৈরি করে যা শিখে নেওয়া প্যাটার্নগুলোর সাথে মিলে যায় এবং আপনি যে প্রসঙ্গ দিয়েছেন তার সাথে সামঞ্জস্য করে।
এজন্যই এটি আত্মবিশ্বাসী ও সুসংগত শোনাতে পারে যদিও ভুল—কারণ এটি"পরবর্তী টেক্সট কী হওয়া উচিত" তা অপ্টিমাইজ করছে, বাস্তবতা যাচাই করছে না।
কোড মডেলের কাছে বিশেষ নয়। JavaScript, SQL, JSON, এবং এরর মেসেজ সবই টোকেনের ক্রম। মডেল ব্যবহারযোগ্য কোড উৎপন্ন করতে পারে কারণ এটি কমন কডিং প্যাটার্ন শিখেছে, নাকি কারণ এটি আপনার অ্যাপকে একজন ইঞ্জিনিয়ারের মত সত্যিই বুঝে।
লোকেরা যখন জিজ্ঞেস করে “মডেল সেটা কীভাবে জানলো?”, সবচেয়ে দরকারী মানসিক মডেল হলো: এটি বিশাল সংখ্যক উদাহরণ থেকে প্যাটার্ন শিখেছে, এবং এখন ঐ প্যাটার্নগুলোকে পুনরায় মিশিয়ে পরবর্তী টেক্সট অনুমান করে।
প্রশিক্ষণের সময় মডেল অনেক টেক্সট‑স্নিপেট (বই, আর্টিকেল, কোড, ডকুমেন্টেশন, Q&A ইত্যাদি) দেখায়। এটি বারবার একটি সহজ কাজ অনুশীলন করে: কিছু টেক্সন দেওয়া হলে পরবর্তী টোকেনটা অনুমান করা। ভুল হলে, প্রশিক্ষণ প্রক্রিয়া মডেলের প্যারামিটারগুলো সামান্য সামান্য করে পরিবর্তন করে যাতে পরবর্তীতে ভালো অনুমান করতে পারে।
সময়ের সাথে সেই ছোট‑ছোট পরিবর্তনগুলো জমে যায়। মডেল সম্পর্কগুলো এনকোড করতে শুরু করে যেমন:
কারণ এটি স্ট্যাটিস্টিকাল নিয়মিততা শিখছে—একটা নির্দিষ্ট স্ক্রিপ্ট নয়—এটি প্যাটার্নগুলো নতুনভাবে মিশিয়ে দিতে পারে। যদি এটি অনেক “কোনো ধারণা ব্যাখ্যা করা” উদাহরণ এবং অনেক “আপনার অ্যাপ দৃশ্য” উদাহরণ দেখে থাকে, এটি প্রায়ই সেগুলোকে মিলিয়ে একটি উপযুক্ত প্রতিক্রিয়া তৈরি করতে পারে।
এজন্যই একটি LLM নিখুঁত অনবোর্ডিং ইমেইল লিখতে পারে একটি নীচ‑প্রোডাক্টের জন্য, অথবা একটি জেনেরিক API ইন্টিগ্রেশন ব্যাখ্যাকে নির্দিষ্ট স্ট্যাকের সাথে মানিয়ে নিতে পারে। এটি কোনো একক সংরক্ষিত অনুচ্ছেদটি ফিরিয়ে দিচ্ছে না; বরং এটি একটি নতুন সিকোয়েন্স তৈরি করছে যা শিখা প্যাটার্নের সাথে মেলে।
যদি প্রশিক্ষণ ডেটায় কোনো নির্দিষ্ট তথ্য থাকে (যেমন একটি প্রাইসিং টিয়ার বা অভ্যন্তরীণ নীতি), আপনি মডেলকে নির্ভরযোগ্যভাবে “লুকআপ” করতে পারে বলে ধারণা করা ঠিক নয়। প্রশিক্ষণ একটি নলেজ বেস‑ইনডেক্সিংয়ের মত কাজ করে না—এটি সন্নিকোচনের মতো: অনেক উদাহরণ ওজনগুলোতে চূর্ণীকৃত হয়ে ভবিষ্যতের অনুমানে প্রভাব ফেলে।
এটার অর্থ হল মডেল প্রায়ই এমন ডিটেইল নিয়ে আত্মবিশ্বাস দেখাতে পারে যা এটি অনুরূপ প্রসঙ্গে সাধারণত দেখা যায় এমন তথ্যের উপর ভিত্তি করে অনুমান করছে।
প্যাটার্ন শিক্ষা বলিষ্ঠ টেক্সট উৎপাদনে শক্তিশালী, কিন্তু ফ্লুয়েন্সি সত্যের সমতুল্য নয়। মডেল নিম্নোক্ত ঘটনা ঘটাতে পারে:
অ্যাপ নির্মাতাদের মূল শিক্ষণীয় বিষয়: LLM‑এর উত্তরগুলি সাধারণত শিখা প্যাটার্ন থেকে আসে, যাচাই করা তথ্য থেকে নয়। যদি সঠিকতা জরুরি হয়, আউটপুটকে আপনার নিজের ডেটা ও চেক দিয়ে গ্রাউন্ড করুন (পরে আমরা সেটি আলোচনা করব)।
যখন একটি LLM উত্তর লিখে, এটি কোন একক “সঠিক বাক্য” ডাটাবেস থেকে টেনে আনে না। প্রতিটি ধাপে এটি সম্ভাব্য পরবর্তী টোকেনগুলোর একটি পরিসর অনুমান করে (প্রতিটি একটি সম্ভাব্যতা সহ)।
যদি মডেল সবসময় একটাই সবচেয়ে সম্ভব টোকেন বেছে নিত, আউটপুট অনেক বেশি স্থির হত—কিন্তু অনেকক্ষেত্রে একঘেয়েমি ও অসুবিধাজনক রয়ে যেত। বেশিরভাগ সিস্টেম পরিবর্তে সম্ভাব্যতা থেকে স্যাম্পল করে, যা নিয়ন্ত্রিত র্যান্ডমনেস সৃষ্টি করে।
দুইটি সাধারণ সেটিং আউটপুটে ভিন্নতা নিয়ন্ত্রণ করে:
অ্যাপ বানালে এই নিয়মগুলো শিল্পীকালীন “ক্রিয়েটিভ” হওয়ার চেয়ে বেশি—এগুলি বেছে নেওয়ার ব্যাপার:
কারণ মডেল প্রাসঙ্গিক টেক্সট উৎপাদনে অপ্টিমাইজ করা—এবং আত্মবিশ্বাসী ভাষ্য প্রচলিত। তাই এটি নিশ্চিত শোনাতে পারে, যদিও মূল দাবিটি ভুল বা অসম্পূর্ণ। এই কারণেই অ্যাপগুলিতে গ্রাউন্ডিং (রিট্রিভাল) বা যাচাই ধাপ জরুরি যেখানে সঠিকতা গুরুত্বপূর্ণ।
একটু প্রশ্ন করুন: “একটি জাভাস্ক্রিপ্ট ফাংশন লিখুন যা অ্যারেতে থেকে ডুপ্লিকেট সরায়।” আপনি পেতে পারেন যেকোনোটি, সবই বৈধ:
// Option A: concise
const unique = (arr) => [...new Set(arr)];
// Option B: explicit
function unique(arr) {
return arr.filter((x, i) => arr.indexOf(x) === i);
}
বিভিন্ন স্যাম্পলিং পছন্দ ভিন্ন স্টাইল (সংক্ষিপ্ত বনাম বিস্তারিত), ভিন্ন ট্রেড‑অফ (গতি, পাঠযোগ্যতা), এমনকি বিভিন্ন এজ‑কেস আচরণও তৈরি করতে পারে—সবই মডেল “মনে পরিবর্তন” করায় নয়, এটি কেবল বহু উচ্চ‑সম্ভাব্য ধারাবাহিকতার মধ্যে থেকে নির্বাচন করছে।
লোকেরা যখন বলে মডেল আপনার কথোপকথন “মনে রাখে”, আসলে এটি আছে কন্টেক্সট: মডেলের এখন যা দৃশ্যমান—আপনার সর্বশেষ মেসেজ, সিস্টেম নির্দেশ, এবং কথোপকথনের যত অংশ উইন্ডোতে ফিট করে।
কন্টেক্সট উইন্ডো হল কতটুকু টেক্সট মডেল একবারে বিবেচনা করতে পারে তার সীমা। কথোপকথন যথেষ্ট দীর্ঘ হলে পুরনো অংশগুলো ওই উইন্ডোর বাইরে চলে যায় এবং কার্যত মডেলের দৃষ্টিভঙ্গি থেকে অদৃশ্য হয়ে যায়।
এজন্যই কখনো কখনো দেখা যায়:
আপনি যদি থ্রেডে বারবার মেসেজ পাইল করেন, আপনি সীমিত স্থানের জন্য প্রতিযোগিতা করছেন। গুরুত্বপূর্ণ বিধিনিষেধ সাম্প্রতিক ব্যাক‑অ্যান্ড‑ফোর্থে ঠেলে পড়ে। সারাংশ না থাকলে মডেলকে যা দৃশ্যমান থাকে তা থেকে সিদ্ধান্ত নিতে হয়—তাই এটি আত্মবিশ্বাসী শোনাতে পারে অথচ চুপচাপ গুরুত্বপূর্ণ বিবরণ মিস করছে।
প্রায়োগিক সমাধান হল সময়ের পরাবৃত্তভাবে সারাংশ করা: লক্ষ্য, সিদ্ধান্ত এবং সীমাবদ্ধতাগুলো সংক্ষিপ্তভাবে পুনরায় লিখে একটি ব্লকে রাখুন, তারপর সেখান থেকেই চালিয়ে যান। অ্যাপে এটি সাধারণত একটি স্বয়ংক্রিয় “কনভারসেশন সারাংশ” হিসাবে ইনজেক্ট করা হয়।
মডেল সাধারণত সেই নির্দেশনা অনুসরণ করে যা আউটপুটের খুব কাছাকাছি থাকে। তাই আপনার আবশ্যক নিয়ম (ফরম্যাট, টোন, এজ‑কেস) গুলো প্রম্পটের শেষে রাখুন—“এখন উত্তর উৎপন্ন করুন” এর ঠিক আগে।
যদি আপনি একটি অ্যাপ বানাচ্ছেন, এটাকে ইন্টারফেস ডিজাইনের মতো বিবেচনা করুন: ঠিক করুন কোন জিনিসগুলো কনটেক্সটে থাকতে হবে (রিকোয়ারমেন্ট, ইউজার পছন্দ, স্কিমা) এবং নিশ্চিত করুন সেগুলো সবসময় অন্তর্ভুক্ত—চ্যাট হিস্টরি ট্রিম করে বা একটি টাইট সারাংশ যোগ করে। কিভাবে প্রম্পট স্ট্রাকচার করবেন সে সম্পর্কে আরও জানতে দেখুন /blog/prompting-as-interface-design।
LLM‑গুলি অত্যন্ত ভাল এমন টেক্সট উৎপাদনে যা একজন দক্ষ ডেভেলপার দেওয়া উত্তর जैसा শোনায়। কিন্তু “শোনায় ঠিক” আর “ঠিক আছে” একই নয়। মডেল পরবর্তী‑টোকেন অনুমানে অপ্টিমাইজ করে, আপনার কোডবেস, ডিপেন্ডেন্সি, বা বাস্তব জগতের সাথে আউটপুট মিলিয়ে যাচাই করে না।
যদি মডেল কোনো ফিক্স, রিফ্যাক্টর, বা নতুন ফাংশন সাজেস্ট করে, সেটাও কেবল টেক্সট। এটি আপনার অ্যাপ রান করে না, প্যাকেজ ইম্পোর্ট করে না, আপনার API হিট করে না, বা প্রজেক্ট কম্পাইল করে না—যদি না আপনি স্পষ্টভাবে এমন কোনো টুল সংযুক্ত করেন যা তা করতে পারে (যেমন টেস্ট রানার, লিন্টার, বা বিল্ড স্টেপ)।
এটাই মূল পার্থক্য:
যখন AI ভুল করে, তা অনেক সময় পূর্বানুমেয় উপায়ে ব্যর্থ হয়:
এই ত্রুটিগুলো লক্ষ্য করা কঠিন হতে পারে কারণ আশেপাশের বর্ণনাগুলো সাধারণত সুসংগত থাকে।
AI আউটপুটকে এমন একটি দ্রুত খসড়া ভাবুন যা একজন টিমমেট দিয়েছে যিনি লোকালি প্রজেক্ট চালাননি। আস্থা ধীরে বাড়ুক যখন আপনি:
টেস্ট পাস না করলে ধরে নিন মডেলের উত্তর কেবল একটি শুরু—চূড়ান্ত ফিক্স নয়।
একটি ল্যাঙ্গুয়েজ মডেল কি হতে পারে তা প্রস্তাব করতে চমৎকার—কিন্তু একা থাকলে এটি কেবল টেক্সট উৎপাদন করে। টুলগুলোই সেই জিনিসগুলো যা AI‑ব্যাকড অ্যাপকে ঐ প্রস্তাবগুলো যাচাই করে কর্মে রূপ দিতে দেয়: কোড চালানো, ডাটাবেস কোয়েরি, ডকুমেন্টেশন ফেচ, অথবা কোনো এক্সটার্নাল API কল।
অ্যাপ‑বিল্ডিং ওয়ার্কফ্লোতে টুলগুলো সাধারণত দেখতে এমন হয়:
গুরুত্বপূর্ণ শিফট হল: মডেল আর ভান করছে যে এটি ফলাফল জানে—এটি চেক করতে পারে।
একটি কাজে লাগার মতো মানসিক মডেল:
এভাবেই আপনি অনুমান কমান। লিন্টার অ্যানবাতলে আনরিপোর্টেড ইস্যু দিলে মডেল কোড আপডেট করে। ইউনিট টেস্ট ব্যর্থ হলে এটি এজ‑কেস ধরার জন্য পুনরায় চেষ্টা করে (অথবা ব্যাখ্যা করে কেন পারছে না)।
eslint/ruff/prettier চালিয়ে স্টাইল ও ইস্যু ধরবে।টুলগুলি শক্তিশালী—এবং বিপজ্জনক হতে পারে। least privilege অনুসরণ করুন:
টুলগুলো মডেলকে “আরও স্মার্ট” করে না, তবে এগুলো আপনার অ্যাপের AI‑কে গ্রাউন্ডেড করে—কারণ এটি কেবল বর্ণনা করছে না, যাচাইও করছে।
একটি ল্যাঙ্গুয়েজ মডেল লেখার, সারাংশ করার, এবং দেওয়া টেক্সটের ওপর যুক্তি করার ক্ষেত্রে চমৎকার। কিন্তু এটি আপনার সর্বশেষ প্রোডাক্ট পরিবর্তন, কোম্পানির নীতি, বা কোনো নির্দিষ্ট কাস্টমারের অ্যাকাউন্ট‑বিবরণ স্বয়ংক্রিয়ভাবে জানে না। Retrieval‑Augmented Generation (RAG) একটি সরল সমাধান: প্রথমে সবচেয়ে প্রাসঙ্গিক সত্য খুঁজে নিয়ে আসুন, তারপর মডেলকে সেই সত্য ব্যবহার করে লিখতে বলুন।
RAG‑কে ভাবুন “ওপেন‑বুক AI” হিসেবে। মডেলকে স্মৃতি থেকে জবাব দেওয়ার পরিবর্তে, আপনার অ্যাপ দ্রুত কয়েকটি প্রাসঙ্গিক প্যাসেজ (স্নিপেট) টেনে এনে প্রম্পটে যোগ করে। মডেল তখন প্রদত্ত উপকরণের ভিত্তিতে একটি গ্রাউন্ডেড উত্তর তৈরি করে।
RAG প্রায় ডিফল্ট ভালো যখনই সঠিকতা বাইরে‑থেকে আসা তথ্যের উপর নির্ভর করে:
আপনার অ্যাপের ভ্যালু যদি “আমাদের ব্যবসার সঠিক উত্তর” হয়, RAG সাধারণত মডেলকে আশা করার চেয়ে ভালো করে।
RAG কেবল ততটাই ভালো যতটা এটিতে রিট্রিভ করা হচ্ছে। যদি সার্চ ধাপ পুরোনো, অপ্রাসঙ্গিক, বা অসম্পূর্ণ প্যাসেজ ফেরত দেয়, মডেল আত্মবিশ্বাসী ভাবে ভুল উত্তর তৈরি করতে পারে—এখন তা “ভুল উৎসে গ্রাউন্ডেড”। প্র্যাকটিক্যালি, রিট্রিভাল‑কোয়ালিটি (চাংকিং, মেটাডেটা, ফ্রেশনেস, র্যাঙ্কিং) উন্নত করা প্রম্পট টুইক করার থেকেও সঠিকতা বাড়ায়।
একটি “এজেন্ট” হল একটি LLM যা লুপে চালানো হয়: এটি পরিকল্পনা করে, একটি স্টেপ নেয়, ফল দেখে, এবং পরবর্তী সিদ্ধান্ত নেয়। একবার উত্তর দেওয়া ছাড়াও এটি পুনরাবৃত্তি করে যতক্ষণ না লক্ষ্য অর্জিত হয়।
উপকারি মানসিক মডেল হলো:
Plan → Do → Check → Revise
এই লুপটি একটি সিঙ্গেল‑প্রম্পটকে ছোট ওয়ার্কফ্লোতে পরিণত করে। এজেন্টগুলো কেন “স্বতন্ত্র” মনে হয়—কারণ মডেল শুধু টেক্সট দিচ্ছে না, কাজ ও সিকোয়েন্স নির্বাচন ও পরিচালনা করছে।
এজেন্টগুলোকে কখন থামবে তা স্পষ্ট নিয়ম দরকার। সাধারণ স্টপিং কন্ডিশন:
গার্ডরেইলগুলি হ’ল সেই সীমাবদ্ধতাগুলো যা লুপকে নিরাপদ ও পূর্বানুমেয় রাখে: অনুমোদিত টুল, অনুমোদিত ডেটা উত্স, মানুষের‑ইন‑দ্য‑লুপ অনুমোদন, এবং আউটপুট ফরম্যাট।
একটি এজেন্ট সবসময় “আরও একটি ধাপ” প্রস্তাব করতে পারে, তাই আপনাকে ব্যর্থতার জন্য ডিজাইন করতে হবে। বাজেট, টাইমআউট, এবং স্টেপ লিমিট ছাড়া একটি এজেন্ট পুনরাবৃত্তিতে আটকে পড়তে পারে ("মাঝে মাঝে একটুখানি আলাদা কুয়েরি চেষ্টা কর"), বা খরচ বাড়াতে পারে। বাস্তবিক ডিফল্ট: ইটারেশন কপি, প্রতিটি অ্যাকশন লগ, টুল ফলাফল যাচাই, এবং আংশিক উত্তর+কী‑কী চেষ্টা করা হয়েছে সহ graceful fail—এটিই ভালো প্রোডাক্ট ডিজাইন।
আপনি যদি Koder.ai‑র মত ভিব‑কোডিং প্ল্যাটফর্ম নিয়ে কাজ করেন, এই “এজেন্ট + টুল” মেন্টাল মডেলটি বিশেষভাবে ব্যবহারযোগ্য। আপনি কেবল পরামর্শ নেওয়ার জন্য চ্যাট করছেন না—এটি এমন একটি ওয়ার্কফ্লো যেখানে অ্যাসিস্ট্যান্ট ফিচার পরিকল্পনা করতে পারে, React/Go/PostgreSQL বা Flutter কম্পোনেন্ট জেনারেট করতে পারে, এবং চেকপয়েন্ট (স্ন্যাপশট ও রোলব্যাক) ব্যবহার করে দ্রুত এগোনোর সময় পরিবর্তন হারাতে সাহায্য করে।
আপনি যখন একটি LLM‑কে কোনো অ্যাপ ফিচারের পিছনে রাখেন, আপনার প্রম্পট আর “শুধু টেক্সট” নয়। এটি আপনার প্রোডাক্ট ও মডেলের মধ্যে ইন্টারফেস কন্ট্রাক্ট: মডেলকে কি করতে হবে, কী ব্যবহার করতে পারবে, এবং কীভাবে এমনভাবে সাড়া দিতে হবে যাতে আপনার কোড নির্ভরযোগ্যভাবে এটি পার্স করতে পারে।
ভাল ফর্মগুলো অস্পষ্টতা কমায়, পছন্দ সীমিত করে, এবং পরবর্তী অ্যাকশনটি স্পষ্ট করে। ভাল প্রম্পটগুলোও একই কাজ করে।
শিপ করার আগে নিশ্চিত করুন প্রম্পটটি স্পষ্টভাবে বলে:
মডেল প্যাটার্ন অনুসরণ করে। আপনি যে প্যাটার্ন চান তা “শিক্ষাতে” একটি একক ভাল ইনপুট‑আউটপুট উদাহরণ যোগ করুন—বিশেষত আপনার টাস্কে এজ‑কেস থাকলে।
একটি উদাহরণই ব্যাক‑অ্যান্ড‑ফোর্থ কমাতে ও মডেলকে এমন ফরম্যাট বানাতে বাধা দিতে পারে যা আপনার UI ডিস্ট্রিবিউট করতে পারবে না।
যদি অন্য কোনো সিস্টেম প্রতিক্রিয়া পড়বে, আউটপুটটি স্ট্রাকচার করুন। JSON, একটি টেবিল, বা কঠোর বুলেট অনুরোধ করুন।
You are a helpful assistant.
Task: {goal}
Inputs: {inputs}
Constraints:
- {constraints}
Output format (JSON):
{
"result": "string",
"confidence": "low|medium|high",
"warnings": ["string"],
"next_steps": ["string"]
}
এটি “প্রম্পটিং”‑কে একধরনের পূর্বানুমেয় ইন্টারফেস ডিজাইনে পরিণত করে।
একটি স্পষ্ট নিয়ম যোগ করুন: "যদি কী‑রিপোয়ারমেন্ট অনুপস্থিত থাকে, উত্তর দেওয়ার আগে ক্ল্যারিফাইং প্রশ্ন করুন।"
একটি লাইনই আত্মবিশ্বাসী‑দেখানো, ভুল আউটপুট রোধ করতে পারে—কারণ মডেল অনুমান করার বদলে থামতে এবং অনুপস্থিত ক্ষেত্রগুলো জিজ্ঞেস করতে পারে।
প্র্যাকটিক্যালি, সবচেয়ে নির্ভরযোগ্য প্রম্পটগুলো আপনার প্রোডাক্টের বিল্ড ও ডিপ্লয় ওয়ার্কফ্লো মিলায়। উদাহরণস্বরূপ, যদি আপনার প্ল্যাটফর্ম পরিকল্পনা → পরিবর্তন উত্পাদন → সোর্স এক্সপোর্ট/ডিপ্লয় সমর্থন করে, আপনি প্রম্পট কন্ট্রাক্টেও সেটি প্রতিফলিত করতে পারেন (plan → produce diff/steps → confirm → apply)। Koder.ai‑এর “planning mode” দেখায় কিভাবে প্রক্রিয়াটিকে ধাপে ভাগ করলে ড্রিফট কমে এবং টিমগুলো পরিবর্তন রিভিউ করে পাঠাতে পারে।
বিশ্বাস আসে না মডেলটি আত্মবিশ্বাসীভাবে কথা বললে। এটি আসে যখন আপনি AI আউটপুটকে অন্য যে কোনো ডিপেনডেন্সির মত পরিমাপ, মনিটর, এবং সীমাবদ্ধ করে ব্যবহার করেন।
ছোট সেট দিয়ে শুরু করুন—ব্যবহৃত বাস্তব টাস্ক যেগুলো আপনার অ্যাপ ভালোভাবে করতে হবে। তারপর সেগুলোকে রেপিটেবল চেকগুলোতে রূপান্তর করুন:
“ভালো?” জিজ্ঞাসা করার বদলে ট্র্যাক করুন “কতবার পাস করে?” দরকারী মেট্রিক:
কিছু ভুল হলে পুনরায় চালানোর উপযোগী লগ দরকার। (উপযুক্ত রেডাকশনের সাথে) লগ করুন:
এতে ডিবাগিং বাস্তবসম্ভব হয় এবং আপনি নির্ণয় করতে পারেন “মডেল বদলে গেছে, না আমাদের ডেটা/টুল বদলে গেছে?”
কয়েকটি ডিফল্ট নিয়ম সাধারণ ইনসিডেন্ট প্রতিরোধ করে:
এটি সাধারণত বোঝায় যে মডেল সুসংগত, লক্ষ্যনির্ধারিত টেক্সট তৈরি করতে পারে যা বোধগম্যতা এবং যুক্তির মতো মনে হয়। বাস্তবে, একটি LLM হচ্ছে নেক্সট‑টোকেন প্রেডিকশন: এটি আপনার প্রম্পট, নির্দেশনা এবং দেয়া কোন প্রসঙ্গের ভিত্তিতে সবচেয়ে সম্ভাব্য পরবর্তী অনর্বচন (continuation) তৈরি করে।
অ্যাপ নির্মাতাদের জন্য দরকারী সারাংশ হলো: “ভেবে থাকা” মানে হচ্ছে সেই আউটপুট আচরণ যাকে আপনি গঠন ও নিয়ন্ত্রণ করতে পারবেন—এবং এটি কোনো অভ্যন্তরীণ সত্যতার গ্যারান্টি নয়।
একটি টোকেন হল মডেল যে টুকরা টেক্সট নিয়ে কাজ করে ও তৈরি করে (একটি সম্পূর্ণ শব্দ, শব্দের অংশ, চিহ্ন বা ওয়াইটস্পেস)। কারণ মডেল টোকেনের উপর কাজ করে, খরচ, সীমা এবং কাটা‑ছাঁটা সব টোকেন‑ভিত্তিক।
প্রায়োগিকভাবে:
কারণ জেনারেশন সম্ভাব্যতামূলক। প্রতিটি ধাপে মডেল অনেক সম্ভাব্য পরবর্তী টোকেনের উপর সম্ভাব্যতা বরাদ্দ করে, এবং বেশিরভাগ সিস্টেম সেই বিতরণ থেকে স্যাম্পল করে—সবসময় একটাই শীর্ষ বিকল্প বেছে নেয় না।
আউটপুট বেশি পুনরাবৃত্তিহীন করতে:
LLM‑গুলি সম্ভবপাঠ্য টেক্সট তৈরি করতে অপ্টিমাইজ করে, সত্য যাচাই করার জন্য নয়। প্রশিক্ষণ ডেটায় আত্মবিশ্বাসী শব্দভঙ্গির প্রচলন থাকায় মডেল নিশ্চিত শৈলীতে বলতে পারে—এটি তখনও ভুল ধারণা বা অনুমানের উপর ভিত্তি করে থাকতে পারে।
প্রোডাক্ট ডিজাইনে, ফ্লুয়েন্সি অর্থ “ভাল লেখা”, কিন্তু তা স্বয়ংক্রিয়ভাবে “ঠিক” হওয়ার প্রমাণ নয়—যখন সঠিকতা জরুরি, রিট্রিভ্যাল, টুল, টেস্ট বা অনুমোদন যোগ করুন।
কন্টেক্সট উইন্ডো হল মডেল একবারে যতটুকু টেক্সট দেখতে পারে তার সর্বোচ্চ সীমা (সিস্টেম নির্দেশ, কথোপকথনের ইতিহাস, রিট্রিভ করা টুকরা ইত্যাদি)। থ্রেড দীর্ঘ হয়ে গেলে পুরনো তথ্য উইন্ডো থেকে বাইরে পড়ে যায় এবং মডেল তা “দেখতে” পায় না।
প্রতিকার:
না—ডিফল্ট অবস্থায় মডেল ওয়েব ব্রাউজ করে না, আপনার ডাটাবেস পড়ে না, আর কোড চালায় না। এটি শুধুমাত্র সেই তথ্য অ্যাক্সেস করে যা আপনি প্রম্পটে অন্তর্ভুক্ত করেন বা explicitভাবে যেসব টুল সংযুক্ত করেন।
আপনার উত্তর যদি অভ্যন্তরীণ বা আপ‑টু‑ডেট তথ্যের উপর নির্ভর করে, সেগুলো রিট্রিভাল (RAG) বা টুল কলের মাধ্যমে প্রদান করুন—“আরও কষ্ট করে জিজ্ঞাসা করা” নয়।
যখন আপনি যাচাইযোগ্য ফলাফল বা বাস্তব ক্রিয়া চান—টুল ব্যবহার করুন। সাধারণ উদাহরণ:
ভাল প্যাটার্ন: propose → check → adjust, যেখানে মডেল টুল আউটপুটের ভিত্তিতে পুনরাবৃত্তি করে।
RAG (Retrieval‑Augmented Generation) হল “ওপেন‑বুক AI”: আপনার অ্যাপ বিশ্বাসযোগ্য উৎস থেকে প্রাসঙ্গিক টুকরা রিট্রিভ করে প্রম্পটে যোগ করে, যাতে মডেল ঐ কন্টেক্সট ব্যবহার করে উত্তর তৈরি করে।
RAG ব্যবহার করুন যখন:
প্রধান ব্যর্থতা মোড হল খারাপ রিট্রিভাল—চাংকিং, মেটাডেটা, ফ্রেশনেস, এবং র্যাঙ্কিং উন্নত করলে প্রায়শই সঠিকতা বাড়ে।
একটি এজেন্ট হল LLM‑এর একধরনের লুপ: এটি পরিকল্পনা করে, স্টেপ নেয়, ফল পর্যবেক্ষণ করে এবং পরবর্তী পদক্ষেপ ঠিক করে। ওয়ার্কফ্লো (যেমন “তথ্য খুঁজুন → খসড়া তৈরি করুন → যাচাই করুন → পাঠান”)ে কাজে লাগে।
নিয়ন্ত্রণ রাখতে:
প্রম্পটকে একটি ইন্টারফেস কন্ট্রাক্ট হিসেবে বিবেচনা করুন: লক্ষ্য, ইনপুট, সীমাবদ্ধতা, এবং আউটপুট ফরম্যাট ঠিক করে দিন যাতে আপনার অ্যাপ নির্ভরযোগ্যভাবে ফলাফল ভক্ষণ করতে পারে।
বিশ্বাস অর্জনের প্র্যাকটিক্যাল উপায়: