১২টি লার্জ-ল্যাঙ্গুয়েজ-মডেল (LLM) API-এর একটি নতুন বেঞ্চমার্ক থেকে দেখা গেছে যে, প্রায় প্রতিটি সার্ভিসই অনুরোধ করা স্কিমা অনুযায়ী JSON প্রদান করে, তবে একটি উল্লেখযোগ্য অংশ ভুল তথ্য প্রদান করে। একই স্কিমার টোকেন খরচ কয়েক ডজন থেকে শুরু করে প্রায় পাঁচ হাজার পর্যন্ত হতে পারে। যারা এক্সট্রাকশন পাইপলাইন বা ডেটা-চালিত এজেন্ট তৈরি করছেন, তারা এখন থেকে "স্কিমা-ভ্যালিড" (schema-valid) থাকাকে "সঠিক" (correct) হওয়ার মাপকাঠি হিসেবে আর বিশ্বাস করতে পারবেন না।
কেন এই পরীক্ষাটি গুরুত্বপূর্ণ
API প্রদানকারীরা পার্সিং ত্রুটি দূর করার উপায় হিসেবে "স্ট্রাকচার্ড আউটপুট" (structured output)-এর কথা বলে আসছেন। এর প্রতিশ্রুতিটি সহজ: মডেলটিকে একটি JSON স্কিমা দিন, এবং এটি কোনো ভঙ্গুর পোস্ট-প্রসেসিং কোড না লিখেই ফিল্ডগুলো পূরণ করে দেবে। বাস্তবে, অনেক প্রোডাকশন সিস্টেম ক্র্যাশ এড়াতে এবং ডাউনস্ট্রিম অ্যানালিটিক্স পাইপলাইনগুলোকে পরিচ্ছন্ন রাখতে ইতিমধ্যেই এই গ্যারান্টির ওপর নির্ভর করে। যখন এই গ্যারান্টি অর্ধেক সত্যি হয়, তখন নিঃশব্দে বাগ (bug) তৈরি হয় এবং টোকেন ব্যবহারের ওপর ভিত্তি করে করা খরচের হিসাব মারাত্মকভাবে ভুল হয়ে যায়।
সুসংবাদ: স্কিমা এখন বেশিরভাগ ক্ষেত্রেই কার্যকর হচ্ছে
- টেস্ট সুইটের বেশিরভাগ মডেলই এমন JSON তৈরি করেছে যা একটি কঠোর ভ্যালিডেটর (validator) পাস করতে সক্ষম।
- কনস্ট্রেইনড ডিকোডিং (Constrained decoding) – যে মডেলগুলো ডিকোডারকে স্কিমার সাথে লক করে রাখে, তারা অতিরিক্ত কোনো ক্যারেক্টার নির্গত করতে পারে না, ফলে ভুল ফরম্যাটের পেলোড (payload) এখন প্রায় বিলুপ্ত।
- পার্স-এরর রেট (Parse-error rates) – JSON সিনট্যাক্স ফেইলিউরের জন্য ডেভেলপারদের আর প্রতিটি কলকে try-catch ব্লকের মধ্যে রাখার প্রয়োজন নেই।
দুঃসংবাদ: বৈধতা ≠ নির্ভুলতা
একটি বৈধ ফরম্যাট বা আকৃতি (shape) সঠিক মানের (value) নিশ্চয়তা দেয় না। বারোটি মডেলের মধ্যে চারটি—DeepSeek V4, Qwen, এবং GLM-5.2 (রিপোর্টে শেষের দুটি ভিন্ন নামে দেখা গেছে)—যখন "thinking" (বা chain-of-thought) মোড চালু ছিল, তখন নিখুঁতভাবে গঠিত JSON তৈরি করলেও তাতে ভুল সংখ্যা ছিল।
- Qwen মডেলে, রিজনিং (reasoning) চালু থাকলে ১৬টির মধ্যে মাত্র ১টি সঠিক উত্তর পাওয়া গিয়েছিল, কিন্তু রিজনিং বন্ধ করলে ৮টির মধ্যে ৮টিই সঠিক ছিল।
- DeepSeek V4 Pro-তেও একই ধরনের পরিবর্তন দেখা গেছে: মডেলটি যখন তার ধাপগুলো ব্যাখ্যা করা বন্ধ করল, তখন এক্সট্রাকশন নির্ভুলতা ১/৮ থেকে বেড়ে ৭/৮ হয়েছে।
অতিরিক্ত রিজনিং ধাপটি কনস্ট্রেইনড ডিকোডারের কাজে বাধা দেয়, যার ফলে মডেলটি বাইরের ব্র্যাকেটগুলো ঠিক রাখলেও হ্যালুসিনেশনের (hallucination) দিকে ঝুঁকে পড়ে।
নেতিবাচক দিক: টোকেন খরচের বিস্ময় এবং অবহেলিত প্যারামিটারসমূহ
- Claude-এর রেসপন্স ফরম্যাট – OpenAI-এর সাথে সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট (endpoints) দিয়ে অ্যাক্সেস করার সময় Claude
response_formatফ্ল্যাগটি সম্পূর্ণ উপেক্ষা করে এবং ০% স্কিমা-সম্মত আউটপুট প্রদান করে। মডেলটি স্ট্রাকচার্ড কল সমর্থন করে ঠিকই, তবে তা শুধুমাত্র Anthropic-এর নেটিভ টুল-কল ইন্টারফেসের মাধ্যমে। - স্কিমা টোকেন ইনফ্লেশন – DeepSeek-এ একটি সাধারণ ১২ KB স্কিমার খরচ মাত্র ৩০ টোকেন, অথচ Claude-এ একই পেলোড ৪,৯৫৯ টোকেন খরচ করে।
- বিলিংয়ের অসঙ্গতি – কিছু প্রোভাইডার স্কিমাকে প্রম্পটের অংশ হিসেবে গণনা করে এবং প্রতিটি টোকেনের জন্য চার্জ করে; অন্যরা এটিকে একটি ফ্রি ওভারলে হিসেবে গণ্য করে। বড় পরিসরে ব্যবহারের ক্ষেত্রে, স্কিমার বিল মডেলের তৈরি করা কন্টেন্টের খরচের চেয়েও বেশি হয়ে যেতে পারে।
ডেভেলপারদের এখন যা করা উচিত
- শুধু ফরম্যাট নয়, মান যাচাই করুন (Validate values, not just shapes) – একটি স্কিমা ভ্যালিডেটর ভুল সংখ্যা শনাক্ত করতে পারবে না, এমনকি যদি সেটি প্রত্যাশিত টাইপের সাথে মিলে যায় তবুও। ডোমেইন-নির্দিষ্ট যাচাইকরণ (রেঞ্জ, ইউনিট, ক্রস-ফিল্ড কনসিস্টেন্সি) যোগ করুন।
- DeepSeek, Qwen, এবং GLM-এ এক্সট্রাকশনের সময় chain-of-thought বন্ধ রাখুন যখন আপনার নির্ভরযোগ্য ফিল্ড ফিলিং প্রয়োজন। অতিরিক্ত রিজনিং ধাপটি ঐচ্ছিক, নির্ভুলতার জন্য এটি বাধ্যতামূলক নয়।
- টোকেন ব্যবহার অডিট করুন – প্রতিটি রিকোয়েস্টে স্কিমা অংশসহ কত টোকেন খরচ হচ্ছে তা লগ করুন এবং বড় পরিসরে ব্যবহারের সিদ্ধান্ত নেওয়ার আগে বিভিন্ন ভেন্ডরের বিল তুলনা করে দেখুন।
- পোর্টেবিলিটি পরীক্ষা করুন – OpenAI-তে কাজ করা একটি স্কিমা Gemini বা Claude-এ কাজ নাও করতে পারে। কোড শিপ করার আগে প্রতিটি টার্গেট প্ল্যাটফর্মে একটি দ্রুত স্যানিটি চেক (sanity check) করে নিন।
ভেন্ডরদের পাল্টা যুক্তি
কিছু প্রোভাইডার যুক্তি দেন যে, "thinking" মোডটি ডেভেলপারদের একটি পছন্দ, যা এমন কাজের জন্য তৈরি যেখানে ব্যাখ্যা প্রদান করা মূল এক্সট্রাকশন নির্ভুলতার চেয়ে বেশি গুরুত্বপূর্ণ। Claude response_format ফ্ল্যাগটি উপেক্ষা করে এবং পরিবর্তে Anthropic-এর নেটিভ টুল কল ব্যবহারের পরামর্শ দেয়। এই ব্যাখ্যাগুলো প্রযুক্তিগতভাবে সঠিক হলেও, এগুলো ডেভেলপারদের ওপর বাড়তি দায়িত্ব চাপিয়ে দেয়—কোন মোডটি বেছে নিতে হবে এবং লুকানো টোকেন ফি-এর জন্য কীভাবে বাজেট করতে হবে তা জানার জন্য।
সারকথা
একটি JSON স্কিমা এখন আর কোনো সেফটি নেট (safety net) নয়; এটি কেবল একটি আকৃতি মাত্র। নিশ্চিত করুন যে ভেতরের ডেটা বাস্তবতার সাথে মিলে যাচ্ছে, লুকানো টোকেন খরচের দিকে নজর রাখুন এবং মনে রাখবেন যে একটি মডেলের "thinking" প্রক্রিয়া এমনকি সবচেয়ে পরিচ্ছন্ন আউটপুটকেও নষ্ট করে দিতে পারে।
