প্রকাশিত: ১৩ মে, ২০২৫
বৃহৎ ভাষা মডেলগুলো (এলএলএম) মাঝে মাঝে দীর্ঘ প্রতিক্রিয়া দেওয়ার জন্য কুখ্যাত। এমনকি আপনি যদি মডেলটিকে শুধু 'সত্য' বা 'মিথ্যা' দিয়ে উত্তর দিতে বলেন, তবুও মডেলটি বন্ধুত্বপূর্ণভাবে এবং আপনার চাওয়ার চেয়েও বেশি কিছু জানিয়ে প্রতিক্রিয়া জানাতে পারে, যেমন: "নিশ্চয়ই, উত্তরটি হলো: সত্য।"
এই চ্যালেঞ্জটি মোকাবেলা করার জন্য, প্রম্পট এপিআই আপনাকে LanguageModel.prompt() এবং LanguageModel.promptStreaming() মেথডগুলিতে একটি JSON স্কিমা পাস করার মাধ্যমে মডেলের রেসপন্সের একটি JSON আউটপুট ফরম্যাট নির্দিষ্ট করার সুযোগ দেয়। ক্রোম ভার্সন ১৩৭ থেকে স্ট্রাকচার্ড আউটপুট সাপোর্ট উপলব্ধ।
JSON স্কিমা কী?
JSON স্কিমা হলো একটি পরিভাষা যা বৃহৎ পরিসরে JSON ডেটার সামঞ্জস্য, বৈধতা এবং আন্তঃকার্যক্ষমতা নিশ্চিত করে। ডেটা আদান-প্রদানের ক্ষেত্রে, JSON ডেটার কাঠামো ও নিয়মাবলী নির্ধারণের জন্য JSON স্কিমা একটি শক্তিশালী মান হিসেবে পরিচিত। এটি আপনার ডেটার বৈশিষ্ট্যগুলো সংজ্ঞায়িত করতে একগুচ্ছ কীওয়ার্ড ব্যবহার করে।
JSON স্কিমা হলো কাঠামোগত আউটপুট নিশ্চিত করার জন্য শিল্পমান, যা অন্যদের মধ্যে OpenAI API এবং Gemini API দ্বারা ব্যবহৃত হয়।
উদাহরণস্বরূপ, আপনি ম্যাস্টোডনের মতো কোনো অনলাইন সোশ্যাল নেটওয়ার্কে একটি পোস্টের জন্য মডেলটিকে সর্বাধিক তিনটি হ্যাশট্যাগ নির্ধারণ করতে বললেন। আদর্শ আউটপুটটি নিম্নলিখিত JSON-এর মতো দেখতে হতে পারে:
{
"hashtags": [
"#pottery",
"#dyi"
]
}
এই অনুরোধকৃত আউটপুট অবজেক্ট শেপের জন্য সংশ্লিষ্ট JSON স্কিমাটি তখন নিম্নরূপ দেখাবে:
{
"type": "object",
"properties": {
"hashtags": {
"type": "array",
"maxItems": 3,
"items": {
"type": "string",
"pattern": "^#[^\\s#]+$"
}
}
},
"required": ["hashtags"],
"additionalProperties": false
}
এই JSON স্কিমাটি একটি অবজেক্টের কাঠামো নির্ধারণ করে, যেটিতে অবশ্যই নিম্নলিখিত সীমাবদ্ধতা সহ একটি hashtags ফিল্ড থাকতে হবে:
-
"type": "object": মূল মানটি অবশ্যই একটি JSON অবজেক্ট হতে হবে। -
"properties": { "hashtags": ... }: অবজেক্টটিতেhashtagsনামে একটি প্রপার্টি থাকতে পারে (এবং এই ক্ষেত্রে, অবশ্যই থাকতে হবে)। "hashtags":-
"type": "array": মানটি অবশ্যই একটি অ্যারে হতে হবে। -
"maxItems": 3: অ্যারেটিতে সর্বাধিক ৩টি আইটেম থাকতে পারে। -
"items": { "type": "string", "pattern": "^#[^\\s#]+$" }: অ্যারের প্রতিটি আইটেম অবশ্যই একটি স্ট্রিং হতে হবে যা প্রদত্ত রেগুলার এক্সপ্রেশন প্যাটার্নের সাথে মেলে:^#[^\\s#]+$:-
^#→ অবশ্যই একটি#দিয়ে শুরু হতে হবে। -
[^\\s#]+→ এর পরে এক বা একাধিক অক্ষর থাকে যা স্পেস (\s) বা অন্য কোনো#নয়। -
$→ সেখানেই শেষ হতে হবে।
-
-
"required": ["hashtags"]: অবজেক্টটিতে অবশ্যইhashtagsপ্রপার্টি থাকতে হবে।"additionalProperties": false: হ্যাশট্যাগ ছাড়া অন্য কোনো প্রপার্টি অনুমোদিত নয়।
ফরম্যাটটির সক্ষমতা সম্পর্কে সম্পূর্ণ বিবরণের জন্য JSON Schema Basics ডকুমেন্টেশনটি পড়ুন।
প্রকৃতপক্ষে, এলএলএম (LLM) জেএসওএন স্কিমা (JSON Schema) তৈরিতে বেশ পারদর্শী। আপনার প্রম্পটে স্বাভাবিক ভাষায় সীমাবদ্ধতাগুলো বর্ণনা করুন এবং একটি বৈধ উদাহরণ জেএসওএন অবজেক্ট (JSON object) প্রদান করুন, তাহলেই আপনার অর্ধেক কাজ হয়ে যাবে। এরপর আপনি জেনারেট করা জেএসওএন স্কিমার সাথে জেএসওএন অবজেক্টগুলোকে যেকোনো একটি জেএসওএন স্কিমা ভ্যালিডেটর (JSON Schema validator) দিয়ে ভ্যালিডেট করতে পারবেন, যেমন—অনলাইন নিউটনসফট জেএসওএন স্কিমা ভ্যালিডেটর (Newtonsoft JSON Schema Validator )।

প্রম্পট এপিআই-তে একটি JSON স্কিমা পাঠান
মডেলটি যাতে অনুরোধ করা JSON স্কিমা মেনে চলে, তা নিশ্চিত করতে, আপনাকে prompt() বা ` promptStreaming() ` মেথডের `options` অবজেক্টে ` responseConstraint ফিল্ডের ভ্যালু হিসেবে JSON স্কিমাটিকে আর্গুমেন্ট হিসেবে পাস করতে হবে।
এখানে একটি খুব সাধারণ JSON স্কিমা উদাহরণ দেওয়া হলো, যা নিশ্চিত করে যে এই ম্যাস্টোডন পোস্টের মতো কোনো প্রদত্ত বার্তা মৃৎশিল্প সম্পর্কিত কিনা, তা শ্রেণীবদ্ধ করার ক্ষেত্রে মডেলটি ' true বা false দিয়ে সাড়া দেবে।
const session = await LanguageModel.create();
const schema = {
"type": "boolean"
};
const post = "Mugs and ramen bowls, both a bit smaller than intended- but that's
how it goes with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";
const result = await session.prompt(
`Is this post about pottery?\n\n${post}`,
{
responseConstraint: schema,
}
);
console.log(JSON.parse(result));
// true
পূর্বাভাসযোগ্য আউটপুট সমর্থন করুন
প্রম্পট এপিআই-এর জন্য স্ট্রাকচার্ড আউটপুট সাপোর্ট এলএলএম-এর প্রতিক্রিয়াগুলোকে অনেক বেশি অনুমানযোগ্য করে তোলে। মার্কডাউন প্রতিক্রিয়া থেকে কোনো অবজেক্ট বের করা বা অন্য কোনো পোস্ট-প্রসেসিং করার পরিবর্তে, ডেভেলপাররা এখন মডেলের প্রতিক্রিয়াটিকে একটি বৈধ JSON হিসেবে ধরে নিতে পারেন।
এর ফলে বিল্ট-ইন এআই ক্লাউড-ভিত্তিক এপিআই-এর আরও এক ধাপ কাছাকাছি চলে আসে এবং লোকাল, ক্লায়েন্ট-সাইড এআই চালানোর সমস্ত সুবিধাও পাওয়া যায়।