অধ্যায় 3 · ডকুমেন্টেশন ও তদারকি
মানুষের তদারকির ডিজাইন: অর্থবহ পর্যালোচনা, রাবার-স্ট্যাম্প নয়
- পৃষ্ঠা 11 / 22
- 16 মিনিট পড়া
"প্রতিটা ফল একজন মানুষ পর্যালোচনা করেন" শুনতে সুরক্ষার মতো। এটা সুরক্ষা হয় তখনই, যখন সেই মানুষ যথেষ্ট দেখতে পান, দ্বিমত করার ক্ষমতা রাখেন, বিচার করার সময় ও দক্ষতা আছে, এবং তাঁর কাছে চুপচাপ সম্মতি আশা করা হয় না। শুরুর টিউটোরিয়ালের উচ্চ-ঝুঁকির সিদ্ধান্ত, মানুষের তদারকি ও আপিল পাতায় ধারণাটা এসেছিল। এখানে আপনি এটা ডিজাইন করবেন: মানুষের ধাপ কোথায় বসবে, তার কী লাগবে, এবং লগ দেখে কীভাবে বুঝবেন কাজ করছে কি না।
আপনার দরকার Python 3.12, শুধু স্ট্যান্ডার্ড লাইব্রেরি: কোনো প্যাকেজ, নেটওয়ার্ক বা মডেল কল নেই। দ্বিতীয় অর্ধেকের কোড একটা পর্যালোচনা-লগ বিশ্লেষণ করে, আর তার সবকিছু বানানো।
সততার নিয়ম। এখানকার প্রতিটা মানুষ, কোম্পানি, নিয়ম ও সংখ্যা কাল্পনিক, আর লগে
Toy data:লেবেল দেওয়া। ফল শুধু দেখায় হিসাবটা কীভাবে কাজ করে; বাস্তব পর্যালোচকদের নিয়ে এটা কিছুই প্রমাণ করে না। লগের কোনো ধরন আরও ভালো করে দেখার কারণ, কোনো মানুষের ওপর রায় নয়। এখানকার কিছুই আইনি পরামর্শ নয়।
যা শিখবেন
- একটা ওয়ার্কফ্লোর উচ্চ-প্রভাবের সিদ্ধান্ত আর তাতে প্রভাবিত মানুষদের কীভাবে চিহ্নিত করবেন।
- AI আউটপুটকে চূড়ান্ত সিদ্ধান্তের সঙ্গে কীভাবে মেলাবেন, এবং পরামর্শমূলক ব্যবহার আর স্বয়ংক্রিয় সিদ্ধান্তের পার্থক্য কী।
- কী একটা ওভাররাইডকে সত্যিকারের করে: ক্ষমতা, দক্ষতা, প্রমাণ, সময় আর নিরাপদে দ্বিমত করার উপায়।
- অটোমেশন বায়াস, আপিল ও সংশোধন প্রক্রিয়া এবং ওভাররাইডের কারণ নিয়ে কীভাবে ডিজাইন করবেন।
- একটা পর্যালোচনা-লগ কীভাবে পড়বেন, আর কেন ১০০% সম্মতি মানের নয়, রাবার-স্ট্যাম্পের ইঙ্গিত হতে পারে।
উচ্চ-প্রভাবের সিদ্ধান্ত ও কারা প্রভাবিত
উচ্চ-প্রভাবের সিদ্ধান্ত ও প্রভাবিত পক্ষ চিহ্নিত করুন। প্রযুক্তি থেকে নয়, সিদ্ধান্ত থেকে শুরু করুন। কোনো সিদ্ধান্ত উচ্চ-প্রভাবের হয় তখন, যখন ভুল উত্তর কারও জীবিকা, স্বাস্থ্য, নিরাপত্তা, শিক্ষা, টাকাপয়সা, অপরিহার্য সেবার নাগাল বা অধিকারকে গুরুতরভাবে প্রভাবিত করতে পারে, বিশেষ করে ফেরানো কঠিন হলে। তিনটা প্রশ্ন করুন। কী সিদ্ধান্ত হচ্ছে? কার সম্পর্কে? ভুল হলে তাঁরা কী করতে পারেন?
কাল্পনিক পরিস্থিতি: কয়েক মাস পরের স্ক্রিনিং ফিচার।
Feature: ShortlistHelper v0.5 at Harbourline Staffing (invented).
Today: scores CVs from 0 to 100 and sorts them. Recruiters Sana, Ravi, Noor and Dalia
open the top 20% and invite people to interview.
Change: to save time, CVs scoring below 15 are marked "reject" in the system. A recruiter
can reverse a mark, but the applicant is not told either way.
Question: which decisions here are high-impact, for whom, and where is the human?| সিদ্ধান্ত | প্রভাবিত | ভুল হলে প্রভাব | ফেরানো সহজ? |
|---|---|---|---|
| CV পড়ার ক্রম | সব আবেদনকারী | মাঝারি: একটা CV হয়তো কখনও খোলাই হবে না | কঠিন: আবেদনকারী ঘটনাটা দেখতেই পান না |
| ইন্টারভিউয়ে ডাকা | আবেদনকারী, হায়ারিং ম্যানেজার | মাঝারি থেকে উচ্চ: একটা সুযোগ হারানো | কখনও কখনও |
| "reject" চিহ্ন দেওয়া | সীমার নিচের আবেদনকারী | উচ্চ: প্রক্রিয়া সেখানেই শেষ হতে পারে | কঠিন |
এমন সিদ্ধান্ত কোনো নির্দিষ্ট আইনে উচ্চ-ঝুঁকি বলে গণ্য হয় কি না, তা একটা আইনি প্রশ্ন, যা নির্ভর করে আইনের পাঠ, দেশ ও খাতের ওপর। নৈতিক প্রশ্নটা সহজ আর আগে আসে: ভুল উত্তর কতটা খারাপ, এবং তার ভার কার ওপর পড়ে।
AI আউটপুট থেকে চূড়ান্ত সিদ্ধান্ত
AI আউটপুটকে চূড়ান্ত সিদ্ধান্তের সঙ্গে মেলান। AI-এর আউটপুট থেকে মানুষের ওপর যা ঘটছে, সেই পর্যন্ত শৃঙ্খলটা লিখুন। তারপর প্রতিটা সংযোগকে পরামর্শমূলক (মানুষ ওজন করে), ডিফল্ট (মানুষ কিছু না করলে প্রযোজ্য হয়) বা স্বয়ংক্রিয় (কোনো মানুষের ধাপ নেই) হিসেবে চিহ্নিত করুন।
CV upload -> parser -> fit score 0-100 -> sorted list -> recruiter opens top 20%
-> interview list -> offer
Score 15 to 100, top 20% advisory a person opens the CV and decides
Score 15 to 100, lower 80% default nobody opens it unless a recruiter chooses to
Score below 15 automatic marked "reject"; a person may reverse it, rarely sees itপ্রভাবের বেশির ভাগ মাঝের লাইনে। সিস্টেম এই আবেদনকারীদের কখনও "না" বলে না, তবু ডিফল্টই কাজটা করে। এটাই শুরুর টিউটোরিয়ালের "যে সিদ্ধান্ত কেউ নেয় না" ধারণা, এখন ডিজাইনের সমস্যা হিসেবে লেখা।
পরামর্শমূলক ব্যবহার, নাকি স্বয়ংক্রিয় সিদ্ধান্ত
পরামর্শমূলক ব্যবহার আর স্বয়ংক্রিয় সিদ্ধান্তের পার্থক্য করুন। পরামর্শমূলক ব্যবহারে মানুষ সিদ্ধান্ত নেয়, AI-এর আউটপুট একটা ইনপুট মাত্র। স্বয়ংক্রিয় সিদ্ধান্তে আউটপুট মানুষের কোনো ধাপ ছাড়াই সিদ্ধান্ত হয়ে যায়। মাঝখানে একটা ঝুঁকিপূর্ণ জায়গা আছে: মানুষ আনুষ্ঠানিকভাবে আছেন, কিন্তু আউটপুট ডিফল্টে প্রযোজ্য হয় আর মানুষ একটা ক্লিকে "অনুমোদন" দেন। বাস্তবে অন্যরকম করা যাঁর পক্ষে সম্ভব নয়, ডায়াগ্রাম যা-ই বলুক, সিদ্ধান্তটা কার্যত স্বয়ংক্রিয়।
| ধরন | কীভাবে কাজ করে | প্রধান ঝুঁকি |
|---|---|---|
| পরামর্শমূলক | মানুষ সিদ্ধান্ত নেয়; স্কোর অনেক ইনপুটের একটা | স্কোরের ওপর অতিনির্ভরতা |
| অনুমোদনসহ ডিফল্ট | মানুষ আপত্তি না করলে আউটপুট প্রযোজ্য হয় | রাবার-স্ট্যাম্প; মানুষটা একটা আনুষ্ঠানিকতা |
| স্বয়ংক্রিয় | আউটপুট প্রযোজ্য হয়; মানুষের ধাপ নেই | ভুল ঘটলে প্রভাবিতদের জিজ্ঞেস করার কেউ থাকে না |
তিনটার কোনোটাই সব সময় ভুল নয়। কম-প্রভাবের, সহজে ফেরানো যায় এমন সিদ্ধান্তে, যেমন পড়ার তালিকা সাজানো, স্বয়ংক্রিয়তা যুক্তিসঙ্গত হতে পারে। সিদ্ধান্ত যত গুরুতর আর ফেরানো যত কঠিন, সত্যিকারের মানুষের পর্যালোচনার পক্ষে যুক্তি তত জোরালো। আপনার কর্মক্ষেত্রে মানুষ সম্পর্কে শুধু স্বয়ংক্রিয় সিদ্ধান্তের ওপর নিয়মও থাকতে পারে; কীভাবে খুঁজবেন তা দেখায় স্ট্যান্ডার্ড, নিয়ন্ত্রণ ও প্রয়োজন ম্যাপিং: কী, কার জন্য এবং কেন প্রযোজ্য।
আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): EU AI Act-এর Article 14-এর একটা অনানুষ্ঠানিক পাঠ অনুযায়ী, উচ্চ-ঝুঁকির AI সিস্টেম এমনভাবে ডিজাইন করতে হবে যেন ব্যবহারের সময় মানুষ কার্যকরভাবে তদারকি করতে পারে, ব্যবস্থাগুলো ঝুঁকি, স্বায়ত্তশাসন ও প্রেক্ষাপটের সঙ্গে সামঞ্জস্যপূর্ণ হবে। তদারককারীদের সক্ষম করতে হবে: সিস্টেমের সক্ষমতা ও সীমা বুঝতে এবং তা পর্যবেক্ষণ করতে; অটোমেশন বায়াস সম্পর্কে সচেতন থাকতে, বিশেষ করে যেখানে সিস্টেম মানুষের সিদ্ধান্তে পরামর্শ দেয়; আউটপুট সঠিকভাবে ব্যাখ্যা করতে; সিস্টেম ব্যবহার না করার বা তার আউটপুট উপেক্ষা, ওভাররাইড বা উল্টে দেওয়ার সিদ্ধান্ত নিতে; এবং হস্তক্ষেপ করতে বা সিস্টেম থামাতে। ইউরোপীয় কমিশনের টাইমলাইন (AI omnibus দ্বারা সংশোধিত) Annex III সিস্টেমের উচ্চ-ঝুঁকি নিয়মের জন্য ২০২৭-১২-০২ এবং Annex I-এ তালিকাভুক্ত নিয়ন্ত্রিত পণ্যের AI-এর জন্য ২০২৮-০৮-০২ উল্লেখ করেছে। কোনো নির্দিষ্ট সিস্টেম উচ্চ-ঝুঁকি কি না, তা আইনের পাঠের ওপর নির্ভর করে। সূত্রের ধরন: একটা অনানুষ্ঠানিক ধারা-পাঠের সাইট ও কমিশনের AI Service Desk টাইমলাইন; আপনার দেশ ও খাতের জন্য বর্তমান সরকারি পাঠ যাচাই করুন।
ক্ষমতা, নিয়ম ও দক্ষতা
কে সিস্টেমকে ওভাররাইড করতে পারেন, চিহ্নিত করুন। দলের নয়, ভূমিকার নাম বলুন, আর চারটা জিনিস যাচাই করুন: তিনি করতে অনুমোদিত (লিখিত ক্ষমতা), করতে সক্ষম (টুলে ওভাররাইডের বোতাম আছে, CV লুকানো নেই), করতে নিরাপদ (দ্বিমত করলে শাস্তি নেই) এবং বিষয়টা জানেন। চারটার একটাও না মিললে ওভাররাইড শুধু কাগজে আছে। পুরো ফিচার কে থামাতে পারেন, সেটাও লিখুন।
কখন মানুষের পর্যালোচনা বাধ্যতামূলক, ঠিক করুন। এটা মেজাজের ওপর ছাড়বেন না। এমন নিয়ম লিখুন যা নতুন সহকর্মীও প্রয়োগ করতে পারেন।
নমুনা পলিসি:
A person MUST read the whole CV before any "reject" mark stands.
A person MUST review when: the parser warns; the CV language was not tested; the applicant
asks for a person; the score is within 10 points of the cut; or two scores for the same
CV differ by more than 20 points.
A second person MUST check any override of a "reject" that the first reviewer made alone.
Reviewers MAY open any CV whatever its score, and are never penalised for an override.পর্যালোচকদের প্রাসঙ্গিক দক্ষতা আছে কি না, যাচাই করুন। মডেল যেসব জায়গায় ভুল করতে পারে, সেখানে দ্বিমত করার মতো জ্ঞান পর্যালোচকের থাকতে হবে। জিজ্ঞেস করুন তাঁর কী লাগবে, আর সেটা আছে কি না আপনি কীভাবে জানবেন।
| যা লাগবে | কেন | কীভাবে যাচাই |
|---|---|---|
| কাজটা ও তার আসল চাহিদা জানা | স্কোর কী বাদ দেয় তা দেখতে | হায়ারিং ম্যানেজার চাহিদা অনুমোদন করেন |
| স্কোর কী আর কী নয়, জানা | স্কোরকে রায় ভাবা এড়াতে | ছোট প্রশিক্ষণ আর কেস নিয়ে পরীক্ষা |
| সাধারণ ব্যর্থতার ধরন জানা (পার্সিং, ভাষা, প্রক্সি) | ঘনিষ্ঠভাবে দেখার কেস চিনতে | কার্ড পড়া; ইচ্ছাকৃত ভুল বসানো কেসে অনুশীলন |
| কেসের প্রমাণ পড়তে পারা | নম্বরে নয়, CV-তে বিচার করতে | একটা পর্যালোচনা দেখা; লগ মেলানো |
অটোমেশন বায়াস ও প্রমাণে প্রবেশাধিকার
পর্যালোচনা-পদ্ধতিতে অটোমেশন বায়াস চিহ্নিত করুন। অটোমেশন বায়াস (automation bias) হলো যথেষ্ট যাচাই না করে স্বয়ংক্রিয় পরামর্শ মেনে নেওয়ার প্রবণতা। গবেষণা-পর্যালোচনায় বলা হয়েছে, মানুষ স্বয়ংক্রিয় পরামর্শের ওপর বেশি নির্ভর করে, বিশেষজ্ঞরাও করেন, আর শুধু নির্দেশনায় এটা যায় না। তাই শুধু প্রশিক্ষণ নয়, পদ্ধতিটাই ডিজাইন করুন। উপায়ের মধ্যে আছে: স্কোর দেখানোর আগে পর্যালোচককে নিজের মত তৈরি করতে বলা, নম্বরের আগে প্রমাণ দেখানো, একটা নমুনায় অনুমোদনের জন্যও ছোট কারণ চাওয়া, কেস ঘুরিয়ে দেওয়া, আর সময়ের সঙ্গে দ্বিমত মাপা। প্রতিটায় সময় লাগে, তাই ঝুঁকি বেশি যেখানে সেখানে ব্যবহার করুন।
পর্যালোচকেরা সহায়ক প্রমাণ পান কি না, পরীক্ষা করুন। আপনার সামনে একটা সত্যিকারের পর্যালোচনা করতে বলুন আর ক্লিক গুনুন। পর্যালোচক আসল CV খুলতে পারেন কি না, পার্সার তা কীভাবে পড়েছে দেখতে পান কি না, স্কোর কিসের ওপর দাঁড়িয়ে তা দেখতে পান কি না, কেসের ইতিহাস দেখতে পান কি না? যিনি শুধু একটা নাম আর একটা নম্বর দেখেন, তিনি অনুমোদন করা ছাড়া বেশি কিছু করতে পারেন না।
আপিল, সংশোধন ও ওভাররাইডের কারণ
আপিল ও সংশোধন প্রক্রিয়া ডিজাইন করুন। প্রভাবিত মানুষের দরকার মানুষের চোখে দেখানোর অনুরোধ জানানোর, নিজের কথা বলার এবং এমন সিদ্ধান্ত পাওয়ার পথ যা তিনি বুঝতে পারেন। ডিজাইন করুন মানুষটার দিক থেকে।
টেমপ্লেট:
1 How to ask one clear route, in the languages applicants use, with no account needed
2 Who hears it a person who did not make the first decision and may overrule it
3 Time limit reply within a stated number of working days, with a reason
4 Evidence the applicant may add documents; the reviewer sees the original CV
5 Outcome keep, change, or reopen; the applicant is told which
6 Correction fix the record, then check whether others were affected the same way
7 Learning count appeals by cause every month and send patterns to the card owner৬ নম্বর ধাপটাই সবচেয়ে গুরুত্বপূর্ণ। একটা CV পার্সারের ভুলে ভুল পড়া হলে সম্ভবত আরও CV ভুল পড়া হয়েছে, আর একটা কেস ঠিক করলে কারণটা থেকে যায়।
ওভাররাইডের কারণ লিখে রাখুন। কারণ ওভাররাইডকে কাজের করে: এটা দেখায় মডেল কখন ব্যর্থ হয়, আর দ্বিতীয় একজনকে বিচারটা যাচাই করতে দেয়। এটা যেন অভিযোগের মতো না লাগে। নিচের কোড নিয়ম বসায় যে ওভাররাইডে কারণ-কোড লাগবে; তার পরের অংশগুলো একটা পুরোনো টুলের লগ বিশ্লেষণ করে, যেখানে কারণ ঐচ্ছিক ছিল।
# file: reviewlog.py
import random
REASONS = ("EVIDENCE_CONTRADICTS_SCORE", "PARSE_ERROR", "SKILL_NOT_IN_SCORE", "OTHER")
OTHER = {"advance": "hold", "hold": "advance"}
# Toy data parameters: reviewer -> (cases, P(catch an AI error), P(override a correct result),
# mean seconds, P(open the CV), P(write a reason))
REVIEWERS = {
"Sana": (60, 0.80, 0.04, 75, 0.85, 0.90),
"Ravi": (60, 0.55, 0.06, 40, 0.50, 0.60),
"Noor": (60, 0.00, 0.00, 6, 0.00, 0.00),
"Dalia": (60, 0.70, 0.30, 25, 0.40, 0.20),
}
def record(case, reviewer, ai, human, reason=None, evidence=False, seconds=0, borderline=False):
override = ai != human
if override and reason not in REASONS:
raise ValueError(f"case {case}: an override needs a valid reason code")
return {"case": case, "reviewer": reviewer, "ai": ai, "human": human, "override": override,
"reason": reason if override else None, "evidence": evidence,
"seconds": seconds, "borderline": borderline}
def old_log(seed=7):
"""Toy data: 240 invented reviews. ai_wrong is known here only because we made the data up."""
rng, rows, n = random.Random(seed), [], 0
for name, (cases, catch, false, mean, opens, why) in REVIEWERS.items():
for _ in range(cases):
n += 1
border = rng.random() < 0.35
ai_wrong = rng.random() < (0.35 if border else 0.10)
ai = rng.choice(("advance", "hold"))
override = rng.random() < (catch if ai_wrong else false)
human = OTHER[ai] if override else ai
reason = rng.choice(REASONS) if override and rng.random() < why else None
rows.append({"case": n, "reviewer": name, "ai": ai, "human": human,
"override": override, "reason": reason, "evidence": rng.random() < opens,
"seconds": max(2, round(rng.gauss(mean, mean * 0.4))),
"borderline": border, "ai_wrong": ai_wrong})
return rowsfrom reviewlog import record, REASONS
try:
record(101, "Sana", ai="hold", human="advance")
except ValueError as err:
print("REJECTED:", err)
print("valid codes:", ", ".join(REASONS))
row = record(101, "Sana", ai="hold", human="advance", reason="PARSE_ERROR",
evidence=True, seconds=80)
print("ACCEPTED:", row["case"], row["human"], row["reason"])REJECTED: case 101: an override needs a valid reason code
valid codes: EVIDENCE_CONTRADICTS_SCORE, PARSE_ERROR, SKILL_NOT_IN_SCORE, OTHER
ACCEPTED: 101 advance PARSE_ERRORএকটা টয় পর্যালোচনা-লগ
টয় ডেটা: ২৪০টা কাল্পনিক পর্যালোচনা, চারজন পর্যালোচকের প্রত্যেকের ৬০টা। জেনারেটর জানে AI কখন ভুল ছিল, তাই আমরা পর্যালোচকদের নিয়ে পড়তে পারি। বাস্তবে এটা আপনি জানবেন শুধু সেই নমুনার জন্য, যা দ্বিতীয় একজন স্বাধীনভাবে যাচাই করেছেন।
import statistics
from reviewlog import old_log, REVIEWERS
LOG = old_log()
print(len(LOG), "reviews; fields:")
print(" " + ", ".join(LOG[0]))
def pct(a, b):
return f"{100 * a / b:5.1f}" if b else " n/a"
def summary(rows):
n, over = len(rows), sum(r["override"] for r in rows)
secs = sorted(r["seconds"] for r in rows)
return {"n": n, "agree": pct(n - over, n), "override": pct(over, n),
"median_s": statistics.median(secs), "p90_s": secs[int(0.9 * n)],
"evidence": pct(sum(r["evidence"] for r in rows), n),
"reasons": f"{sum(1 for r in rows if r['override'] and r['reason'])}/{over}"}
head = ("reviewer", "n", "agree%", "over%", "med s", "p90 s", "CV opened%", "reasons")
print(f"{head[0]:<8}{head[1]:>3}" + "".join(f"{h:>11}" for h in head[2:]))
for name in REVIEWERS:
s = summary([r for r in LOG if r["reviewer"] == name])
print(f"{name:<8}{s['n']:>3}" + "".join(f"{s[k]:>11}" for k in
("agree", "override", "median_s", "p90_s", "evidence", "reasons")))240 reviews; fields:
case, reviewer, ai, human, override, reason, evidence, seconds, borderline, ai_wrong
reviewer n agree% over% med s p90 s CV opened% reasons
Sana 60 75.0 25.0 70.5 112 86.7 13/15
Ravi 60 86.7 13.3 39.0 59 41.7 4/8
Noor 60 100.0 0.0 6.0 9 0.0 0/0
Dalia 60 60.0 40.0 27.5 38 46.7 4/24নূরকে দেখুন: ১০০% সম্মতি, মিডিয়ান ৬ সেকেন্ড, আর তাঁর কোনো পর্যালোচনায় CV খোলা হয়নি। দালিয়া ৪০% কেসে ওভাররাইড করেন আর অল্প কয়েকটায় কারণ লেখেন। সানা ও রবি মাঝামাঝি। কাঁচা সম্মতি বলে না কে ভালো কাজ করছেন, তাই দেখুন প্রতিটা পর্যালোচনায় কত সময় লেগেছে।
BUCKETS = ((0, 10, "<10 s"), (10, 30, "10-29 s"), (30, 60, "30-59 s"), (60, 10**6, "60+ s"))
print(f"{'reviewer':<8}" + "".join(f"{label:>9}" for _, _, label in BUCKETS))
for name in REVIEWERS:
secs = [r["seconds"] for r in LOG if r["reviewer"] == name]
print(f"{name:<8}" + "".join(f"{sum(lo <= s < hi for s in secs):>9}" for lo, hi, _ in BUCKETS))reviewer <10 s 10-29 s 30-59 s 60+ s
Sana 0 1 21 38
Ravi 3 17 35 5
Noor 58 2 0 0
Dalia 1 34 25 0নূরর প্রতিটা পর্যালোচনা ১০ সেকেন্ডের কম সময়ে হয়েছে। এত সময়ে একটা পুরো CV পড়া সম্ভবত হয় না। দ্রুত হওয়া অসতর্কতার প্রমাণ নয়, কিন্তু তিনি কী দেখছেন তা জিজ্ঞেস করার কারণ।
সম্মতি মানে মান নয়
শুধু সম্মতির হার মানে হতে পারে ভালো AI আর সহজ কেস। এটাকে রাবার-স্ট্যাম্প থেকে আলাদা করতে কঠিন কেস দেখুন, আর AI ভুল করলে কী হয় তা দেখুন। টয় ডেটায় আমরা দুটোই জানি। ধরার হার (catch rate) হলো AI-এর ভুল ফলের যে অংশ পর্যালোচক ওভাররাইড করেছেন। ভুল ওভাররাইডের হার হলো AI-এর সঠিক ফলের যে অংশ পর্যালোচক ওভাররাইড করেছেন।
def frac(hit, total):
return f"{hit}/{total} ({pct(hit, total).strip()}%)"
print(f"{'reviewer':<8}{'agree, borderline':>19}{'catch (AI wrong)':>20}{'false (AI right)':>20}")
for name in REVIEWERS:
rows = [r for r in LOG if r["reviewer"] == name]
border = [r for r in rows if r["borderline"]]
wrong = [r for r in rows if r["ai_wrong"]]
right = [r for r in rows if not r["ai_wrong"]]
print(f"{name:<8}{frac(sum(not r['override'] for r in border), len(border)):>19}"
f"{frac(sum(r['override'] for r in wrong), len(wrong)):>20}"
f"{frac(sum(r['override'] for r in right), len(right)):>20}")reviewer agree, borderline catch (AI wrong) false (AI right)
Sana 17/27 (63.0%) 14/15 (93.3%) 1/45 (2.2%)
Ravi 19/26 (73.1%) 5/12 (41.7%) 3/48 (6.2%)
Noor 19/19 (100.0%) 0/11 (0.0%) 0/49 (0.0%)
Dalia 11/17 (64.7%) 6/8 (75.0%) 18/52 (34.6%)নূর AI-এর একটা ভুলও ধরেননি। তাঁর ১০০% সম্মতির মানে AI সঠিক ছিল তা নয়; মানে তাঁর সিদ্ধান্ত কখনও নির্ভর করেনি AI সঠিক ছিল কি না তার ওপর। সানা প্রায় সব ভুল ধরেছেন আর সঠিক ফল খুব কমই ওভাররাইড করেছেন। দালিয়া অনেক ধরেছেন, কিন্তু সঠিক ফলও প্রায়ই ওভাররাইড করেছেন, তাই বেশি ওভাররাইডও মান নয়। রবি অর্ধেকের কম ধরেন। চারজনের জন্য চার রকম সাড়া লাগে: নূরর জন্য বদলানো পদ্ধতি, দালিয়ার জন্য সহায়তা ও পরিষ্কার নিয়ম, সানার কাছ থেকে শেখার একটা উদাহরণ, আর রবিের জন্য বেশি সময় বা প্রমাণ।
সীমা। বাস্তব অডিট একটা নমুনা ঢাকে, আর প্রতি পর্যালোচকের এক ডজন ভুল ফলের নমুনা বিভ্রান্ত করার মতো ছোট। টয় ডেটায় প্রতি পর্যালোচকের প্রায় এক ডজন আছে। এই সংখ্যাগুলো পদ্ধতি শেখার জন্য ব্যবহার করুন, কাউকে বিচার করতে নয়। ভালো AI ও সহজ কেস রাবার-স্ট্যাম্প ছাড়াই উচ্চ সম্মতি দিতে পারে; তাই গতি, প্রমাণের ব্যবহার আর ধরার হার একসঙ্গে দেখা হয়।
কাজের জায়গায় এটা কোথায় দেখা যায়
যে দলগুলো মানুষের পর্যালোচনার ওপর নির্ভর করে, তারা পর্যালোচনাগুলোও পরীক্ষা করে: প্রতি কেসের সময়, প্রমাণ কতবার খোলা হয়, পর্যালোচক ও কেসের ধরনভেদে ওভাররাইডের হার, আর দ্বিতীয় একজনের পুনরায় যাচাই করা নমুনা। তারা কাজের চাপও দেখে, কারণ পলিসি যা-ই বলুক, অনেক কেস পাওয়া পর্যালোচক দ্রুত অনুমোদন করেন (পরের পাতা এতে ফিরবে)।
সাধারণ ভুল
- "একজন মানুষ লুপে আছেন" কথাটাই পুরো সুরক্ষা। জিজ্ঞেস করুন মানুষটা কী দেখেন, কী করতে পারেন, আর কতটা সময় পান।
- উচ্চ সম্মতির হারকে ভালো খবর ধরা। এর মানে ভালো মডেল হতে পারে, আবার আনুষ্ঠানিকতাও। গতি, প্রমাণ আর ধরার হার দেখুন।
- ওভাররাইডের জন্য শাস্তি। দ্বিমত করা ব্যয়বহুল হলে মানুষ করা ছেড়ে দেয়। কারণ লেখাকে শেখার হাতিয়ার করুন।
- যে আপিল সেই একই মানুষের কাছে ফিরে যায়। প্রথম সিদ্ধান্তদাতা একা আপিল শুনবেন না।
- শুধু একটা কেস ঠিক করা। একই কারণে অন্যরাও প্রভাবিত হয়েছেন কি না দেখুন।
নিজে চেষ্টা করুন
এই পাতার নেমস্পেস ব্যবহার করুন। অনুশীলনগুলো শুরুর টিউটোরিয়ালের আস্থা, যাচাই ও অটোমেশন বায়াস: AI-এর আউটপুটে কখন ভরসা করবেন পাতাটা আবার ছোঁয়।
- সহজ। প্রতিটাকে পরামর্শমূলক, অনুমোদনসহ ডিফল্ট, বা স্বয়ংক্রিয় বলে চিহ্নিত করুন: (ক) স্কোর দেখানো হয় আর রিক্রুটার বেছে নেন; (খ) ১৫-র নিচের CV-তে reject চিহ্ন পড়ে এবং কেউ না ফেরালে থেকে যায়; (গ) সীমার নিচের মেইল সিস্টেম মুছে দেয়।
- মাঝারি। এক আবেদনকারী বলছেন, পার্সার তাঁর লেআউট ভুল পড়ায় তাঁর CV-তে "reject" চিহ্ন পড়েছে। তাঁর কেসের জন্য আপিল টেমপ্লেটের ১ থেকে ৬ নম্বর ধাপ এক বাক্যে করে পূরণ করুন।
- কঠিন। এমন কোড লিখুন যা সেই পর্যালোচককে ফ্ল্যাগ করে যাঁর লগে তিনটাই মেলে: সম্মতি ৯৮% বা বেশি, মিডিয়ান পর্যালোচনা-সময় ১০ সেকেন্ডের কম, আর ১০%-এর কম পর্যালোচনায় CV খোলা। ফ্ল্যাগটা "আরও ভালো করে দেখুন" হিসেবে প্রিন্ট করুন, রায় হিসেবে নয়।
উত্তর
সহজ। (ক) পরামর্শমূলক; (খ) অনুমোদনসহ ডিফল্ট (মানুষ কিছু না করলে আউটপুট প্রযোজ্য হয়; সত্যিই স্বয়ংক্রিয় কি না, তা নির্ভর করে কেউ কতবার ফেরান তার ওপর); (গ) স্বয়ংক্রিয়।
পাস চেকলিস্ট: (খ)-কে ঝুঁকিপূর্ণ মাঝের ধরন বলে চেনে, পরামর্শমূলক বলে নয়। দুর্বল উত্তর (খ)-কে "মানুষের তদারকি" বলে, কারণ মানুষ পদক্ষেপ নিতে পারতেন।
মাঝারি। একটা ভালো উত্তর: (১) তিনি একটা নির্দিষ্ট ঠিকানায় লেখেন বা "মানুষ চাই" লিঙ্ক ব্যবহার করেন; অ্যাকাউন্ট লাগে না। (২) প্রথম রিক্রুটার ছাড়া অন্য কেউ আসল CV পড়েন। (৩) নির্ধারিত কর্মদিবসের মধ্যে কারণসহ উত্তর আসে। (৪) তিনি সংশোধিত ফাইল জুড়ে দিতে পারেন। (৫) ফল "পুনরায় খোলা", তাঁকে জানানো হয়, আর তাঁর CV হাতে আবার স্কোর করা হয়। (৬) পার্সারের ত্রুটি লগে লেখা হয়, আর একই লেআউটের অন্য CV আবার যাচাই করা হয়।
পাস চেকলিস্ট: অন্য একজন শোনেন; আসল CV দেখা হয়; তাঁকে ফল জানানো হয়; তাঁর কেসের বাইরেও কারণ খোঁজা হয়। দুর্বল উত্তর শুধু তাঁর CV আবার খোলে।
কঠিন।
for name in REVIEWERS:
s = summary([r for r in LOG if r["reviewer"] == name])
flags = []
if float(s["agree"]) >= 98:
flags.append(f"agreement {s['agree'].strip()}%")
if s["median_s"] < 10:
flags.append(f"median {s['median_s']} s")
if float(s["evidence"]) < 10:
flags.append(f"CV opened in {s['evidence'].strip()}%")
if len(flags) == 3:
print(name, "- look closer:", "; ".join(flags))Noor - look closer: agreement 100.0%; median 6.0 s; CV opened in 0.0%পাস চেকলিস্ট: তিনটা শর্তই একসঙ্গে লাগে; বার্তাটা আরও ভালো করে দেখতে বলে; বাকি তিনজনের কেউ ফ্ল্যাগ হননি। ভালো উত্তর যোগ করে যে প্রথম ধাপ হলো পর্যালোচকের সঙ্গে কথা বলা আর কাজের চাপ দেখা। দুর্বল উত্তর প্রিন্ট করে "রাবার-স্ট্যাম্পার"।
সারসংক্ষেপ
- ভুল উত্তর কার কী ক্ষতি করে তা দেখে উচ্চ-প্রভাবের সিদ্ধান্ত চিহ্নিত করুন, আর AI আউটপুট থেকে চূড়ান্ত সিদ্ধান্ত পর্যন্ত শৃঙ্খলটা লিখুন।
- পরামর্শমূলক, অনুমোদনসহ ডিফল্ট আর স্বয়ংক্রিয় আলাদা; মাঝেরটা বাস্তবে অটোমেশন হতে পারে।
- সত্যিকারের ওভাররাইডে লাগে ক্ষমতা, সামর্থ্য, নিরাপদে দ্বিমতের সুযোগ ও সচেতনতা, সঙ্গে দক্ষতা, প্রমাণ ও সময়।
- অটোমেশন বায়াসের বিরুদ্ধে ডিজাইন করুন, অন্য কেউ শোনেন এমন আপিল দিন, আর ওভাররাইডের কারণ শেখার হাতিয়ার হিসেবে লিখুন।
- লগ পড়ুন: সম্মতি, সময়, প্রমাণের ব্যবহার আর ধরার ও ভুল-ওভাররাইডের হার একসঙ্গে। ১০০% সম্মতি রাবার-স্ট্যাম্প বোঝাতে পারে।
এরপর: উচ্চ-ঝুঁকির ব্যবহার ও ব্যবহার-বন্ধের নিয়ম: আপিল, এসকেলেশন ও বিকল্প পাতায় এই ডিজাইনগুলো নিয়োগ, ঋণ, চিকিৎসা, শিক্ষা ও সরকারি সিদ্ধান্তে প্রয়োগ হবে, সঙ্গে কখন একটা ফিচার বন্ধ করতে হবে তার নিয়ম।