ব্লগে ফিরে যান

শুরু করাগাইড

OpenRouter থেকে CheapTokens-এ সুইচ করুন: base_url, key, model id

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

CheapTokens Team দ্বারাপ্রকাশিত হয়েছে 8 মিনিট পড়ার সময়

কভার: base_url, key এবং model id পরিবর্তন করে OpenAI-SDK অ্যাপ OpenRouter থেকে CheapTokens-এ সুইচ করা
এই পৃষ্ঠায়
  1. আসলে কী পরিবর্তন হয়
  2. সুইচের পর কোড
  3. কাজ করেছে কিনা যাচাই করুন
  4. কোন মডেল কী প্রতিস্থাপন করে
  5. একই ট্রাফিকের খরচ
  6. যদি কাজ না করে
  7. শিপ করার আগে

আপনার অ্যাপ ইতিমধ্যে OpenAI SDK-এর মাধ্যমে OpenRouter-এ কল করছে, এবং আপনি চান এটি পরিবর্তে CheapTokens-এ কল করুক। আপনি তিনটি মান পরিবর্তন করবেন — base_url, API key এবং model id — এবং দুটি ঐচ্ছিক হেডার মুছে ফেলবেন। বাকি কোড অপরিবর্তিত থাকবে।

নিচে Python, JavaScript এবং curl-এর জন্য সঠিক লাইন, সুইচটি কাজ করেছে কিনা তা নিশ্চিত করার একটি দ্রুত উপায়, এবং কোন মডেল কোন কাজের জন্য উপযুক্ত তার একটি টেবিল দেওয়া হলো। আপনি যদি কখনো CheapTokens-এ কোনো রিকোয়েস্ট না পাঠিয়ে থাকেন, তাহলে প্রথম API রিকোয়েস্ট গাইড-এ অ্যাকাউন্ট এবং key সম্পর্কে বলা আছে; ডকুমেন্টেশন-এ সম্পূর্ণ রেফারেন্স রয়েছে।

আসলে কী পরিবর্তন হয়#

OpenRouter-এর কুইকস্টার্ট (২৭ অক্টোবর ২০২৬-এ যাচাইকৃত) OpenAI ক্লায়েন্টকে base URL https://openrouter.ai/api/v1 দিয়ে কনফিগার করে এবং মডেলের নাম provider/model-name হিসেবে দেয়। CheapTokens একই OpenAI Chat Completions ফরম্যাট https://api.cheaptokens.dev/v1-এ সমর্থন করে। তাই ক্লায়েন্ট ক্লাস, chat.completions.create এবং উত্তর পড়ার পদ্ধতি অপরিবর্তিত থাকে।

আগে ও পরে: OpenRouter থেকে CheapTokens-এ সুইচ করার সময় যে তিনটি মান পরিবর্তন হয়
যে তিনটি মান বদলাতে হবে। key পরিবেশ ভেরিয়েবল হিসেবে দেখানো হয়েছে, কখনো কোডে নয়।

প্রতি লাইনে একটি করে পরিবর্তন:

  • base URL — OpenRouter-এর ঠিকানার বদলে https://api.cheaptokens.dev/v1;
  • API key — আপনার CheapTokens অ্যাকাউন্টের একটি key, যা পরিবেশ ভেরিয়েবল থেকে পড়া হয়;
  • model id — সম্পূর্ণ CheapTokens id, উদাহরণস্বরূপ deepseek-ai/DeepSeek-V4-Flash-0731। id গুলো CheapTokens ডকুমেন্টেশন থেকে নিন: বিভিন্ন প্রোভাইডার একই মডেলের নাম ভিন্নভাবে দেয়, এবং দামের লেবেল থেকে নেওয়া সংক্ষিপ্ত id গ্রহণ করা হয় না।

এবং একটি বাদ দেওয়া। OpenRouter-এর HTTP-Referer এবং X-OpenRouter-Title হেডার ঐচ্ছিক এবং শুধুমাত্র OpenRouter-এর লিডারবোর্ডে তথ্য যোগায়। এগুলো default_headers / defaultHeaders থেকে সরিয়ে ফেলুন; এখানে এগুলোর প্রয়োজন নেই।

সুইচের পর কোড#

একই রিকোয়েস্ট, তিনটি রানটাইম। আপনার অ্যাপ যেটি ব্যবহার করে সেটি বেছে নিন।

সুইচের পর আপনার কোড

Python

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

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

bash
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।

কাজ করেছে কিনা যাচাই করুন#

শুধু একটি উত্তর পাওয়াই যথেষ্ট প্রমাণ নয়। উত্তরের পাশে তিনটি জিনিস প্রিন্ট করুন: কোন মডেল উত্তর দিয়েছে, কেন থেমেছে, এবং কত টোকেন বিল হয়েছে।

python
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
টার্মিনালে পরিবেশ এবং চেক স্ক্রিপ্ট চলছে
key একবার সেট করুন, চেক চালান, model, finish_reason এবং usage পড়ুন।

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-ai/DeepSeek-V4-Flash-0731 380K 32,768 tokens
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8,192 tokens
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8,192 tokens

কোন সারিটি আপনার, নিশ্চিত নন? অ্যাপটি কী করে তা থেকে শুরু করুন:

আপনার কেস বেছে নিন

আপনার অ্যাপ মূলত কী করে?

ছোট, ঘন ঘন রিকোয়েস্ট — ক্লাসিফিকেশন, এক্সট্রাকশন, সাপোর্ট উত্তর

zai-org/GLM-5.3-Flash চেষ্টা করুন: 390K কনটেক্সট, উত্তর 8,192 টোকেন পর্যন্ত, এবং ইনপুট ও আউটপুট মিলিয়ে মোট খরচে OpenRouter-এর চেয়ে সস্তা।

দীর্ঘ উত্তর, কোড, এজেন্ট লুপ

deepseek-ai/DeepSeek-V4-Flash-0731 চেষ্টা করুন: উত্তর 32,768 টোকেন পর্যন্ত, 380K কনটেক্সট, দিনের যেকোনো সময় একই দাম।

একটি স্থির ওয়ার্কলোড যার জন্য আপনি বর্তমানে OpenRouter-এ বেশি দাম দিচ্ছেন

MiniMaxAI/MiniMax-M2.7 চেষ্টা করুন: 180K কনটেক্সট, উত্তর 8,192 টোকেন পর্যন্ত, এবং মোট খরচে OpenRouter-এর চেয়ে সস্তা।

একই ট্রাফিকের খরচ#

ধরুন আপনার বট ১,০০০টি রিকোয়েস্ট পাঠায়, প্রতিটিতে প্রায় ৫০০ ইনপুট টোকেন এবং ৩০০ আউটপুট টোকেন। এটি একটি অনুমান — usage থেকে আপনার নিজের সংখ্যা বসিয়ে নিন। নিচের টেবিলটি লাইভ: আমাদের দাম এবং OpenRouter কলাম বর্তমান মূল্য তালিকা থেকে নেওয়া, ইনপুট ও আউটপুট মিলিয়ে।

মডেল প্রতি অনুরোধে ১,০০০টি অনুরোধ OpenRouter, ১,০০০টি অনুরোধ
GLM-5.3-Flash $0.000022 $0.022 $0.0434
DeepSeek-V4-Flash $0.000038 $0.0375 $0.0708
MiniMax-M2.7 $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 কী ব্যাখ্যা করে কেন একটি ভুল স্ল্যাশ পাথ নষ্ট করে।

শিপ করার আগে#

চেকলিস্ট

সুইচ চেকলিস্ট