OpenRouter-এর Armor বেটা মডেলের প্রস্তাবিত টুল কল ও তা চালাতে পারে এমন অ্যাপ্লিকেশনের মাঝখানে নিয়মের একটি শ্রেণিবিন্যাসকারী রাখে। এজেন্ট ডেভেলপারের জন্য গুরুত্বপূর্ণ হলো, সিদ্ধান্তটি ঠিক কোথায় বাস্তবে কার্যকর করা থামায়। Chat Completions ও Responses-এ Armor চিহ্নিত কল আটকে রাখতে পারে। Messages API-এর Claude Code সামঞ্জস্য মোডে চিহ্নিত tool_use উত্তরে থেকেই যায়; ক্লায়েন্টকে তা চালাতে অস্বীকার করতে হয়।
বর্তমান নথি অক্টোবর ২০২৬ থেকে উপলব্ধ বেটার বর্ণনা দেয়। BIG CHANGE ১৭ অক্টোবর নথিতে উল্লেখিত অনুরোধ ও উত্তরের চুক্তি পর্যালোচনা করেছে। আমরা API অনুরোধ পাঠাইনি, এজেন্ট চালাইনি বা নিরাপত্তার কার্যকারিতা মাপিনি।
বড় পরিবর্তন
- কী বদলেছে: OpenRouter এজেন্ট তার প্রস্তাবিত টুল কল এমন শ্রেণিবিন্যাসকারীর মাধ্যমে পাঠাতে পারে, যা কল অ্যাপ্লিকেশনে পৌঁছানোর আগেই ডেভেলপারের লেখা নিয়ম প্রয়োগ করে। নিয়ম প্রয়োগের ডিফল্ট পথে চিহ্নিত কল চালানো বাদ দেওয়া হয় এবং কারণ ফেরত আসে, যাতে মডেল এগোতে পারে।
- কেন গুরুত্বপূর্ণ: অল্প পরিসরে অনুমোদিত কাজের ব্যতিক্রমসহ, কাজের স্তরের সীমা সাধারণ ভাষায় লিখতে পারেন ডেভেলপাররা। তবু Messages সামঞ্জস্য চুক্তিতে কার্যকর করার সিদ্ধান্তমূলক ধাপ ক্লায়েন্টের হাতেই থাকে: চিহ্নিত সিদ্ধান্ত উপেক্ষা করা ক্লায়েন্ট কলটি চালিয়ে দিতে পারে।
- যা দেখতে হবে: বেছে নেওয়া API আউটপুট মোডের সঙ্গে ক্লায়েন্ট মেলানো, নিজেদের ট্রাফিকে নিয়ম পরীক্ষা এবং শ্রেণিবিন্যাসকারীর ত্রুটিতে কী আচরণ হবে তা ঠিক করা দরকার। বেটার ফরম্যাট বদলাতে পারে। OpenRouter বলছে, শ্রেণিবিন্যাসকারী গ্রহণযোগ্য কল আটকাতেও পারে, আবার অগ্রহণযোগ্য কল ধরতে নাও পারে।
প্রস্তাব থেকে সিদ্ধান্ত পর্যন্ত কলের পথ দেখুন
OpenRouter-এর ভাষ্য অনুযায়ী, প্রতিটি প্রস্তাবিত টুল কল অ্যাপ্লিকেশনে পাঠানোর আগে ধরে রাখা হয়। সিদ্ধান্তের মডেল কল, নিয়ম ও ততক্ষণকার কথোপকথন পায়, প্রতিটি নিয়ম মেলে কি না তার অনুমান করে এবং ফল একত্র করে flagged বা not_flagged দেয়। চিহ্নিত নয় এমন কল অপরিবর্তিত অবস্থায় ছেড়ে দেওয়া হয়। নিয়ম প্রয়োগের মোডে চিহ্নিত কল চালানো বাদ দিতে বলা হয়; মডেল কারণ পায় এবং আরও সীমিত কল চেষ্টা করতে বা অস্বীকৃতির ব্যাখ্যা দিতে পারে। এটি প্রস্তাবিত কাজ নিয়ে শ্রেণিবিন্যাসকারীর সিদ্ধান্ত, পরের টুল বা গোটা এজেন্ট নিরাপদ হওয়ার প্রমাণ নয়।
নিয়মের স্তরগুলো ভিন্ন প্রশ্নের উত্তর দেয়। hard_deny মিলে গেলে অনুমতির নিয়ম বা ব্যবহারকারীর অনুরোধ যা-ই থাকুক, কল আটকায়। soft_deny মিলে যাওয়ার কারণে আসা বাধা allow মিলে গেলে, অথবা কথোপকথনে ব্যবহারকারী ঠিক ওই লক্ষ্যেই ঠিক ওই কাজ চাইলে, সরতে পারে। allow নিয়ম একা কখনও কল আটকায় না। ব্যবহারকারীর নির্ধারিত এবং প্রত্যাহার না করা সীমানার জন্য অন্তর্নির্মিত নমনীয় নিষেধও OpenRouter নথিবদ্ধ করেছে। বিশ্বস্ত রিপোজিটরি বা ডিপ্লয়মেন্টের লক্ষ্যের মতো তথ্য ডেভেলপাররা environment-এ দেন; পুরোনো তথ্য নিয়মকে কম নির্ভুল করতে পারে। নাম দেওয়া নিয়মের অবজেক্ট সিদ্ধান্তে ID ও নাম দেখায়। ঐচ্ছিক থ্রেশহোল্ডের ডিফল্ট মান নিষেধের নিয়মে 0.6 এবং অনুমতির নিয়মে 0.7।
নথিতে থাকা Responses-এর উদাহরণ একটি bash টুলকে git push-এর জন্য কঠোর নিষেধের নিয়ম দেয়। output_mode: "custom_item" ব্যবহার করলে চিহ্নিত push-এর বদলে কল ও কারণসহ একটি openrouter:armor_blocked আইটেম আসে, যার পর থাকে মডেলের উত্তর। পরিষেবা কী ফেরত দেয় বলে নথি জানায়, উদাহরণটি তা দেখায়; BIG CHANGE-এর করা পরীক্ষা নয়।
টুল চালানোর আগে আউটপুট চুক্তি বেছে নিন
Chat Completions ও Responses-এ ডিফল্ট text মোড অবরুদ্ধ কল সরিয়ে অ্যাসিস্ট্যান্টের লেখায় <openrouter_armor_blocked> চিহ্ন রাখে। Responses API-তে custom_item-ও আছে, যা সাধারণত function_call আসার জায়গায় ধরন-নির্দিষ্ট অবরুদ্ধ আইটেম ফেরত দেয়। নথি অনুযায়ী পরের Responses ইনপুটে ওই আইটেম অপরিবর্তিত অবস্থায় পাঠাতে হবে, তার জন্য আলাদা function_call_output তৈরি করা যাবে না। safeguard_results কল ID অনুযায়ী সিদ্ধান্ত নথিবদ্ধ করে।
অনুরোধে safeguards থাকলে Messages API-এর ডিফল্ট আচরণ যথেষ্ট আলাদা: claude_code_compatibility চিহ্নিত tool_use রেখে দেয় content[]-এ, আর তার flagged ফল যোগ করে safeguard_results-এ। অ্যাপ্লিকেশনকে ওই ফল পড়ে কল চালাতে অস্বীকার করতে হবে। OpenRouter স্পষ্ট সতর্ক করে, সিদ্ধান্ত উপেক্ষা করা Messages ক্লায়েন্ট চিহ্নিত টুল ব্যবহার চালিয়ে দেবে। ক্লায়েন্ট নিয়ন্ত্রণ করতে না পারা ডেভেলপার Messages-এ output_mode: "text" চাইতে পারেন, যাতে OpenRouter কল আটকে রাখে। API যে আউটপুট মোড প্রকাশ করতে পারে না, তা চাইলে 400 আসে।
OpenRouter-এর Ori মেটাহার্নেস দিয়ে Claude Code অটো মোড, বাড়তি Armor প্লাগইন এন্ট্রি ছাড়াই Messages চুক্তি ব্যবহার করে। নথি বলছে, Claude Code চিহ্নিত কল প্রত্যাখ্যান করে, কথোপকথনের নথিতে ত্রুটির ফল লেখে এবং মডেলকে এগোতে দেয়। আরও বলে, নিজস্ব শ্রেণিবিন্যাসকারী সমর্থন করে এমন Anthropic এন্ডপয়েন্ট সরাসরি এগিয়ে দেওয়া সিদ্ধান্ত সরবরাহ করতে পারে; অন্য এন্ডপয়েন্টে Armor মূল্যায়ন করে। এটি নথিবদ্ধ ইন্টিগ্রেশনের আচরণ, প্রত্যেক তৃতীয় পক্ষের ক্লায়েন্ট তা সঠিকভাবে বাস্তবায়ন করে এমন দাবি নয়।
সীমিত নিয়মের সমষ্টি সাজান ও যাচাই করুন
নিজস্ব এজেন্টের জন্য Armor নির্দেশিকা একটি armor এন্ট্রি রাখে plugins-এ, যাতে থাকে সংস্করণযুক্ত classifier_context (v: 1), auto_mode নিয়ম এবং পরিবেশের ঐচ্ছিক তথ্য। নিয়ম কোন কাজ ও সুরক্ষিত সম্পদ চিনবে, তা দিয়ে শুরু করুন। তারপর ব্যবহারকারীর সম্মতির পরও বহাল থাকা নিষেধের জন্য কঠোর নিষেধ বাছুন; নির্দিষ্ট সম্মতি বা নামযুক্ত অনুমতি বৈধভাবে তা সরাতে পারলে নমনীয় নিষেধ বাছুন। নথি একটিমাত্র কমান্ড লেখার ধরন নয়, কাজটির বর্ণনা দিতে এবং পরিবেশের তথ্য হালনাগাদ রাখতে বলে।
ডিফল্ট enforce মোড সিদ্ধান্ত অনুযায়ী ব্যবস্থা নেয়। audit একই সিদ্ধান্ত জানায়, কিন্তু চিহ্নিতসহ প্রতিটি কল ছেড়ে দেয়। নিয়ম প্রয়োগের আগে প্রকৃত ট্রাফিক দেখে নিয়ম ঠিক করার উপায় এটি; সুরক্ষার মোড নয়। অডিটের সঙ্গে claude_code_compatibility মেলানো যায় না। দুই মোডেই safeguard_results পড়ুন: not_flagged মানে অনুমোদিত, flagged মিলে যাওয়া নিয়ম দেখায়, unavailable মানে মূল্যায়ন ব্যর্থ, আর skipped দেখায় মূল্যায়ন না করা প্রোভাইডারের নেটিভ টুল। স্ট্রিমিংয়ে সিদ্ধান্তের অবজেক্ট আসে উত্তরের শেষে; তাই Messages ব্যবহার করা ক্লায়েন্টকে টুল ব্যবহারে কাজ করার আগে তার জন্য অপেক্ষা করতে হবে।
শ্রেণিবিন্যাসকারীর সময়সীমা পেরোলে, ত্রুটি হলে বা অতিরিক্ত বড় অনুরোধ সামলাতে না পারলে ডিফল্ট হিসেবে OpenRouter on_error: "block" উল্লেখ করে; on_error: "log" কল ছেড়ে দেয়। Claude Code সামঞ্জস্য মোডে unavailable কল সিদ্ধান্ত দৃশ্যমান রেখেই ছেড়ে দেওয়া হয়। প্রোভাইডারের নেটিভ সার্ভার টুলের মূল্যায়ন ডিফল্টভাবে বাদ যায়, যদি না evaluate_native_tools সেগুলোকে মূল্যায়নের জন্য নেটিভ পথের বাইরে যেতে বাধ্য করে। এই সেটিং ও টুলের আসল পথ দলের ইন্টিগ্রেশন যাচাইয়ে থাকা দরকার; শুধু Armor এন্ট্রি থাকলেই প্রতিটি টুল মূল্যায়িত হয়েছে বোঝায় না।
বেটার খরচ, গতি ও আওতার সীমা
Claude Code-সামঞ্জস্যপূর্ণ নিয়মসমষ্টি লোড থাকা অবস্থায় মূল্যায়নে অতিরিক্ত সময় লেগেছে মধ্যকে ২৭৯ মিলিসেকেন্ড এবং ৯০তম পার্সেন্টাইলে ৩৩৪ মিলিসেকেন্ড বলে জানিয়েছে OpenRouter। এগুলো উল্লেখিত অবস্থায় বিক্রেতার দেওয়া মাপ, নির্দিষ্ট এজেন্ট বা সব নিয়মসমষ্টির বেঞ্চমার্ক নয়। ছাড়ার বা আটকানোর আগে প্রতিটি কল একবার মূল্যায়ন করা হয়। বেটায় মূল্যায়নের জন্য চার্জ নেই; সাধারণভাবে উপলব্ধ করার আগে দাম জানাবে বলে OpenRouter বলেছে। নথি ভবিষ্যৎ হার নির্দিষ্ট করে না।
সাধারণ ভাষায় লেখা নিয়মকে সাধারণ ভাষার আর্গুমেন্টের সঙ্গে মিলিয়ে বিচার করায় সিদ্ধান্তের মডেল ভুল ইতিবাচক ফল দিতে বা কিছু বিষয় এড়িয়ে যেতে পারে। নথি প্রকৃত ট্রাফিকে অডিট সিদ্ধান্ত ব্যবহার এবং প্রতিটি নিয়মের থ্রেশহোল্ড ঠিক করতে বলে। HIPAA, Zero Data Retention বা ডেটার অঞ্চল-সীমাযুক্ত অনুরোধে Armor মূল্যায়ন এখনও সমর্থিত নয়। ওই প্রসঙ্গে প্লাগইন সক্রিয় অনুরোধে 403 আসে; Claude Code অনুরোধ বরং কলকে unavailable হিসেবে ছেড়ে দেয় এবং Claude Code স্থানীয় অটো-মোড মূল্যায়নে ফেরে। বেটার সতর্কতায় কনফিগারেশনের ক্ষেত্র, safeguard_results এবং openrouter:armor_blocked আইটেমের ধরন পরিবর্তনের কথাও আছে।
মডেল থেকে অ্যাপ্লিকেশনে হস্তান্তরের সময় Armor প্রস্তাবিত কল যাচাই করে। ফলে এটি Microsoft-এর MXC কমান্ড নিয়ন্ত্রণ ও NVIDIA-এর OpenShell ও Sentry রানটাইম নিয়ন্ত্রণ থেকে আলাদা ব্যবস্থা; ওই নিয়ন্ত্রণগুলো কাজের ভার বা তার প্রবেশাধিকারের চারপাশে বিধিনিষেধ প্রয়োগ করে। Armor-এর তাৎক্ষণিক বাস্তবায়ন-সিদ্ধান্ত হলো, বেছে নেওয়া উত্তরের ফরম্যাট চিহ্নিত কল আটকে রাখে, নাকি ক্লায়েন্টকেই তা থামাতে হয়।
উৎস ও আরও পড়ুন
- OpenRouter Armor নথি, ১৭ অক্টোবর ২০২৬ দেখা হয়েছে। বেটার অবস্থা, শ্রেণিবিন্যাসকারীর ধাপ, নিয়মের অগ্রাধিকার, API উত্তরের চুক্তি, ত্রুটির আচরণ, গোপনীয়তার প্রসঙ্গের ব্যতিক্রম, জানানো লেটেন্সি ও বেটার বিলিংয়ের প্রাথমিক উৎস। এগুলো OpenRouter-এর নথিবদ্ধ দাবি; BIG CHANGE প্লাগইন চালায়নি।
- Microsoft MXC নিয়ে BIG CHANGE এজেন্টের তৈরি কমান্ডের নীতিভিত্তিক নিয়ন্ত্রণ ব্যাখ্যা করে। এটি পৃথক প্রয়োগের স্তর, Armor-এর আগের পর্যায় নয়।
- NVIDIA OpenShell ও Sentry নিয়ে BIG CHANGE সফ্টওয়্যার প্রবেশাধিকার নিয়ন্ত্রণ ও ঐচ্ছিক হার্ডওয়্যার পর্যবেক্ষণ নকশা বর্ণনা করে। এটি সম্পর্কিত প্রেক্ষাপট, OpenRouter-এর এই সুবিধার সরাসরি ধারাবাহিকতা নয়।



