API রেফারেন্স¶
Claudin.io একটি OpenAI-সামঞ্জস্যপূর্ণ API। আপনি যদি OpenAI API ব্যবহার করে থাকেন, তবে এখানকার সবকিছু আপনার পরিচিত হবে — শুধু Claudin.io-এর বেস URL নির্দেশ করুন এবং claudinio মডেল ব্যবহার করুন।
বেস URL¶
OpenAI-স্টাইলের রুটগুলো /v1-এর অধীনে থাকে।
প্রমাণীকরণ¶
প্রতিটি অনুরোধে আপনার API key পাঠান, নিম্নলিখিত হেডারের যেকোনো একটি ব্যবহার করে:
মডেল¶
| মডেল id | কনটেক্সট উইন্ডো |
|---|---|
claudinio |
256K টোকেন |
সর্বত্র claudinio ব্যবহার করুন। (কিছু ক্লায়েন্ট provider/model ফরম্যাট আশা করে — সেগুলোর জন্য claudinio/claudinio ব্যবহার করুন।)
এন্ডপয়েন্টসমূহ¶
| মেথড ও পাথ | বিবরণ |
|---|---|
POST /v1/chat/completions |
চ্যাট কমপ্লিশন — প্রাথমিক এন্ডপয়েন্ট |
POST /v1/completions |
লিগ্যাসি টেক্সট কমপ্লিশন |
POST /v1/messages |
Anthropic Messages ফরম্যাট |
POST /v1/responses |
Responses API (Codex) |
POST /v1/embeddings |
টেক্সট এমবেডিংস |
GET /v1/models |
উপলব্ধ মডেলের তালিকা |
চ্যাট কমপ্লিশন¶
curl https://api.claudin.io/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "claudinio",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a haiku about proxies."}
],
"temperature": 0.7
}'
স্ট্যান্ডার্ড OpenAI প্যারামিটারগুলো সমর্থিত: messages, temperature, top_p, max_tokens, stream, stop, tools / tool_choice (ফাংশন কলিং), response_format, ইত্যাদি। দুটি প্যারামিটারের ক্ষেত্রে পাঠানোর আগে জানার মতো সীমা রয়েছে: max_tokens একটি ন্যূনতম ও সর্বোচ্চ সীমার মধ্যে আবদ্ধ, এবং n অবশ্যই 1 হতে হবে।
max_tokens এবং রিজনিং¶
Claudinio মডেলগুলো উত্তর দেওয়ার আগে চিন্তা করে, এবং রিজনিং টোকেনগুলো max_tokens-এর মধ্যে গণনা হয় — একই বাজেট অভ্যন্তরীণ চেইন-অফ-থট এবং দৃশ্যমান উত্তরের জন্য প্রযোজ্য। তাই একটি ছোট max_tokens প্রায় সম্পূর্ণরূপে রিজনিং-এ ব্যয় হয়ে যেতে পারে, ফলে উত্তরটি বাক্যের মাঝপথে ছেঁটে যায়।
এটি প্রতিরোধ করতে, 32000-এর নিচের মানগুলো স্বয়ংক্রিয়ভাবে 32000-এ উন্নীত করা হয়। অন্যদিকে, 393216-এর উপরের মানগুলো 393216-এ নামিয়ে আনা হয় — মডেলগুলো গ্রহণ করে এমন সর্বোচ্চ সীমা — কারণ এর চেয়ে বড় সংখ্যা "যত খুশি তত" হিসেবে গণ্য না হয়ে সরাসরি প্রত্যাখ্যাত হয়। এই দুটির মাঝের যেকোনো মান অপরিবর্তিত অবস্থায় পাস হয়, এবং প্যারামিটারটি বাদ দেওয়া সবসময়ই ঠিক।
max_tokens একটি সর্বোচ্চ সীমা, সংরক্ষণ নয়: প্রকৃতপক্ষে উৎপন্ন টোকেনের জন্য আপনাকে বিল করা হয়, তাই একটি উদার মানের জন্য অতিরিক্ত খরচ হয় না।
আপনি যদি কাঠামোবদ্ধ আউটপুট (JSON, XML, একটি কঠোর ফরম্যাট) পার্স করেন, তবে পার্স করার আগে finish_reason পরীক্ষা করুন — "length" অর্থাৎ উত্তরটি টোকেন সীমায় পৌঁছেছে এবং অসম্পূর্ণ, তাই একটি পার্স ব্যর্থতা প্রত্যাশিত, এটি ত্রুটিপূর্ণ-মডেল সমস্যা নয়:
choice = response.choices[0]
if choice.finish_reason == "length":
... # truncated — retry with a larger max_tokens
data = json.loads(choice.message.content)
একাধিক কমপ্লিশন (n)¶
শুধুমাত্র n = 1 সমর্থিত। 1-এর চেয়ে বড় n পাঠালে 400 রিটার্ন হয় "code": "unsupported_parameter" সহ; প্যারামিটারটি বাদ দেওয়া সবসময়ই নিরাপদ।
Claudinio মডেলগুলো উত্তর দেওয়ার আগে চিন্তা করে, এবং রিজনিং প্রক্রিয়াটি একটি একক চিন্তাধারা তৈরি করে — এটিকে একাধিক স্বাধীন প্রার্থীতে বিভক্ত করার কোনো সহজ উপায় নেই, তাই আপস্ট্রিমগুলোও তা অফার করে না। আপনি যদি একাধিক প্রার্থী চান, তবে অনুরোধটি একাধিকবার পাঠান (আরও বেশি temperature আপনাকে বৈচিত্র্য দেবে), এবং মনে রাখবেন প্রতিটির জন্য আলাদাভাবে বিল করা হয়।
আমরা নীরবে একটি একক চয়েস ফিরিয়ে না দিয়ে n > 1 প্রত্যাখ্যান করি: যে ক্লায়েন্ট চারটি চেয়েছিল এবং একটি পায়, সে সাধারণত পরে তার নিজস্ব কোডের ভিতরে ব্যর্থ হয়, কেন তা ব্যাখ্যা করার জন্য আমাদের পক্ষ থেকে কোনো এরর ছাড়াই।
স্ট্রিমিং¶
OpenAI স্ট্রিমিং ফরম্যাটে সার্ভার-প্রেরিত ইভেন্ট পেতে "stream": true সেট করুন (data: {...} চাঙ্কগুলো data: [DONE] দ্বারা সমাপ্ত হয়)।
টুল / ফাংশন কলিং¶
claudinio টুল কল সমর্থন করে। tools পাঠান এবং প্রতিক্রিয়া থেকে tool_calls পড়ুন, ঠিক OpenAI API-র মতোই। এটিই এটিকে Claude Code, Kilo এবং Cursor-এর মতো এজেন্টিক এডিটরের ভিতরে কাজ করতে সক্ষম করে।
মাল্টিমোডাল ইনপুট¶
claudinio একটি টেক্সট মডেল, তবে Claudin.io ইমেজ, অডিও এবং ভিডিও ব্লকগুলো স্বচ্ছভাবে পরিচালনা করে: আপনি সেগুলো পাঠালে, মডেল সেগুলো দেখার আগে প্রক্সি সেগুলোকে টেক্সট বিবরণ/ট্রান্সক্রিপশনে রূপান্তর করে। আপনাকে বিশেষ কিছু করতে হবে না — স্ট্যান্ডার্ড OpenAI কনটেন্ট ব্লক পাঠান এবং এটি কাজ করবে।
এররসমূহ¶
এররগুলো OpenAI এরর আকৃতি অনুসরণ করে:
| স্ট্যাটাস | অর্থ | কী করবেন |
|---|---|---|
401 |
অবৈধ বা অনুপস্থিত API key | কী এবং অথ হেডার পরীক্ষা করুন |
403 |
এন্ডপয়েন্ট অনুমোদিত নয় | সমর্থিত /v1/* পাথগুলোর একটি ব্যবহার করুন |
402 |
কোনো সক্রিয় সাবস্ক্রিপশন নেই | সাবস্ক্রাইব করুন — পুনরায় চেষ্টা করা সাহায্য করবে না |
429 |
বাজেট ক্যাপ পৌঁছেছে বা রেট-লিমিটেড | উইন্ডো রিসেটের জন্য অপেক্ষা করুন (Retry-After হেডার দেখুন) অথবা আপগ্রেড করুন |
400 |
ত্রুটিপূর্ণ অনুরোধ | আপনার JSON / প্যারামিটার পরীক্ষা করুন — max_tokens এবং n দেখুন |
5xx |
আপস্ট্রিম/প্রোভাইডার সমস্যা | ব্যাকঅফ সহ পুনরায় চেষ্টা করুন |
প্রোভাইডারের বিবরণ ডিজাইন অনুসারে লুকানো থাকে
এরর মেসেজগুলো স্যানিটাইজ করা হয় যাতে তারা অন্তর্নিহিত মডেল প্রোভাইডার ফাঁস না করে। আপনি সর্বদা Claudin.io-ব্র্যান্ডেড, OpenAI-আকৃতির এরর দেখতে পাবেন।
বাজেট ক্যাপে পৌঁছানো¶
যখন আপনি বর্তমান উইন্ডোর ব্যয় সুরক্ষা শেষ করে দেন, অনুরোধগুলো 429 রিটার্ন করে একটি Retry-After হেডার সহ যা উইন্ডো রিসেট হওয়া পর্যন্ত সেকেন্ড জানায়। আপনার ড্যাশবোর্ড সঠিক রিসেট সময় এবং অবশিষ্ট বাজেট দেখায়। অবিলম্বে পুনরায় চেষ্টা না করে সেই হেডারের উপর ভিত্তি করে অপেক্ষা করুন। উইন্ডোগুলো কীভাবে কাজ করে তা জানতে প্ল্যান ও সীমা দেখুন।
429-এর বদলে একটি বার্তা¶
অল্প কিছু অ্যাকাউন্টে আমরা একই পরিস্থিতির জন্য ভিন্ন একটি উত্তর পরখ করছি। ত্রুটির বদলে অনুরোধটি সম্পন্ন হয় এবং উত্তরটিই জানায় যে সীমা ছুঁয়ে গেছে এবং কখন তা রিসেট হবে। আমরা মাপছি, এজেন্ট যে ত্রুটিটি নিঃশব্দে গিলে ফেলে তার চেয়ে এভাবে তথ্যটি মানুষের কাছে বেশি নির্ভরযোগ্যভাবে পৌঁছায় কি না — এবং স্পষ্ট করে বললে তাঁরা মানানসই প্ল্যানে যেতে চান কি না।
আপনি অটোমেশন বানালে 2xx-কে "কাজ হয়ে গেছে" বলে পড়বেন না। যে উত্তর বলে সীমা
ছুঁয়ে গেছে, সেটিকে সীমা ছোঁয়া হিসেবেই ধরুন এবং উইন্ডো রিসেট না হওয়া পর্যন্ত
অপেক্ষা করুন। উপরের 429 এখনও ডিফল্ট আচরণ এবং প্রায় প্রতিটি অ্যাকাউন্ট সেটিই পায়।
রেট লিমিটিং¶
Claudin.io স্বাভাবিক ব্যবহার হার্ড-ব্লক করে না। অপব্যবহারমূলক অনুরোধের হার প্রত্যাখ্যাত না হয়ে ধীর করা হয় (একটি স্বচ্ছ থ্রটল), তাই ভালো আচরণকারী ক্লায়েন্টদের কখনো শাস্তি দেওয়া হয় না। বাস্তবে আপনাকে কিছু করতে হবে না — বিরল 429-এর ক্ষেত্রে শুধু পুনরায় চেষ্টা করুন।