শুরু করাগাইড
OpenRouter থেকে CheapTokens-এ সুইচ করুন: base_url, key, model id
OpenAI SDK-তে (Python এবং JavaScript) base_url, API key এবং model id পরিবর্তন করুন, প্রথম রিকোয়েস্ট পাঠান এবং কাজ করেছে কিনা যাচাই করুন।

এই পৃষ্ঠায়
আপনার অ্যাপ ইতিমধ্যে OpenAI SDK-এর মাধ্যমে OpenRouter-এ কল করছে, এবং আপনি চান এটি পরিবর্তে CheapTokens-এ কল করুক। আপনি তিনটি মান পরিবর্তন করবেন — base_url, API key এবং model id — এবং দুটি ঐচ্ছিক হেডার মুছে ফেলবেন। বাকি কোড অপরিবর্তিত থাকবে।
নিচে Python, JavaScript এবং curl-এর জন্য সঠিক লাইন, সুইচটি কাজ করেছে কিনা তা নিশ্চিত করার একটি দ্রুত উপায়, এবং কোন মডেল কোন কাজের জন্য উপযুক্ত তার একটি টেবিল দেওয়া হলো। আপনি যদি কখনো CheapTokens-এ কোনো রিকোয়েস্ট না পাঠিয়ে থাকেন, তাহলে প্রথম API রিকোয়েস্ট গাইড-এ অ্যাকাউন্ট এবং key সম্পর্কে বলা আছে; ডকুমেন্টেশন-এ সম্পূর্ণ রেফারেন্স রয়েছে।
আসলে কী পরিবর্তন হয়#
OpenRouter-এর কুইকস্টার্ট (২৭ অক্টোবর ২০২৬-এ যাচাইকৃত) OpenAI ক্লায়েন্টকে base URL https:/ দিয়ে কনফিগার করে এবং মডেলের নাম provider/ হিসেবে দেয়। CheapTokens একই OpenAI Chat Completions ফরম্যাট https:/-এ সমর্থন করে। তাই ক্লায়েন্ট ক্লাস, chat. এবং উত্তর পড়ার পদ্ধতি অপরিবর্তিত থাকে।

প্রতি লাইনে একটি করে পরিবর্তন:
- base URL — OpenRouter-এর ঠিকানার বদলে
https:/;/ api. cheaptokens. dev/ v1 - API key — আপনার CheapTokens অ্যাকাউন্টের একটি key, যা পরিবেশ ভেরিয়েবল থেকে পড়া হয়;
- model id — সম্পূর্ণ CheapTokens id, উদাহরণস্বরূপ
deepseek-। id গুলো CheapTokens ডকুমেন্টেশন থেকে নিন: বিভিন্ন প্রোভাইডার একই মডেলের নাম ভিন্নভাবে দেয়, এবং দামের লেবেল থেকে নেওয়া সংক্ষিপ্ত id গ্রহণ করা হয় না।ai/ DeepSeek- V4- Flash- 0731
এবং একটি বাদ দেওয়া। OpenRouter-এর HTTP-Referer এবং X- হেডার ঐচ্ছিক এবং শুধুমাত্র OpenRouter-এর লিডারবোর্ডে তথ্য যোগায়। এগুলো default_headers / defaultHeaders থেকে সরিয়ে ফেলুন; এখানে এগুলোর প্রয়োজন নেই।
সুইচের পর কোড#
একই রিকোয়েস্ট, তিনটি রানটাইম। আপনার অ্যাপ যেটি ব্যবহার করে সেটি বেছে নিন।
সুইচের পর আপনার কোড
Python
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Reply with one word: ready'}],
max_tokens=20,
)
print(resp.choices[0].message.content)JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.cheaptokens.dev/v1',
apiKey: process.env.CHEAPTOKENS_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-ai/DeepSeek-V4-Flash-0731',
messages: [{ role: 'user', content: 'Reply with one word: ready' }],
max_tokens: 20,
});
console.log(resp.choices[0].message.content);curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Reply with one word: ready"}], "max_tokens": 20}'চালানোর আগে আরও একটি বিষয়। যদি আপনার রিকোয়েস্টে OpenRouter-এর একান্ত নিজস্ব ফিল্ড থাকে — রাউটিং বা ফলব্যাক তালিকা, প্রোভাইডার পছন্দ, ~alias মডেল id — সেগুলো OpenRouter-এর অন্তর্গত। রিকোয়েস্টটি স্ট্যান্ডার্ড Chat Completions ফিল্ডে সীমাবদ্ধ রাখুন: model, messages, temperature, max_tokens, stream।
কাজ করেছে কিনা যাচাই করুন#
শুধু একটি উত্তর পাওয়াই যথেষ্ট প্রমাণ নয়। উত্তরের পাশে তিনটি জিনিস প্রিন্ট করুন: কোন মডেল উত্তর দিয়েছে, কেন থেমেছে, এবং কত টোকেন বিল হয়েছে।
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
stop-এর finish_reason মানে মডেল নিজে থেকেই শেষ করেছে। length মানে max_tokens উত্তরটি কেটে দিয়েছে। usage ইনপুট এবং আউটপুট টোকেন আলাদাভাবে দেখায়, এবং আপনার বিল এই দুটি সংখ্যা দিয়েই তৈরি — OpenRouter-এ আপনি যেই দুটি ট্র্যাক করছিলেন।
নিজে চেষ্টা করুনচেষ্টা করুন: max_tokens 1 সেট করলে finish_reason কী বলে?উত্তর দেখান
এটি বলে length — উত্তরটি max_tokens দ্বারা কেটে গেছে। আপনার কোড কাটা উত্তর সামলাতে পারে কিনা পরীক্ষা করার ভালো উপায়।
কোন মডেল কী প্রতিস্থাপন করে#
OpenRouter-এ আপনি যে নাম ব্যবহার করতেন তার ভিত্তিতে নয়, কাজের ভিত্তিতে মডেল বেছে নিন। নিচের তথ্য ২৭ অক্টোবর ২০২৬-এ যাচাইকৃত CheapTokens মূল্য তালিকা থেকে নেওয়া; একটি ব্যালেন্সেই তিনটি মডেল কভার হয় এবং দিনের সময় অনুযায়ী দাম পরিবর্তন হয় না।
টেবিলটি ডানদিকে স্ক্রোল করুন →
| Model | model id |
Context | Max answer |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768 tokens |
| GLM-5.3-Flash | zai- |
390K | 8,192 tokens |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192 tokens |
কোন সারিটি আপনার, নিশ্চিত নন? অ্যাপটি কী করে তা থেকে শুরু করুন:
আপনার কেস বেছে নিন
আপনার অ্যাপ মূলত কী করে?
উত্তর দেখতে একটি বিকল্প বেছে নিন
ছোট, ঘন ঘন রিকোয়েস্ট — ক্লাসিফিকেশন, এক্সট্রাকশন, সাপোর্ট উত্তর
zai- চেষ্টা করুন: 390K কনটেক্সট, উত্তর 8,192 টোকেন পর্যন্ত, এবং ইনপুট ও আউটপুট মিলিয়ে মোট খরচে OpenRouter-এর চেয়ে সস্তা।
দীর্ঘ উত্তর, কোড, এজেন্ট লুপ
deepseek- চেষ্টা করুন: উত্তর 32,768 টোকেন পর্যন্ত, 380K কনটেক্সট, দিনের যেকোনো সময় একই দাম।
একটি স্থির ওয়ার্কলোড যার জন্য আপনি বর্তমানে OpenRouter-এ বেশি দাম দিচ্ছেন
MiniMaxAI/ চেষ্টা করুন: 180K কনটেক্সট, উত্তর 8,192 টোকেন পর্যন্ত, এবং মোট খরচে OpenRouter-এর চেয়ে সস্তা।
একই ট্রাফিকের খরচ#
ধরুন আপনার বট ১,০০০টি রিকোয়েস্ট পাঠায়, প্রতিটিতে প্রায় ৫০০ ইনপুট টোকেন এবং ৩০০ আউটপুট টোকেন। এটি একটি অনুমান — usage থেকে আপনার নিজের সংখ্যা বসিয়ে নিন। নিচের টেবিলটি লাইভ: আমাদের দাম এবং OpenRouter কলাম বর্তমান মূল্য তালিকা থেকে নেওয়া, ইনপুট ও আউটপুট মিলিয়ে।
| মডেল | ইনপুট $/১ মিলিয়ন | আউটপুট $/১ মিলিয়ন | প্রতি অনুরোধে | ১,০০০টি অনুরোধ | OpenRouter, ১,০০০টি অনুরোধ |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0434 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000038 | $0.0375 | $0.0708 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.07 | $0.51 |
প্রতি অনুরোধে ৫০০ ইনপুট এবং ৩০০ আউটপুট টোকেন। প্রতি 1M টোকেনের দাম বর্তমান এবং আমাদের ট্যারিফের সাথে পরিবর্তিত হয়; OpenRouter কলামটি একই ওয়ার্কলোডের জন্য রেফারেন্স মূল্য দেখায়।
DeepSeek-V4-Flash-এ সেই ১,০০০ রিকোয়েস্টের খরচ দাঁড়ায় $0.0375। সম্পূর্ণ দাম মূল্য পৃষ্ঠা-এ; কী জন্য বিল হয় তার ধারণা ইনপুট বনাম আউটপুট টোকেন-এ।
যদি কাজ না করে#
সুইচের পর তিনটি ত্রুটি বেশিরভাগ সমস্যা কভার করে। বার্তার সাথে কারণ মিলিয়ে নিন:
জোড়া মেলান
প্রতিটি লক্ষণের সাথে তার কারণ মিলান
বাম দিকের একটি আইটেমে ট্যাপ করুন, তারপর তার জোড়ায়
- 401 Unauthorizedkey অনুপস্থিত, ভুল টাইপ করা, অথবা এখনও OpenRouter-এর
- 404 Not Foundbase URL পাথ ভুল অথবা model id সম্পূর্ণ CheapTokens id নয়
- বাক্যের মাঝপথে উত্তর কেটে যাওয়াmax_tokens উত্তরের প্রয়োজনের চেয়ে কম; finish_reason বলছে length
401 এবং 404 ট্রাবলশুটিং নিবন্ধ-এ প্রতিটির সঠিক বার্তাসহ বিস্তারিত আছে, এবং base_url কী ব্যাখ্যা করে কেন একটি ভুল স্ল্যাশ পাথ নষ্ট করে।
শিপ করার আগে#
চেকলিস্ট
সুইচ চেকলিস্ট



