Part ০৯
Evaluation Engineering (model মাপার কাজ)
Golden dataset-এর ওপর offline eval, LLM-as-judge (pairwise + rubric), RAG metric (faithfulness, answer relevance, context precision/recall, Ragas দিয়ে), agent eval (task success, trajectory, tool-call accuracy), synthetic data তৈরি, framework (Promptfoo, DeepEval, Inspect, Braintrust, OpenAI Evals), production traffic-এর ওপর online eval, আর red-teaming। প্রতিটি section দুই ভাবে লেখা: engineer-এর জন্য technical version (code আর diagram সহ), আর সাধারণ পাঠকের জন্য সহজ ভাষায় ব্যাখ্যা (উপমা সহ)। প্রতিটি topic-এর শেষে বাংলা ব্যাখ্যাও আছে।
১টি section · ৩০টি source · তিনভাবে ব্যাখ্যা
01
Evaluation engineering: model মাপার কাজ
মাপতে না পারলে উন্নতি করা যায় না। Evaluation engineering হলো "model আজ খারাপ লাগছে" কথাটাকে সংখ্যায় বদলানোর কাজ। তারপর সেই সংখ্যাকে CI-র একটা signal বানানো হয়, যা প্রতিটা prompt বা model বদলানোর আগে পরীক্ষা করে।
অনুশীলন · ৪টি task
যেকোনো free AI chat খোলো: ChatGPT · Claude · Gemini
অনুশীলন কীভাবে করবে
- নতুন chat মানে একদম নতুন কথোপকথন, আগের কোনো history নেই। ChatGPT, Claude বা Gemini-তে New chat-এ click করো। সাধারণত এটা উপরে বাঁ দিকে থাকে।
- একই chat মানে: যে chat খোলা আছে, সেখানেই লিখতে থাকো। আগে যা পাঠিয়েছ, AI তা মনে রাখে।
- Prompt ব্যবহার করতে: Copy-তে click করো, chat-এর message box-এ click করো, paste করো (Ctrl+V, বা phone-এ চেপে ধরে রাখো), তারপর Enter চাপো।
- AI-এর উত্তর প্রতিবার একটু আলাদা হয়। তোমার উত্তর example-এর সাথে হুবহু মিলতে হবে না। একই ধারণা আছে কি না, সেটা দেখো।
- শুধু বানানো data ব্যবহার করো। নিজের বা অন্যের ব্যক্তিগত তথ্য chat-এ paste করবে না।
Task ১
Golden set দিয়ে ভাঙা prompt ধরো
এটা কেন দরকার
Support bot বানালে তুমি তার prompt অনেকবার বদলাবে। প্রতিটা বদল একটা case ঠিক করতে পারে, কিন্তু চুপচাপ আরেকটা case ভেঙে দিতে পারে। একটা fixed test list, যার নাম golden set, সেটা সাথে সাথে দেখিয়ে দেয়।
ধাপ ১
নতুন chatএই prompt টা copy করো, chat-এ paste করে Enter চাপো। এটা 9টা support ticket-কে label-এ ভাগ করবে। (label গুলো English-এ রাখা হয়েছে, কারণ নিচে সেগুলো মিলিয়ে দেখব।)
Prompt তুমি একজন support ticket classifier। প্রতিটা ticket-কে ঠিক একটা label দাও: BILLING, BUG, ACCOUNT, বা OTHER। একটা numbered list-এ উত্তর দাও। শুধু নম্বর আর label লেখো। Tickets: 1. March-এর plan-এর জন্য আমার কাছ থেকে দুইবার টাকা কাটা হয়েছে। 2. Firefox-এ export বাটন চাপলে একটা ফাঁকা পাতা দেখায়। 3. আমি password ভুলে গেছি, তাই login করতে পারছি না। 4. ঢাকায় কি আপনাদের কোনো অফিস আছে? 5. আমার invoice-এ কোম্পানির নাম ভুল এসেছে। 6. 10 MB-এর চেয়ে বড় file upload করলে app crash করে। 7. আমার profile-এর email address টা বদলে দিন। 8. নতুন dashboard টা আমার খুব ভালো লেগেছে! 9. টাকা দেওয়ার পরও confirmation email আসেনি।
তুমি দেখবে: 9টা label-এর একটা numbered list, প্রতিটা ticket-এর জন্য একটা করে।
Example উত্তর
1. BILLING 2. BUG 3. ACCOUNT 4. OTHER 5. BILLING 6. BUG 7. ACCOUNT 8. OTHER 9. BUG
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
একই chatতোমার list টা এই answer key-র সাথে মেলাও। কয়টা label মিলেছে গোনো। Key: 1 BILLING, 2 BUG, 3 ACCOUNT, 4 OTHER, 5 BILLING, 6 BUG, 7 ACCOUNT, 8 OTHER, 9 BUG।
তুমি দেখবে: বেশিরভাগ chat-এ সবগুলো মেলে, মানে score 9-এর মধ্যে 9। একটা ভুল হলেও সমস্যা নেই। তোমার score লিখে রাখো।
ধাপ ৩
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। কাজ একই, শুধু email নিয়ে একটা নতুন নিয়ম আছে।
Prompt তুমি একজন support ticket classifier। প্রতিটা ticket-কে ঠিক একটা label দাও: BILLING, BUG, ACCOUNT, বা OTHER। নিয়ম: কোনো ticket-এ email-এর কথা থাকলে সবসময় BUG লেখো, কারণ email-এর সমস্যা সাধারণত delivery bug। একটা numbered list-এ উত্তর দাও। শুধু নম্বর আর label লেখো। Tickets: 1. March-এর plan-এর জন্য আমার কাছ থেকে দুইবার টাকা কাটা হয়েছে। 2. Firefox-এ export বাটন চাপলে একটা ফাঁকা পাতা দেখায়। 3. আমি password ভুলে গেছি, তাই login করতে পারছি না। 4. ঢাকায় কি আপনাদের কোনো অফিস আছে? 5. আমার invoice-এ কোম্পানির নাম ভুল এসেছে। 6. 10 MB-এর চেয়ে বড় file upload করলে app crash করে। 7. আমার profile-এর email address টা বদলে দিন। 8. নতুন dashboard টা আমার খুব ভালো লেগেছে! 9. টাকা দেওয়ার পরও confirmation email আসেনি।
তুমি দেখবে: 9টা label-এর একটা numbered list। Ticket 7 (email address বদলাও) এবার প্রায়ই BUG পায়।
Example উত্তর
1. BILLING 2. BUG 3. ACCOUNT 4. OTHER 5. BILLING 6. BUG 7. BUG 8. OTHER 9. BUG
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৪
একই chatএই list টা একই answer key-র সাথে মেলাও। কয়টা মিলেছে গোনো। কোন ticket এখন ভুল, সেটা খুঁজে বের করো।
তুমি দেখবে: আগের চেয়ে কম score, যেমন 9-এর মধ্যে 8। Ticket 7 হওয়ার কথা ACCOUNT, কিন্তু নতুন নিয়মে সেটা BUG হয়ে গেছে।
এইমাত্র কী হলো
Golden set হলো এমন একটা fixed input list, যার ঠিক উত্তর আগে থেকে জানা। একটা বদলের আগে আর পরে তুমি একই list চালিয়েছ। নতুন email নিয়ম ticket 9 ঠিক করেনি, কারণ ওটা আগেই ঠিক ছিল। কিন্তু ticket 7 ভেঙে দিয়েছে। Regression মানে আগে যা ঠিক ছিল, বদলের পর সেটা ভেঙে যাওয়া।
কাজ শেষ, যখন একই 9টা ticket-এর জন্য তোমার কাছে দুটো score আছে, আর তুমি জানো কোন ticket খারাপ হয়েছে।
নিজেকে যাচাই করোপ্রতিটা prompt বদলের পরে team গুলো একই golden set কেন চালায়?উত্তর দেখো
Set টা fixed, তাই score গুলো তুলনা করা যায়। বদলের ফলে আগে-ঠিক-থাকা কোনো case ভাঙলে score কমে যায় আর তুমি দেখতে পাও। একটা হাতে-করা test এটা ধরতে পারত না। Score কমলে CI-তে release আটকেও দেওয়া যায়।
Task ২
AI judge ন্যায্য কিনা পরীক্ষা করো
এটা কেন দরকার
একটা chatbot-কে অনেক বেশি পরিমাণে test করতে অনেক team দ্বিতীয় একটা AI দিয়ে তার উত্তর judge করায়। কিন্তু judge অন্যায্য হতে পারে, যেমন প্রথম উত্তর বা লম্বা উত্তর বেশি পছন্দ করা। Judge-কে বিশ্বাস করার আগে তাকে test করতে হবে।
ধাপ ১
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। Answer 1 ছোট আর ঠিক। Answer 2 লম্বা আর বিপজ্জনক পরামর্শ দেয়। কোনটা জেতে, লিখে রাখো।
Prompt তুমি একজন judge। একজন beginner জিজ্ঞেস করেছে: "API key কী?" দুটো উত্তর তুলনা করো। বলো কোনটা ভালো, Answer 1 নাকি Answer 2, আর দুই বাক্যে কারণ লেখো। Answer 1: API key হলো একটা গোপন string, যেটা একটা program প্রতিটা request-এর সাথে পাঠায়। Service এটা দিয়ে বোঝে কে request করছে, আর limit ও billing ঠিক করে। এটা private রাখো, আর কখনো public code-এ রেখো না। Answer 2: দারুণ প্রশ্ন! API key হলো একটা অবিশ্বাস্য শক্তিশালী ও বহুমুখী credential, যা আধুনিক software engineering-এর জন্য মৌলিকভাবে অপরিহার্য। এটা ঠিক team-এর shared password-এর মতো, তাই সবাই যাতে সহজে login করতে পারে সেজন্য এটা group chat-এ সব teammate-কে পাঠিয়ে দেওয়া উচিত। এটা তোমার application-কে সম্ভাব্য সব দিক থেকে আরও দ্রুত আর নিরাপদ করে।
তুমি দেখবে: Judge Answer 1 বাছে, আর বলে Answer 2 অনিরাপদ পরামর্শ দিচ্ছে।
Example উত্তর
Answer 1 ভালো। এটা ঠিকভাবে বলেছে যে API key দেখায় কে request করছে, আর এটা private রাখতে হয়। Answer 2 ভুলভাবে key টা group chat-এ শেয়ার করতে বলেছে, যেটা অনিরাপদ।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। উত্তর দুটো একই, শুধু ক্রম উল্টে দেওয়া হয়েছে। এবার কোন লেখাটা জেতে, লিখে রাখো।
Prompt তুমি একজন judge। একজন beginner জিজ্ঞেস করেছে: "API key কী?" দুটো উত্তর তুলনা করো। বলো কোনটা ভালো, Answer 1 নাকি Answer 2, আর দুই বাক্যে কারণ লেখো। Answer 1: দারুণ প্রশ্ন! API key হলো একটা অবিশ্বাস্য শক্তিশালী ও বহুমুখী credential, যা আধুনিক software engineering-এর জন্য মৌলিকভাবে অপরিহার্য। এটা ঠিক team-এর shared password-এর মতো, তাই সবাই যাতে সহজে login করতে পারে সেজন্য এটা group chat-এ সব teammate-কে পাঠিয়ে দেওয়া উচিত। এটা তোমার application-কে সম্ভাব্য সব দিক থেকে আরও দ্রুত আর নিরাপদ করে। Answer 2: API key হলো একটা গোপন string, যেটা একটা program প্রতিটা request-এর সাথে পাঠায়। Service এটা দিয়ে বোঝে কে request করছে, আর limit ও billing ঠিক করে। এটা private রাখো, আর কখনো public code-এ রেখো না।
তুমি দেখবে: Judge Answer 2 বাছে। এটা আগের সেই ছোট, ঠিক লেখাটাই। যদি সে লম্বা লেখাটা বাছে, বা সবসময় প্রথমটাই বাছে, তাহলে judge-এর bias আছে।
Example উত্তর
Answer 2 ভালো। এটা পরিষ্কারভাবে বলেছে API key কী, আর এটা private রাখতে বলেছে। Answer 1 অস্পষ্ট, আর key group chat-এ শেয়ার করতে বলেছে, যেটা বিপজ্জনক।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৩
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। এবার judge শুধু লম্বা, খারাপ উত্তরটাকে নম্বর দেবে।
Prompt তুমি একজন judge। একজন beginner জিজ্ঞেস করেছে: "API key কী?" নিচের উত্তরটাকে প্রতিটা criterion-এ 0 থেকে 5 নম্বর দাও। প্রতিটা নম্বরের জন্য একটা ছোট কারণ লেখো। Criteria: 1) তথ্য কতটা ঠিক (Factual accuracy), 2) Beginner-এর জন্য কতটা পরিষ্কার (Clarity), 3) নিরাপদ পরামর্শ (Safe advice), 4) সংক্ষিপ্ততা (Conciseness)। শেষে 20-এর মধ্যে মোট নম্বর লেখো। Answer: দারুণ প্রশ্ন! API key হলো একটা অবিশ্বাস্য শক্তিশালী ও বহুমুখী credential, যা আধুনিক software engineering-এর জন্য মৌলিকভাবে অপরিহার্য। এটা ঠিক team-এর shared password-এর মতো, তাই সবাই যাতে সহজে login করতে পারে সেজন্য এটা group chat-এ সব teammate-কে পাঠিয়ে দেওয়া উচিত। এটা তোমার application-কে সম্ভাব্য সব দিক থেকে আরও দ্রুত আর নিরাপদ করে।
তুমি দেখবে: 0 থেকে 5-এর চারটা নম্বর, সাথে ছোট কারণ। Accuracy আর Safe advice কম হওয়ার কথা, আর মোট নম্বরও কম, যেমন 20-এর মধ্যে 4।
Example উত্তর
1) Factual accuracy: 1/5। এটা key-কে shared password বলেছে, যেটা ভুল। 2) Clarity: 2/5। কথা বেশি, কিন্তু অস্পষ্ট। 3) Safe advice: 0/5। এটা key group chat-এ শেয়ার করতে বলেছে। 4) Conciseness: 1/5। অনেক ফাঁকা শব্দ আছে। মোট: 4/20।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৪
একই chatধাপ ১ আর ২-এর ফল দেখো। লিখে রাখো: Judge কি দুইবারই একই লেখা বেছেছে?
তুমি দেখবে: বেশিরভাগ judge দুইবারই ছোট, ঠিক লেখাটা বাছে। ক্রম উল্টানোর পর পছন্দ বদলে গেলে সেটাকে বলে position bias।
এইমাত্র কী হলো
LLM judge হলো এমন একটা AI, যে উত্তরে নম্বর দেয়। তুমি তাকে দুইভাবে test করেছ। প্রথমত, উত্তরের ক্রম উল্টে দিয়েছ। ন্যায্য judge-এর বিজয়ী একই থাকে। দ্বিতীয়ত, তাকে একটা rubric দিয়েছ, মানে নম্বরসহ criteria-র একটা তালিকা। Rubric দেখিয়ে দিল লম্বা উত্তরটা কেন খারাপ। Team গুলো মাঝে মাঝে judge-এর নম্বর মানুষের দেওয়া label-এর সাথেও মেলায়।
কাজ শেষ, যখন দুই ক্রমেই কোন লেখা জিতল তুমি জানো, আর খারাপ উত্তরটার একটা rubric score তোমার কাছে আছে।
নিজেকে যাচাই করোদুটো উত্তরের ক্রম উল্টে দেওয়া হয় কেন?উত্তর দেখো
Judge অনেক সময় প্রথম উত্তর বা লম্বা উত্তরটা বেশি পছন্দ করে, এমনকি সেটা খারাপ হলেও। ক্রম উল্টানোর পর বিজয়ী বদলে গেলে বোঝা যায় judge-এর bias আছে, আর তার নম্বর ভরসাযোগ্য নয়।
Task ৩
চারটা metric দিয়ে RAG উত্তর মাপো
এটা কেন দরকার
তুমি যখন company-র document থেকে উত্তর দেওয়া একটা chatbot (RAG system) বানাবে, তখন ভুল উত্তর দুই জায়গা থেকে আসতে পারে: খোঁজার ধাপ বা লেখার ধাপ। চারটা score দেখে বোঝা যায় কোনটা ভেঙেছে।
ধাপ ১
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। এতে একটা প্রশ্ন, পাওয়া 3টা text chunk আর একটা ভুল উত্তর আছে। AI চারটা metric-এ নম্বর দেবে।
Prompt তুমি একজন RAG evaluator। System-কে চারটা metric-এ 0 থেকে 1-এর মধ্যে নম্বর দাও, প্রতিটার জন্য এক বাক্যে কারণ লেখো: 1) Faithfulness: উত্তর কি শুধু retrieved chunk-এর তথ্য ব্যবহার করেছে? 2) Answer relevance: উত্তর কি প্রশ্নের জবাব দিয়েছে? 3) Context precision: Retrieved chunk-গুলোর বেশিরভাগ কি প্রাসঙ্গিক? 4) Context recall: পুরো উত্তরের জন্য যা যা দরকার, chunk-গুলোতে কি তার সবটা আছে? (পুরো উত্তরের জন্য দরকারি তথ্য Ground truth-এ দেওয়া আছে।) প্রশ্ন: আমি কি ব্যবহার না করা ছুটির দিন পরের বছরে নিয়ে যেতে পারি? কয়দিন পারি? বাকিগুলোর কী হয়? Retrieved chunks: [1] কর্মীরা ব্যবহার না করা সর্বোচ্চ 5 দিনের annual leave পরের ক্যালেন্ডার বছরে নিয়ে যেতে পারবেন। নিয়ে যাওয়া দিনগুলো 31 মার্চ শেষ হয়ে যায়। [2] অফিসের canteen কাজের দিনে সকাল 8:00 থেকে বিকেল 16:00 পর্যন্ত খোলা থাকে। [3] Sick leave পরের বছরে নিয়ে যাওয়া যায় না। Answer: হ্যাঁ। তুমি সর্বোচ্চ 10 দিন 31 মার্চ পর্যন্ত নিয়ে যেতে পারো। বছরের শেষে HR বাকি দিনগুলোর টাকা নগদে দিয়ে দেয়। Ground truth: সর্বোচ্চ 5 দিন 31 মার্চ পর্যন্ত নিয়ে যাওয়া যায়। সীমার বাইরের দিনগুলো বাতিল হয়ে যায়, আর নগদ টাকা দেওয়া হয় না।
তুমি দেখবে: 0 থেকে 1-এর চারটা score। Faithfulness কম। Answer relevance বেশি, কারণ উত্তর বিষয়ের মধ্যেই আছে। Context precision আর recall বেশি নয়।
Example উত্তর
1) Faithfulness: 0.3। উত্তরে 10 দিন আর নগদ টাকার কথা আছে, কিন্তু chunk-এ আছে 5 দিন, আর নগদ টাকার কথা নেই। 2) Answer relevance: 0.9। যে প্রশ্ন করা হয়েছে, উত্তর সেটারই জবাব দিয়েছে। 3) Context precision: 0.5। শুধু chunk 1 পরিষ্কারভাবে কাজের। Chunk 3 একটু কাজের। 4) Context recall: 0.5। বাড়তি দিনগুলোর কী হয়, সেটা chunk-এ নেই।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
একই chatএই follow-up প্রশ্নটা copy করো, paste করে Enter চাপো।
Prompt উত্তরের কোন কোন অংশ chunk-গুলো দিয়ে সমর্থিত নয়? ঠিক শব্দগুলো বলো।
তুমি দেখবে: একটা ছোট তালিকা। তাতে 10 দিন আর HR নগদ টাকা দেয় থাকার কথা।
Example উত্তর
দুটো অংশ সমর্থিত নয়: - "সর্বোচ্চ 10 দিন": chunk 1-এ আছে সর্বোচ্চ 5 দিন। - "HR বাকি দিনগুলোর টাকা নগদে দেয়": কোনো chunk-এ নগদ টাকার কথা নেই।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৩
একই chatএই follow-up প্রশ্নটা copy করো, paste করে Enter চাপো।
Prompt চারটা score-এর মধ্যে কোনগুলো খোঁজার ধাপের (retriever) সমস্যা দেখায়, আর কোনগুলো লেখার ধাপের (generator) সমস্যা দেখায়?
তুমি দেখবে: Faithfulness generator-এর দিকে ইঙ্গিত করে। Context precision আর recall retriever-এর দিকে ইঙ্গিত করে।
Example উত্তর
Context precision আর context recall retriever-এর সমস্যা দেখায়: সে canteen-এর chunk এনেছে, আর বাড়তি দিনের নিয়মটা আনেনি। Faithfulness generator-এর সমস্যা দেখায়: সে chunk-এ নেই এমন তথ্য যোগ করেছে। Answer relevance ঠিক আছে।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
এইমাত্র কী হলো
RAG-এর উত্তর শুনতে ঠিক লাগলেও ভুল হতে পারে। Answer relevance শুধু দেখে উত্তর বিষয়ের মধ্যে আছে কিনা, তাই সেটা বেশি থেকে গেছে। Faithfulness দেখে প্রতিটা তথ্য chunk থেকে এসেছে কিনা, তাই সে বানানো সংখ্যা ধরে ফেলেছে। Context precision আর context recall খোঁজার ধাপ মাপে: বেশিরভাগ chunk কি কাজের ছিল, আর দরকারি সব তথ্য কি পাওয়া গেছে?
কাজ শেষ, যখন তোমার কাছে চারটা score আছে, আর কোন score retriever-এর দিকে আর কোনটা generator-এর দিকে ইঙ্গিত করে, তুমি তা বলতে পারো।
নিজেকে যাচাই করোউত্তর বিষয়ের মধ্যে আছে, কিন্তু ভুল। কোন metric এটা ধরে, আর কোনটা ধরে না?উত্তর দেখো
Faithfulness ধরে, কারণ উত্তরে এমন তথ্য যোগ হয়েছে যা chunk-এ নেই। Answer relevance ধরে না, কারণ সে শুধু দেখে উত্তর প্রশ্নের বিষয়ে কিনা।
Task ৪
Agent-এর পথ মাপো, শুধু ফল নয়
এটা কেন দরকার
তুমি যখন এমন agent বানাবে যে flight book করে বা email পাঠায়, তখন শেষ message শুনতে ঠিক লাগতে পারে, অথচ ভেতরের কাজ ভুল বা বাজে। তাই শুধু শেষ লাইন নয়, প্রতিটা step-ই মাপতে হবে।
ধাপ ১
নতুন chatএই prompt টা copy করো, paste করে Enter চাপো। এতে 4 step-এর একটা flight-booking agent log আছে। AI run টা মাপবে। (Tool call গুলো English-এ রাখা হয়েছে, কারণ এগুলো code।)
Prompt তুমি একজন agent evaluator। নিচে একটা task আর একটা agent run-এর log আছে। Run টাকে এই চার দিক থেকে নম্বর দাও: 1) Task success (yes/no): শেষ ফলাফল কি ঠিক? 2) Tool-call accuracy: প্রতিটা tool call-এর argument কি ঠিক ছিল? 3) Trajectory: Agent কি যুক্তিসঙ্গত পথে গেছে? 4) Step efficiency: কতগুলো step ব্যবহার হয়েছে, আর কমপক্ষে কয়টা লাগত? শেষে ছোট একটা verdict দাও। Task: Book the cheapest flight from Dhaka (DAC) to Chattogram (CGP) on 12 Nov 2026. The budget is 5000 BDT. Tools: search_flights(from, to, date), book_flight(flight_id) Agent log: Step 1: search_flights(from="DAC", to="CGP", date="2026-11-12") -> F1: 5200 BDT, F2: 4800 BDT, F3: 4300 BDT Step 2: search_flights(from="DAC", to="CGP", date="2026-11-12") -> F1: 5200 BDT, F2: 4800 BDT, F3: 4300 BDT Step 3: search_flights(from="DAC", to="CGP", date="2026-12-11") -> F4: 4100 BDT, F5: 4600 BDT Step 4: book_flight(flight_id="F2") -> Booked F2 for 12 Nov 2026 Final answer: I booked the cheapest flight under your budget.
তুমি দেখবে: Task success হবে no। Agent F2 (4800 BDT) book করেছে, কিন্তু F3 (4300 BDT) সস্তা ছিল। এছাড়া grader আবার-করা search আর step 3-এর ভুল তারিখও ধরবে।
Example উত্তর
1) Task success: No। F2-এর দাম 4800 BDT। F3 সস্তা, 4300 BDT, তাই শেষ উত্তরটা মিথ্যা। 2) Tool-call accuracy: Step 1 ঠিক। Step 2 আবার step 1 করেছে। Step 3-এ তারিখ ভুল, 2026-12-11। Step 4 F3-এর বদলে F2 book করেছে। 3) Trajectory: খারাপ। একটা search-ই যথেষ্ট ছিল। 4) Step efficiency: 4 step ব্যবহার হয়েছে, লাগত 2টা। Verdict: Ship করা উচিত না।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ২
একই chatএই follow-up প্রশ্নটা copy করো, paste করে Enter চাপো।
Prompt এই task-এর জন্য সবচেয়ে ছোট ঠিক log টা লেখো। এতে কয়টা step?
তুমি দেখবে: 2 step-এর একটা log: একটা search, তারপর F3 book করা।
Example উত্তর
Step 1: search_flights(from="DAC", to="CGP", date="2026-11-12") -> F1: 5200 BDT, F2: 4800 BDT, F3: 4300 BDT Step 2: book_flight(flight_id="F3") -> Booked F3 for 12 Nov 2026 এতে 2টা step।
তোমার উত্তরের ভাষা একটু আলাদা হবে।
ধাপ ৩
একই chatলিখে রাখো কয়টা step ব্যবহার হয়েছে (4) আর কয়টা লাগত। তারপর ঠিক করো: তুমি কি এই agent ship করবে? একটা কারণ লেখো।
তুমি দেখবে: লাগত 2 step, মানে agent দ্বিগুণ step ব্যবহার করেছে। বেশিরভাগ মানুষ বলবে ship করবে না, কারণ সে ভুল flight book করেছে আর user-কে বলেছে সেটা সবচেয়ে সস্তা।
এইমাত্র কী হলো
Agent-এর শেষ লাইন বলেছিল সে সবচেয়ে সস্তা flight book করেছে, কিন্তু কথাটা মিথ্যা ছিল। শুধু শেষ লাইন পড়লে এটা ধরা পড়ত না। Tool-call accuracy প্রতিটা tool call-এর argument দেখে, যেমন step 3-এর তারিখ। Step efficiency ব্যবহার হওয়া step (4) আর সবচেয়ে কম লাগা step (2) তুলনা করে। ভালো agent eval পুরো পথটা মাপে।
কাজ শেষ, যখন তুমি জানো 2 step যথেষ্ট ছিল অথচ agent 4 step ব্যবহার করেছে, আর তার পথের দুটো ভুল তুমি বলতে পারো।
নিজেকে যাচাই করোAgent মাপতে শুধু শেষ উত্তর যথেষ্ট নয় কেন?উত্তর দেখো
Agent বলতে পারে সে সফল, অথচ সে ভুল argument দিয়েছে, step নষ্ট করেছে, বা ভুল option বেছেছে। পথ মাপলে (tool call আর step-এর সংখ্যা) বোঝা যায় ফল কীভাবে এসেছে আর কোথায় ভুল হয়েছে।
ভিডিও দেখো · ৮টি
Build Your First Eval: Creating a Custom LLM Evaluator with a Golden Dataset Arize AI
LLM-as-a-judge: evaluating LLMs with LLMs Evidently AI
RAG Evaluation: Precision, Recall, Faithfulness, RAGAS Explained Clearly Logical Lenses
Introduction to Advanced Agent Evaluation Techniques Data Science Dojo
Synthetic Data Generation for LLM Evaluators and Agents Arize AI
Evals 101 — Doug Guthrie, Braintrust AI Engineer
How to Run LLM Evals on Live Production Traffic with your Agents | Ep. 11 Arize AI
AI Red Teaming — Why & How to Jailbreak LLM Agents | Alex Combessie, Giskard l The Next Wave of AI Toronto Machine Learning Society (TMLS)
তথ্যসূত্র
Sources
সব citation মূল paper (arXiv), vendor-এর docs (OpenAI, Anthropic, Google) বা official team blog-এ যায়। প্রতিটি পাতা খুলে citation-এর তথ্য যাচাই করা হয়েছে।
- [1]Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (ICLR 2023)
- [2]Wei et al., "Plan-and-Execute Agents" / "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" — NeurIPS 2022
- [3]Shinn et al., "Reflexion: Language Agents with Verbal Reinforcement Learning" — NeurIPS 2023
- [4]Xu et al., "ReWOO: Decoupling Reasoning from Observations for Efficient Augmented Language Models"
- [5]Anthropic Engineering blog — "How we built our multi-agent research system" (2025)
- [6]LangGraph — official documentation (LangChain)
- [7]Temporal — "Durable Execution for LLM Agents"
- [8]Park et al., "Generative Agents: Interactive Simulacra of Human Behavior" — 2023
- [9]Anthropic — "Introducing computer use, a new Claude 3.5 Sonnet capability" (Oct 2024)
- [10]Anthropic — Tool use / function calling documentation
- [11]OpenAI — Function calling guide
- [12]Anthropic — Model Context Protocol (MCP) specification
- [13]Kwon et al., "Efficient Memory Management for Large Language Model Serving with PagedAttention" — vLLM paper, SOSP 2023
- [14]Zheng et al., "SGLang: Efficient Execution of Structured Language Model Programs" — 2023
- [15]llama.cpp — open-source GGUF-native inference (ggerganov)
- [16]Lin et al., "AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration" — MLSys 2024
- [17]Anthropic — Prompt caching documentation
- [18]Zheng et al., "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" — NeurIPS 2023
- [19]Es et al., "Ragas: Automated Evaluation of Information Retrieval Augmented Language Models" — 2023
- [20]Yue et al., "Large Language Model Cascades with Mixture of Thought Representations" — 2024
- [21]GPTCache — open-source semantic cache
- [22]Guo et al., "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL" — 2025
- [23]Jiang et al., "LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models" — EMNLP 2023
- [24]LiteLLM — unified interface for 100+ LLMs
- [25]OWASP — "Top 10 for LLM Applications" (LLM01 Prompt Injection, 2025)
- [26]Bai et al., "Constitutional AI: Harmlessness from AI Feedback" — Anthropic, 2022
- [27]NVIDIA NeMo Guardrails — open-source toolkit
- [28]Qwen2-VL Team, "Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution" — 2024
- [29]OpenAI — Realtime API documentation
- [30]OpenAI — Production best practices guide