অধ্যায় 1 · ঝুঁকি ও ফ্রেমওয়ার্ক
স্ট্যান্ডার্ড, নিয়ন্ত্রণ ও প্রয়োজন ম্যাপিং: কী, কার জন্য এবং কেন প্রযোজ্য
- পৃষ্ঠা 4 / 22
- 19 মিনিট পড়া
নীতি বলে কী গুরুত্বপূর্ণ। স্ট্যান্ডার্ড বলে একটা সংস্থা কীভাবে তার কাজ সাজাতে পারে। আইন বলে আপনাকে কী করতে হবে বা করা যাবে না, আর একটা কর্তৃপক্ষ তা প্রয়োগ করতে পারে। গভর্ন্যান্সের একটা সাধারণ ভুল হলো একটাকে আরেকটা ভাবা। এই পাতা সেগুলো আলাদা করে, আইনি প্রশ্নের মীমাংসার ভান না করে একটা ফিচারকে ঝুঁকিভিত্তিক আইনের সঙ্গে মেলায়, আর এমন একটা সারণি বানায় যা প্রতিটা প্রয়োজনকে প্রমাণের সঙ্গে জোড়ে এবং প্রমাণ না থাকলে MISSING বলে।
আপনার দরকার Python 3.12 এবং শুধু তার স্ট্যান্ডার্ড লাইব্রেরি। প্রতিটা পাতা নতুন ফোল্ডারে চলে, তাই একমাত্র সহায়ক ফাইলটা # file: ব্লকে তৈরি হয়। ব্লকগুলো ক্রমে একটা সেশনে লিখুন; প্রতিটা ব্লকের নিচের লেখাটা তার আসল আউটপুট। এই পাতা দাঁড়িয়ে আছে নীতি ও ফ্রেমওয়ার্ক বাস্তবে: মূল্যবোধ থেকে পরীক্ষাযোগ্য নিয়ন্ত্রণ পাতার ওপর; পটভূমির জন্য বিগিনার পাতা ফ্রেমওয়ার্ক, স্ট্যান্ডার্ড ও পরস্পরবিরোধী নীতি: নৈতিকতা, আইন ও পলিসি দেখুন।
সততার নিয়ম। প্রতিটা ডেটাসেট কৃত্রিম এবং
Toy data:লেবেল দেওয়া; এজেন্সি, তার টুল ও সংখ্যা কাল্পনিক। আইন ও স্ট্যান্ডার্ড বাস্তব এবং ঘন ঘন বদলায়। আইন-সংক্রান্ত সবকিছু একটা তারিখ-দেওয়া আইনি নোটে আছে, কোর্সের ২০২৬-১০-১২ তারিখের উৎস-যাচাই থেকে নেওয়া, এবং তা আইনি পরামর্শ নয়। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
যা শিখবেন
- স্বেচ্ছামূলক নীতি, স্ট্যান্ডার্ড ও আইন কীভাবে আলাদা, এবং কেন এই পার্থক্য আপনি কী দাবি করতে পারেন তা ঠিক করে।
- একটা ব্যবহারকে ঝুঁকিভিত্তিক কাঠামোর সঙ্গে (উদাহরণ EU AI Act) কীভাবে মেলাবেন, এবং কমপ্লায়েন্সের কোনো দাবির আগে প্রযোজ্য তারিখ কীভাবে যাচাই করবেন।
- কোন দেশ, খাত ও কর্তৃপক্ষ প্রযোজ্য তা কীভাবে খুঁজবেন, এবং আইনি প্রশ্নের নিজে উত্তর না দিয়ে তা কীভাবে লিখে রাখবেন।
- প্রয়োজন থেকে প্রমাণ পর্যন্ত এমন সারণি, যা
MISSINGজানায়, এবং দুটো ফ্রেমওয়ার্ক সমান ধরে না নিয়ে কীভাবে তুলনা করবেন। - ফ্রেমওয়ার্কের সংস্করণ ও পর্যালোচনার তারিখ কীভাবে লিখে রাখবেন।
নীতি, স্ট্যান্ডার্ড, আইন
স্ট্যান্ডার্ডকে আইন বা বিধি থেকে আলাদা করুন।
| স্বেচ্ছামূলক নীতি | ফ্রেমওয়ার্ক বা স্ট্যান্ডার্ড | আইন বা বিধি | |
|---|---|---|---|
| উদাহরণ | OECD AI Principles; UNESCO Recommendation | NIST AI RMF; ISO/IEC 42001 (প্রতিবেদন অনুযায়ী) | EU AI Act |
| কে প্রকাশ করে | আন্তঃসরকারি সংস্থা | একটা সরকারি সংস্থা; একটা স্ট্যান্ডার্ড সংস্থা | একটা আইনসভা |
| কাদের মানতে হয় | নিজে থেকে কাউকে নয় | নিজে থেকে কাউকে নয়; গ্রাহক বা চুক্তি তা চাইতে পারে | যারা এর পরিধির মধ্যে পড়ে |
| কে যাচাই করে | ডিফল্টে কেউ নয় | আপনি, বা যে স্ট্যান্ডার্ডের স্কিম আছে তার জন্য বাইরের সংস্থা | কর্তৃপক্ষ, জরিমানাসহ |
| কী লিখতে পারবেন | "informed by" (অনুপ্রাণিত) | "aligned with"; "certified to" শুধু সার্টিফিকেট থাকলে | "compliant with", শুধু আইনি যাচাইয়ের পর |
একটা স্বেচ্ছামূলক স্ট্যান্ডার্ড মানলেই নিজে থেকে কোনো আইন মানা হয়ে যায় না, আর কোনো স্ট্যান্ডার্ড না মানলেও আইন আপনার ওপর প্রযোজ্য হতে পারে। নৈতিক উদ্বেগ, আইনি বাধ্যবাধকতা ও কোম্পানির পলিসি তিনটা আলাদা জিনিস; এই পাতা বেশির ভাগ দ্বিতীয়টা নিয়ে।
একটা ঝুঁকিভিত্তিক কাঠামো: EU AI Act
EU AI Act-এর ঝুঁকিভিত্তিক পদ্ধতি পরীক্ষা করুন।
আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): EU AI Act (Regulation (EU) 2024/1689) AI-এর জন্য সমন্বিত, ঝুঁকিভিত্তিক নিয়ম ঠিক করে। ইউরোপীয় কমিশন চারটা স্তর বর্ণনা করে: অগ্রহণযোগ্য ঝুঁকি (নিষিদ্ধ), উচ্চ ঝুঁকি, স্বচ্ছতা-ঝুঁকি, এবং ন্যূনতম বা কোনো ঝুঁকি নয়। এটা কার্যকর হয় ২০২৪ সালের ১ আগস্ট। এটা EU-র বাইরের সংস্থার ওপরও প্রযোজ্য হতে পারে, তাই এর পরিধি দেখে নিন। কমিশনের তালিকা-করা নিষিদ্ধ চর্চার উদাহরণের মধ্যে আছে সামাজিক স্কোরিং এবং মুখের ছবির লক্ষ্যহীন সংগ্রহ। উচ্চ-ঝুঁকির সিস্টেমের জন্য সে যেসব ক্ষেত্রের নাম দেয় তার মধ্যে আছে গুরুত্বপূর্ণ অবকাঠামো, শিক্ষা, কর্মসংস্থান, অপরিহার্য সেবা, আইন-প্রয়োগ, অভিবাসন ও বিচার; কোনো নির্দিষ্ট সিস্টেম উচ্চ-ঝুঁকির কি না তা নির্ভর করে আইনের লেখার ওপর। উচ্চ-ঝুঁকির সিস্টেমের জন্য সে যেসব দায়িত্ব তালিকা করে তার মধ্যে আছে ঝুঁকি ব্যবস্থাপনা, ডেটার মান, লগ রাখা, নথিপত্র, ডিপ্লয়ারদের জন্য তথ্য, মানুষের তদারকি, দৃঢ়তা, সাইবারনিরাপত্তা ও নির্ভুলতা। বেশির ভাগ ব্যবহার ন্যূনতম স্তরে পড়ে, যেখানে গোপনীয়তা, ভোক্তা ও কপিরাইট আইন তবু প্রযোজ্য হতে পারে। উৎসের ধরন: কমিশনের AI Act-এর পাতা এবং EUR-Lex-এ থাকা পাঠ। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
এই কাঠামো ব্যবহার ধরে সাজায়, প্রযুক্তি ধরে নয়: একই মডেল স্প্যাম ফিল্টারে ন্যূনতম ঝুঁকি হতে পারে, আবার নিয়োগে উচ্চ-ঝুঁকির ক্ষেত্রে পড়তে পারে। এটা ভূমিকার নামও দেয়। ওপরের দায়িত্বগুলো বেশির ভাগ পড়ে প্রোভাইডারের (যিনি সিস্টেমটা বাজারে আনেন) এবং ডিপ্লয়ারের (যিনি তা ব্যবহার করেন) ওপর; আপনি কোনটা তা একটা আইনি প্রশ্ন।
একটা ব্যবহারকে ঝুঁকিভিত্তিক নিয়ন্ত্রক কাঠামোর সঙ্গে মেলান। কোড কমিশনের বিভাগগুলোকে প্রশ্নে বদলায়। সে কখনো বলে না একটা সিস্টেম উচ্চ-ঝুঁকি হয়; সে বলে "candidate" এবং আপনাকে মূল পাঠে পাঠায়।
টয় ডেটা: কাল্পনিক এজেন্সিতে চারটা কাল্পনিক ব্যবহার।
HIGH_AREAS = ("critical infrastructure", "education", "employment", "essential services",
"law enforcement", "migration", "justice", "biometrics") # areas named by the Commission
BANNED_EXAMPLES = ("social scoring", "untargeted scraping of facial images") # examples it lists
def hint(use):
"""A question generator, not a classification: every answer says 'candidate'."""
if use["does"] in BANNED_EXAMPLES:
return "candidate: banned practice; stop and ask a specialist"
if use["area"] in HIGH_AREAS:
return f"candidate: high-risk area ({use['area']}); read the legal text"
if use["talks_to_people"]:
return "candidate: transparency duty (tell people it is AI); check"
return "likely minimal risk; other laws still apply"
USES = [ # Toy data: invented uses at the invented agency
dict(name="CV ranking and summaries", area="employment", does="ranks job applicants", talks_to_people=False),
dict(name="Applicant FAQ chatbot", area="none", does="answers questions", talks_to_people=True),
dict(name="Inbox spam filter", area="none", does="filters email", talks_to_people=False),
dict(name="Scores people's behaviour", area="none", does="social scoring", talks_to_people=False),
]
for u in USES:
print(f"{u['name']:<27}{hint(u)}")CV ranking and summaries candidate: high-risk area (employment); read the legal text
Applicant FAQ chatbot candidate: transparency duty (tell people it is AI); check
Inbox spam filter likely minimal risk; other laws still apply
Scores people's behaviour candidate: banned practice; stop and ask a specialistCV র্যাংকিং টুল প্রার্থী, কারণ নিয়োগ নাম-করা ক্ষেত্রগুলোর একটা, আর চ্যাটবট স্বচ্ছতা-স্তরের প্রার্থী। চতুর্থ ব্যবহারটা ইচ্ছে করে একটা নিষিদ্ধ উদাহরণের মতো করে বানানো; বাস্তব ক্ষেত্র এত স্পষ্ট হয় কমই। একটা হিন্ট প্রশ্ন তোলে; শ্রেণিবিভাগ করে না।
দাবির আগে প্রযোজ্য তারিখ যাচাই
সম্মতির দাবি করার আগে EU AI Act-এর বর্তমান প্রযোজ্য তারিখ যাচাই করুন। এই আইনের তারিখ সরেছে। ২০২৪ সালের পুরনো সারসংক্ষেপে উচ্চ-ঝুঁকির নিয়মের আগের তারিখ আছে, যা এখন সেকেলে।
আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): কমিশনের AI Service Desk-এর টাইমলাইন পাতা, যা বলছে AI omnibus-এর সংশোধনী বিবেচনায় নেওয়া হয়েছে, নিচের আউটপুটের তারিখগুলো দেয়। কমিশনের ডিজিটাল-স্ট্র্যাটেজি পাতা AI omnibus-কে গৃহীত বলে তালিকা করে, ২০২৬ সালের ২৭ জুলাই থেকে কার্যকর, এবং উচ্চ-ঝুঁকির বাধ্যবাধকতা পিছিয়ে ২০২৭ সালের ২ ডিসেম্বর (Annex III সিস্টেম) ও ২০২৮ সালের ২ আগস্ট (Annex I-এর আওতাভুক্ত পণ্যে AI) করেছে বলে জানায়। টাইমলাইন পাতা ২০২৬-১২-০২, ২০২৭-১২-০২ ও ২০২৮-০৮-০২ "amended" বলে চিহ্নিত করে। কমিশনের আরেকটা পাতা, Service Desk FAQ, এখনো পরিবর্তনগুলোকে কমিশনের প্রস্তাব বলে বর্ণনা করে, অর্থাৎ কমিশনের নিজের পাতাগুলোও পুরোপুরি মেলে না। EUR-Lex-এর আইনের পাঠ এই কোর্সের জন্য পড়া যায়নি, তাই omnibus-এর কোনো রেগুলেশন নম্বর দেওয়া হয়নি এবং কোনো তারিখকে শর্তহীন বলা হয়নি। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
পরিবর্তনগুলো গৃহীত নাকি প্রস্তাবিত, এই প্রশ্নই বোঝায় কেন দাবির জন্য মূল পাঠ দরকার। পরের ব্লক তারিখগুলো ছাপে, আর তথ্যের তারিখে প্রতিটা প্রযোজ্য কি না তা দেখায়।
from datetime import date
AS_OF = date(2026, 10, 12) # the date these facts were checked
TIMELINE = [ # (date, what): as listed on the Commission's AI Service Desk timeline page
("2024-08-01", "Act enters into force"),
("2025-02-02", "definitions, AI literacy, first prohibitions"),
("2025-08-02", "obligations for general-purpose AI models; governance; national authorities"),
("2026-08-02", "most rules and enforcement, including Article 50"),
("2026-12-02", "new ban: sexual deepfakes without consent, child sexual abuse material"),
("2027-08-02", "each Member State has at least one regulatory sandbox"),
("2027-12-02", "high-risk rules for Annex III systems (date amended)"),
("2028-08-02", "high-risk rules for AI in regulated products, Annex I (date amended)"),
]
for day, what in TIMELINE:
status = "applies" if date.fromisoformat(day) <= AS_OF else "not yet"
print(f"{day} {status:<8}{what}")2024-08-01 applies Act enters into force
2025-02-02 applies definitions, AI literacy, first prohibitions
2025-08-02 applies obligations for general-purpose AI models; governance; national authorities
2026-08-02 applies most rules and enforcement, including Article 50
2026-12-02 not yet new ban: sexual deepfakes without consent, child sexual abuse material
2027-08-02 not yet each Member State has at least one regulatory sandbox
2027-12-02 not yet high-risk rules for Annex III systems (date amended)
2028-08-02 not yet high-risk rules for AI in regulated products, Annex I (date amended)Harbourline-এর টুল উচ্চ-ঝুঁকির হলে (একটা খোলা প্রশ্ন) Annex III সারিটাই প্রাসঙ্গিক তারিখ, আর সেটা এখনো আসেনি। তার মানে "কিছু করার নেই" নয়: অন্য সারি, অন্য আইন ও কোম্পানির পলিসি এখনই প্রযোজ্য হতে পারে। আর "আমরা AI Act মেনে চলি" বলতে একটা গৌণ পাতার তারিখ-সারণির চেয়ে বেশি লাগে: মূল পাঠ, একজন নির্দিষ্ট পাঠক এবং আইনি যাচাই।
দেশ, খাত ও কর্তৃপক্ষ
প্রযোজ্য দেশ, খাত ও দায়িত্বপ্রাপ্ত কর্তৃপক্ষ চিহ্নিত করুন। নিয়ম নির্ভর করে সংস্থা কোথায়, প্রভাবিত মানুষ কোথায়, ব্যবহারটা কোন খাতে (নিয়োগ, স্বাস্থ্য, অর্থ) এবং আপনার ভূমিকা কী তার ওপর। EU AI Act-এর জন্য কমিশন নাম দেয় EU স্তরে AI Office (সাধারণ-উদ্দেশ্যের AI মডেলের জন্য) এবং বেশির ভাগ অন্য ব্যবহারের জন্য জাতীয় বাজার-তদারকি ও উপযুক্ত কর্তৃপক্ষ; জাতীয় কর্তৃপক্ষের নাম এই কোর্সের জন্য যাচাই হয়নি, তাই আপনারটা একটা সরকারি সাইটে খুঁজুন। বেশির ভাগ দেশে গোপনীয়তার আইন আর গোপনীয়তা-নিয়ন্ত্রকও আছে। এমন একটা শিট ভরুন, আর অজানা ঘরগুলো দৃশ্যমান অজানা রাখুন।
ওয়ার্কশিট:
Where is the organisation based? ______________________ (UNKNOWN until written down)
Where do the affected people live? ______________________
Which sector is the use in? ______________________ (hiring, health, finance ...)
Our role for this tool provider | deployer | user | not sure (LQ2)
Rules that may apply (name, version, date) ______________________ found on: ____________
AI authority for this use ______________________ found on: ____________
Data-protection authority ______________________ found on: ____________
Sector regulator, if any ______________________ found on: ____________
Checked by / on ______________________আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): GDPR-এর অধীনে, একটা অনানুষ্ঠানিক পাঠ-সাইট থেকে সহজ ভাষায় (সরকারি পাঠ EUR-Lex-এ): ২২ নম্বর অনুচ্ছেদ মানুষকে এমন সিদ্ধান্তের অধীন না হওয়ার অধিকার দেয় যা শুধু স্বয়ংক্রিয় প্রক্রিয়াকরণের (প্রোফাইলিংসহ) ওপর ভিত্তি করে এবং যার আইনি বা অনুরূপ উল্লেখযোগ্য প্রভাব আছে, কিছু ব্যতিক্রমসহ (চুক্তির জন্য প্রয়োজন; সুরক্ষাসহ আইন দ্বারা অনুমোদিত; স্পষ্ট সম্মতি); চুক্তি ও সম্মতির ব্যতিক্রম প্রযোজ্য হলে নিয়ন্ত্রককে অন্তত মানুষের হস্তক্ষেপ, মত জানানোর সুযোগ ও আপত্তি জানানোর সুযোগ দিতে হয়। ৩৫ নম্বর অনুচ্ছেদ উচ্চ ঝুঁকির সম্ভাবনাময় প্রক্রিয়াকরণের আগে একটা লিখিত ডেটা-সুরক্ষা ইমপ্যাক্ট অ্যাসেসমেন্ট চায়, যার মধ্যে উল্লেখযোগ্য প্রভাবসহ পদ্ধতিগত, ব্যাপক স্বয়ংক্রিয় মূল্যায়ন (প্রোফাইলিং) আছে। এর কোনোটা নিয়োগ-টুলে প্রযোজ্য কি না তা একটা আইনি প্রশ্ন। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): যুক্তরাষ্ট্র: আমাদের উৎস-যাচাইয়ে কোনো একক ব্যাপক ফেডারেল AI আইন পাওয়া যায়নি, এবং ফেডারেল ও রাজ্য নিয়মের ভারসাম্য নিয়ে বিতর্ক আছে। কলোরাডোর জেনারেল অ্যাসেম্বলির পাতা দেখায় SB26-189, "Automated Decision-Making Technology", আইন হয়েছে (স্বাক্ষর ২০২৬ সালের ১৪ মে), কিছু দায়িত্ব পরে শুরু হবে (যেমন ডেভেলপারদের নথিপত্রের দায়িত্ব ২০২৭ সালের ১ জানুয়ারি); সরকারি পাঠের সঙ্গে না-মেলানো সার্চ-সারসংক্ষেপ জানায় এটা ২০২৪ সালের কলোরাডো AI Act-এর স্থলাভিষিক্ত হয়েছে, ওই আইন কার্যকর হওয়ার আগেই; যা দেখায় নিয়ম কত দ্রুত বদলাতে পারে। নিউইয়র্ক সিটির Local Law 144, শহরের Department of Consumer and Worker Protection-এর বর্ণনা অনুযায়ী, নিয়োগকর্তা ও এজেন্সিকে স্বয়ংক্রিয় কর্মসংস্থান-সিদ্ধান্ত টুল ব্যবহার করতে দেয় না, যদি না এক বছরের মধ্যে তার বায়াস অডিট হয়ে থাকে, অডিটের তথ্য প্রকাশ্য হয় এবং নোটিশ দেওয়া হয়ে থাকে; প্রয়োগ শুরু হয় ২০২৩ সালের ৫ জুলাই। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
আইনি নোট (২০২৬-১০-১২ অনুযায়ী; আইনি পরামর্শ নয়): অন্যত্র, শুধু আইন-সংস্থা ও নীতি-সারসংক্ষেপের প্রতিবেদন অনুযায়ী, যা সরকারি পাঠের সঙ্গে মেলানো হয়নি।
যুক্তরাজ্য: প্রতিবেদন অনুযায়ী বিদ্যমান নিয়ন্ত্রক ও আইনের ওপর নির্ভর করে, একক AI আইন নেই। চীন: প্রতিবেদন অনুযায়ী AI-তৈরি কনটেন্টে দৃশ্যমান ও মেটাডেটা লেবেল দরকার। দক্ষিণ কোরিয়া: প্রতিবেদন অনুযায়ী একটা AI Basic Act কার্যকর আছে। জাপান: প্রতিবেদন অনুযায়ী জরিমানা ছাড়া প্রচার-মুখী একটা কাঠামো-আইন আছে। ভারত: প্রতিবেদন অনুযায়ী স্বেচ্ছামূলক নির্দেশিকা ব্যবহার করে। ব্রাজিল: একটা বিল, প্রতিবেদন অনুযায়ী এখনো আইন হয়নি। কানাডা: প্রস্তাবিত একটা ফেডারেল বিল, প্রতিবেদন অনুযায়ী পাস হয়নি। সিঙ্গাপুর: প্রতিবেদন অনুযায়ী জেনারেটিভ AI-এর জন্য একটা স্বেচ্ছামূলক কাঠামো প্রকাশ করেছে। আফ্রিকান ইউনিয়ন: প্রতিবেদন অনুযায়ী একটা অ-বাধ্যতামূলক মহাদেশীয় কৌশল আছে।
এই লাইনগুলো ভুল বা সেকেলে হতে পারে। আপনার দেশ ও খাতের বর্তমান সরকারি পাঠ দেখে নিন।
আইনি প্রশ্ন লিখে রাখুন, মীমাংসা করবেন না
আইনি প্রশ্নের মীমাংসার ভান না করে তা লিখে রাখুন। একটা পণ্য-দল একটা আইনি প্রশ্ন চিনতে পারে এবং কে উত্তর দিতে পারেন সহ তা লিখে রাখতে পারে; সারসংক্ষেপ পড়ে সে তার উত্তর দিতে পারে না। আত্মবিশ্বাসী অনুমানের চেয়ে একটা খোলা প্রশ্ন ভালো, আর ২ নম্বর পাতার সিদ্ধান্ত-রেকর্ডে "open" দৃশ্যমান থাকতে হবে।
টয় ডেটা: স্ক্রিনিং ফিচার নিয়ে পাঁচটা আইনি প্রশ্ন।
LEGAL_QUESTIONS = [ # (id, question, who can answer, answer): recorded, never answered by code
("LQ1", "Is a CV-ranking tool high-risk under the AI Act's employment area?", "lawyer", ""),
("LQ2", "Is Harbourline a provider or only a deployer of the tool?", "lawyer, vendor contract", ""),
("LQ3", "Which authority supervises hiring tools where applicants live?", "official portals", ""),
("LQ4", "Is any hiring decision based solely on automated processing?", "data-protection adviser", ""),
("LQ5", "Is a written data-protection impact assessment needed?", "data-protection adviser", ""),
]
for qid, question, who, answer in LEGAL_QUESTIONS:
print(f"{qid} {'OPEN' if not answer else 'answered'} ask: {who}")
print(f" {question}")
print(sum(1 for q in LEGAL_QUESTIONS if not q[3]), "open; this script does not resolve any of them")LQ1 OPEN ask: lawyer
Is a CV-ranking tool high-risk under the AI Act's employment area?
LQ2 OPEN ask: lawyer, vendor contract
Is Harbourline a provider or only a deployer of the tool?
LQ3 OPEN ask: official portals
Which authority supervises hiring tools where applicants live?
LQ4 OPEN ask: data-protection adviser
Is any hiring decision based solely on automated processing?
LQ5 OPEN ask: data-protection adviser
Is a written data-protection impact assessment needed?
5 open; this script does not resolve any of themপ্রয়োজন থেকে প্রমাণ
প্রয়োজন-থেকে-প্রমাণের একটা ম্যাপিং সারণি বানান। প্রতিটা প্রয়োজনের জন্য একটা সারি, আমাদের নিজের ছোট ভাষায়, সঙ্গে উৎস, সেটা প্রযোজ্য কি না, ৩ নম্বর পাতার যে নিয়ন্ত্রণ তাকে সেবা দেয়, আর আপনার হাতে থাকা প্রমাণ। স্ক্রিপ্ট ফাঁক জানায়; আপনার হয়ে প্রমাণ লেখে না। এখানে EU সারিগুলো কমিশনের তালিকা-করা উচ্চ-ঝুঁকির দায়িত্ব। LQ1-এর উত্তর "হ্যাঁ" হলেই শুধু এগুলো প্রযোজ্য, তাই সারণি তা-ই বলে।
# file: reqmap.py
def table(rows):
"""Print requirement -> control -> evidence. Gaps are reported; nothing is invented."""
print(f"{'id':<4}{'source':<7}{'applies':<13}{'requirement (our wording)':<36}{'ctrl':<7}{'evidence':<21}status")
for r in rows:
if not r["evidence"]:
status = "MISSING"
elif "partial" in r["evidence"]:
status = "partial"
else:
status = "ok"
print(f"{r['id']:<4}{r['source']:<7}{r['applies']:<13}{r['need']:<36}{r['control'] or '-':<7}"
f"{r['evidence'] or '-':<21}{status}")
missing = [r["id"] for r in rows if not r["evidence"]]
print(f"\n{len(missing)} of {len(rows)} rows have no evidence: {', '.join(missing)}")টয় ডেটা: ShortlistHelper v2, দুটো ফ্রেমওয়ার্কের বিপরীতে।
import reqmap
ROWS = [ # Toy data. EU rows apply only if the system is high-risk (LQ1 is open)
dict(id="E1", source="EU", applies="if high-risk", need="risk management", control="REG",
evidence="risk register v2"),
dict(id="E2", source="EU", applies="if high-risk", need="dataset quality", control="", evidence=""),
dict(id="E3", source="EU", applies="if high-risk", need="logging", control="C7",
evidence="access log (partial)"),
dict(id="E4", source="EU", applies="if high-risk", need="documentation", control="", evidence=""),
dict(id="E5", source="EU", applies="if high-risk", need="information for deployers", control="",
evidence=""),
dict(id="E6", source="EU", applies="if high-risk", need="human oversight", control="K2",
evidence="internal test report"),
dict(id="E7", source="EU", applies="if high-risk", need="robustness, cybersecurity, accuracy",
control="K5", evidence=""),
dict(id="N1", source="NIST", applies="voluntary", need="Govern: roles, notice, review", control="K4",
evidence="draft notice"),
dict(id="N2", source="NIST", applies="voluntary", need="Map: context, data flows", control="K3",
evidence=""),
dict(id="N3", source="NIST", applies="voluntary", need="Measure: group check, tests", control="K1",
evidence=""),
dict(id="N4", source="NIST", applies="voluntary", need="Manage: stop rule, incidents", control="K2",
evidence="internal test report"),
]
reqmap.table(ROWS)id source applies requirement (our wording) ctrl evidence status
E1 EU if high-risk risk management REG risk register v2 ok
E2 EU if high-risk dataset quality - - MISSING
E3 EU if high-risk logging C7 access log (partial) partial
E4 EU if high-risk documentation - - MISSING
E5 EU if high-risk information for deployers - - MISSING
E6 EU if high-risk human oversight K2 internal test report ok
E7 EU if high-risk robustness, cybersecurity, accuracy K5 - MISSING
N1 NIST voluntary Govern: roles, notice, review K4 draft notice ok
N2 NIST voluntary Map: context, data flows K3 - MISSING
N3 NIST voluntary Measure: group check, tests K1 - MISSING
N4 NIST voluntary Manage: stop rule, incidents K2 internal test report ok
6 of 11 rows have no evidence: E2, E4, E5, E7, N2, N3status কলামটা পড়ুন। E1 "ok", কারণ ঝুঁকি-রেজিস্টার আছে। E3 "partial": অ্যাক্সেস লগ একটা ঝুঁকির জন্য আছে, পুরো সিস্টেমের জন্য নয়। E2, E4, E5 ও E7 MISSING, আর দুটো NIST সারিও, যাদের নিয়ন্ত্রণ কাগজে আছে কিন্তু প্রমাণ নেই। "MISSING" মানে সিস্টেমটা বেআইনি বা অনিরাপদ নয়; মানে ফাইলে কোনো প্রমাণ নেই। LQ1 "না" হলে EU সারিগুলো হয়তো প্রযোজ্যই নয়, আর কাজটা তবু কাজে লাগে।
দুটো ফ্রেমওয়ার্কের তুলনা
দুটো ফ্রেমওয়ার্ককে সমতুল্য ধরে না নিয়ে তুলনা করুন। দুটো লেখা একই বিষয় ছুঁতে পারে, যেমন মানুষের তদারকি, তবু ভিন্ন মানুষের কাছে ভিন্ন জিনিস চাইতে পারে। এটা আমাদের পাঠ, আলোচনার জন্য।
| NIST AI RMF 1.0 | EU AI Act | |
|---|---|---|
| ধরন | স্বেচ্ছামূলক ফ্রেমওয়ার্ক, মার্কিন উৎস, যেকোনো জায়গায় ব্যবহারযোগ্য | বাধ্যতামূলক বিধি, পরিধির মধ্যে যারা পড়ে তাদের ওপর প্রযোজ্য |
| কোন প্রশ্ন করে | একটা সংস্থা AI-ঝুঁকি কীভাবে সামলাবে? | কোন ব্যবহার নিষিদ্ধ বা নিয়ন্ত্রিত, এবং কোন দায়িত্ব আসে? |
| "ঝুঁকি"র অর্থ | যা একটা সংস্থা চিহ্নিত করে ও সামলায় | একটা ব্যবহারকে দেওয়া বিভাগ |
| সামঞ্জস্য দেখানো | আপনার নিজের ম্যাপিং ও রেকর্ড | আইনি দায়িত্ব পালন; কর্তৃপক্ষ প্রয়োগ করতে পারে |
| সংস্করণ | ১.০, ২৬ জানুয়ারি ২০২৩; সংশোধনের ঘোষণা আছে | সংশোধিত রূপে; তারিখ টাইমলাইন অনুযায়ী |
একটা রেকর্ড দুটোরই কাজে লাগতে পারে: মানুষের তদারকির নমুনা-লগ E6 আর N4 দুটোতেই সাহায্য করতে পারে। কিন্তু একটা ফ্রেমওয়ার্কের জন্য মানানসই প্রমাণ অন্যটির ভাষায় না-ও মিলতে পারে, আর স্বেচ্ছামূলকটার সঙ্গে সামঞ্জস্য থাকলেই বাধ্যতামূলকটা মানার প্রমাণ হয় না। প্রতিটা পাঠ নিজে পড়ুন।
সংস্করণ ও পর্যালোচনার তারিখ লিখে রাখুন
ফ্রেমওয়ার্কের সংস্করণ ও পর্যালোচনার তারিখ লিখে রাখুন। প্রতিটা উৎসের জন্য লিখুন আপনি কোন সংস্করণ বা তারিখ দেখেছেন, সরকারি পাঠ পড়েছেন কি না, এবং কবে আবার দেখবেন। পরের ব্লক তথ্যের নির্দিষ্ট তারিখ ব্যবহার করে, তাই সংখ্যা সরে যায় না।
টয় ডেটা: একটা কাল্পনিক পর্যালোচনা-রেকর্ড; পর্যালোচনার তারিখগুলো আমাদের বেছে নেওয়া।
SOURCES = [ # Toy record: (name, version or date as seen, binding?, official text read?, review by)
("EU AI Act", "as amended; omnibus in force 2026-07-27 per Commission pages", True, False, "2027-01-12"),
("OECD AI Principles", "adopted 2019, updated May 2024", False, True, "2027-04-12"),
("UNESCO Recommendation", "November 2021", False, True, "2027-04-12"),
("NIST AI RMF", "1.0, 26 January 2023; revision announced, none published", False, True, "2027-04-12"),
("ISO/IEC 42001", "edition: check iso.org", False, False, "2027-04-12"),
]
for name, version, binding, read, due in SOURCES:
days = (date.fromisoformat(due) - AS_OF).days
claim = "claims possible" if read else "NO claims: official text not read"
print(f"{name:<22}{'binding' if binding else 'voluntary':<10}review by {due} ({days} days) {claim}")
print(f" version: {version}")EU AI Act binding review by 2027-01-12 (92 days) NO claims: official text not read
version: as amended; omnibus in force 2026-07-27 per Commission pages
OECD AI Principles voluntary review by 2027-04-12 (182 days) claims possible
version: adopted 2019, updated May 2024
UNESCO Recommendation voluntary review by 2027-04-12 (182 days) claims possible
version: November 2021
NIST AI RMF voluntary review by 2027-04-12 (182 days) claims possible
version: 1.0, 26 January 2023; revision announced, none published
ISO/IEC 42001 voluntary review by 2027-04-12 (182 days) NO claims: official text not read
version: edition: check iso.orgEU সারিতে "NO claims": সরকারি পাঠ পড়া হয়নি, তাই গৌণ পাতাগুলো যত ভালোই দেখাক, কোনো কমপ্লায়েন্সের দাবি চলবে না। স্বেচ্ছামূলক সারিগুলোতে "claims possible" শুধু এই অর্থে যে আপনার ম্যাপিং থাকলে "informed by" বা "aligned with" বলতে পারেন।
কাজের জায়গায় এটা কোথায় দেখা যায়
কমপ্লায়েন্স, আইন, প্রকিউরমেন্ট ও প্রোডাক্ট দল এসব রেকর্ড রাখে: সংস্করণসহ উৎস-তালিকা, প্রয়োজন-সারণি, খোলা আইনি প্রশ্ন ও পর্যালোচনার ক্যালেন্ডার। গ্রাহক ও অডিটররা প্রায়ই এগুলো চান।
সাধারণ ভুল
- "aligned with"-কে "compliant with" ধরা। একটা আপনার নিজের ম্যাপিং; অন্যটা একটা আইনি অবস্থা।
- মনে থেকে বা পুরনো সারসংক্ষেপ থেকে তারিখ বলা। তারিখ সরেছে; সরকারি পাঠে নিশ্চিত করুন এবং যেদিন দেখেছেন সেই তারিখ লিখুন।
- প্রযুক্তি দেখে সিস্টেম শ্রেণিবদ্ধ করা। কাঠামো ব্যবহার ও ক্ষেত্র ধরে সাজায়; ব্যবহারের ঘটনা থেকে শুরু করুন।
- রেজিস্টারে আইনি প্রশ্নের উত্তর লেখা। প্রশ্ন, উত্তর দিতে পারেন এমন ব্যক্তি এবং অবস্থা লিখুন।
- সম্পূর্ণ দেখাতে প্রমাণের ঘর ভরা। খালি ঘরও একটা তথ্য।
নিজে চেষ্টা করুন
এই পাতার নেমস্পেস ব্যবহার করুন। অনুশীলনগুলো ৩ নম্বর পাতার K1 থেকে K7 নিয়ন্ত্রণে ফেরে।
- সহজ।
TIMELINEওAS_OFব্যবহার করে যে তারিখটা এখনো আসেনি তার মধ্যে পরেরটা এবং Annex III উচ্চ-ঝুঁকি নিয়মের সারিটা ছাপুন। এক বাক্যে বলুন কেন এটা কমপ্লায়েন্সের দাবির জন্য যথেষ্ট নয়। - মাঝারি। এজেন্সি একটা আবেদনকারী-FAQ চ্যাটবটও চালু করতে চায়। তার জন্য দুটো আইনি প্রশ্ন যোগ করুন (একটা মানুষকে জানানো যে তারা AI-র সঙ্গে কথা বলছেন, একটা প্রোভাইডার বা ডিপ্লয়ার ভূমিকা নিয়ে), উত্তর না দিয়ে, এবং খোলাগুলোর তালিকা ছাপুন।
- কঠিন। অনুশীলন: চ্যাটবটকে দুটো ফ্রেমওয়ার্কের সঙ্গে মেলান। চারটা সারি লিখুন, দুটো EU AI Act-এর আর দুটো NIST AI RMF-এর,
reqmap.tableচালান, এবং বলুন কোন ফাঁকটা আগে বন্ধ করবেন আর কী এখনো দাবি করতে পারবেন না।
উত্তর
সহজ।
print("next date after", AS_OF, "is", [d for d, _ in TIMELINE if date.fromisoformat(d) > AS_OF][0])
print("Annex III high-risk rows:", [d for d, w in TIMELINE if "Annex III" in w])next date after 2026-10-12 is 2026-12-02
Annex III high-risk rows: ['2027-12-02']সারণিটা তথ্যের তারিখের একটা গৌণ পাতা থেকে, সরকারি পাঠ পড়া হয়নি (রেকর্ড দেখুন), আর টুলটা উচ্চ-ঝুঁকির কি না তা খোলা (LQ1)। পাস চেকলিস্ট: সঠিক দুটো তারিখ; তিন কারণের অন্তত দুটো; কমপ্লায়েন্সের কোনো দাবি নয়। দুর্বল উত্তর বলে "এখনো সময় হয়নি, তাই আমরা ঠিক আছি"।
মাঝারি।
LEGAL_QUESTIONS += [
("LQ6", "Must applicants be told they are talking to an AI?", "lawyer", ""),
("LQ7", "Is the chatbot operator a provider or a deployer?", "lawyer, vendor contract", ""),
]
print([q[0] for q in LEGAL_QUESTIONS if not q[3]])['LQ1', 'LQ2', 'LQ3', 'LQ4', 'LQ5', 'LQ6', 'LQ7']পাস চেকলিস্ট: দুটো প্রশ্নই OPEN হিসেবে আছে এবং উত্তর দিতে পারেন এমন ব্যক্তিসহ; কোনো উত্তর লেখা হয়নি। দুর্বল উত্তর উত্তরের ঘরে "হ্যাঁ, আমাদের করতে হবে" লেখে।
কঠিন। একটা সম্ভাব্য উত্তর:
CHAT = [ # Toy data: the invented applicant FAQ chatbot, mapped to two frameworks
dict(id="E8", source="EU", applies="check (LQ7)", need="people told it is an AI (provider)",
control="K4", evidence="banner text"),
dict(id="E9", source="EU", applies="check (LQ7)", need="generated text marked (provider)", control="",
evidence=""),
dict(id="N5", source="NIST", applies="voluntary", need="Map: who asks, what is at stake", control="K3",
evidence=""),
dict(id="N6", source="NIST", applies="voluntary", need="Measure: wrong or invented answers",
control="", evidence=""),
]
reqmap.table(CHAT)id source applies requirement (our wording) ctrl evidence status
E8 EU check (LQ7) people told it is an AI (provider) K4 banner text ok
E9 EU check (LQ7) generated text marked (provider) - - MISSING
N5 NIST voluntary Map: who asks, what is at stake K3 - MISSING
N6 NIST voluntary Measure: wrong or invented answers - - MISSING
3 of 4 rows have no evidence: E9, N5, N6নোটিশের (E8, K4) প্রমাণ আছে; মার্কিং সারি, Map সারি ও Measure সারির নেই। একটা বিবেচনাসম্মত প্রথম ধাপ Measure সারি (ভুল বা বানানো উত্তর), কারণ আইনি উত্তর যা-ই হোক, এটা এখনই একজন আবেদনকারীর ক্ষতি করতে পারে; আইনি প্রশ্নগুলো (LQ6, LQ7) সমান্তরালে একজন বিশেষজ্ঞের কাছে যায়। আপনি EU কমপ্লায়েন্স বা NIST "কমপ্লায়েন্স" দাবি করতে পারেন না; বলতে পারেন কাজটা NIST AI RMF 1.0 দ্বারা অনুপ্রাণিত, এই ফাঁকগুলোসহ। পাস চেকলিস্ট: সৎ প্রমাণের ঘরসহ চারটা সারি; MISSING দেখানো; কারণসহ একটা প্রথম ধাপ; কমপ্লায়েন্সের কোনো দাবি নয়। দুর্বল উত্তর খালি ঘর ভরে দেয় বা কারণ ছাড়া ফাঁকের অগ্রাধিকার দেয়।
সারসংক্ষেপ
- নীতি, স্ট্যান্ডার্ড ও আইন আলাদা জিনিস; আপনার প্রমাণ যে দাবি সমর্থন করে শুধু সেটাই লিখুন।
- একটা ব্যবহারকে ঝুঁকিভিত্তিক কাঠামোর সঙ্গে প্রশ্নের একটা সেট ("candidate") হিসেবে মেলান, ব্যবহার ও ক্ষেত্র ধরে, প্রযুক্তি ধরে নয়।
- কোনো সম্মতির দাবির আগে সরকারি পাঠে প্রযোজ্য তারিখ যাচাই করুন; কোন পাতা কবে দেখেছেন তা লিখুন।
- দেশ, খাত, ভূমিকা ও কর্তৃপক্ষ চিহ্নিত করুন, এবং বিশেষজ্ঞ উত্তর না দেওয়া পর্যন্ত আইনি প্রশ্ন খোলা রাখুন।
- MISSING জানায় এমন প্রয়োজন-থেকে-প্রমাণ সারণি বানান, ফ্রেমওয়ার্ক সমতুল্য ধরে না নিয়ে তুলনা করুন, এবং সংস্করণ ও পর্যালোচনার তারিখ লিখে রাখুন।
এরপর: টয় ডেটায় ন্যায্যতার মেট্রিক: Python-এ সিলেকশন রেট ও এরর রেট দ্বিতীয় অধ্যায়ে যায়, একটা কাল্পনিক সারণিতে ন্যায্যতার পরিমাপ হিসাব ও ব্যাখ্যা করে।