ब्लॉग पर वापस जाएं

शुरुआत करेंगाइड

OpenRouter से CheapTokens पर स्विच करें: base_url, key, model id

OpenAI SDK (Python और JavaScript) में base_url, API key और model id बदलें, पहली रिक्वेस्ट भेजें और जाँचें कि यह काम कर गई।

CheapTokens Team द्वाराप्रकाशित 7 मिनट का पाठ

कवर: 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 का quickstart (27 अक्टूबर 2026 को जाँचा गया) OpenAI क्लाइंट को base URL https://openrouter.ai/api/v1 के साथ कॉन्फ़िगर करता है और मॉडलों को provider/model-name के रूप में नाम देता है। CheapTokens https://api.cheaptokens.dev/v1 पर वही OpenAI Chat Completions फ़ॉर्मैट बोलता है। इसलिए क्लाइंट क्लास, chat.completions.create और जवाब पढ़ने का तरीका नहीं बदलता।

पहले और बाद: OpenRouter से CheapTokens पर स्विच करते समय बदलने वाली तीन वैल्यू
बदलने के लिए तीन वैल्यू। Key को environment variable के रूप में दिखाया गया है, कभी कोड में नहीं।

यानी हर लाइन में एक बदलाव:

  • base URL — OpenRouter के पते के बजाय https://api.cheaptokens.dev/v1;
  • API key — आपके CheapTokens अकाउंट की key, जो environment variable से पढ़ी जाती है;
  • 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 model 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)
टर्मिनल में environment और चेक स्क्रिप्ट चलती हुई
Key एक बार सेट करें, चेक चलाएँ, model, finish_reason और usage पढ़ें।

stop का finish_reason मतलब है कि मॉडल ने अपने आप खत्म किया। length मतलब max_tokens ने जवाब काट दिया। usage इनपुट और आउटपुट टोकन अलग-अलग दिखाता है, और आपका बिल इन्हीं दो संख्याओं से बनता है — वही दो जिन्हें आप OpenRouter पर ट्रैक कर रहे थे।

स्वयं आज़माएँआज़माएँ: अगर आप max_tokens को 1 पर सेट करें तो finish_reason क्या कहता है?उत्तर दिखाएँ

यह length कहता है — जवाब max_tokens से काट दिया गया। यह अच्छा टेस्ट है कि आपका कोड कटे हुए जवाब को संभालता है।

कौन-सा मॉडल किसकी जगह लेता है#

मॉडल को काम के हिसाब से चुनें, न कि उस नाम के हिसाब से जो आपने OpenRouter पर इस्तेमाल किया था। नीचे के तथ्य 27 अक्टूबर 2026 को जाँची गई 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 context, 8,192 टोकन तक के जवाब, और इनपुट व आउटपुट मिलाकर कुल में यह OpenRouter से सस्ता है।

लंबे जवाब, कोड, एजेंट लूप

deepseek-ai/DeepSeek-V4-Flash-0731 आज़माएँ: 32,768 टोकन तक के जवाब, 380K context, दिन के किसी भी घंटे एक ही कीमत।

एक स्थिर वर्कलोड जिसके लिए आप अभी OpenRouter की ऊँची दर चुका रहे हैं

MiniMaxAI/MiniMax-M2.7 आज़माएँ: 180K context, 8,192 टोकन तक के जवाब, और कुल में यह OpenRouter से सस्ता पड़ता है।

वही ट्रैफ़िक कितने का पड़ता है#

मान लें आपका बॉट 1,000 रिक्वेस्ट भेजता है, हर एक में लगभग 500 इनपुट टोकन और 300 आउटपुट टोकन। यह एक अनुमान है — usage से अपनी संख्याएँ डालें। नीचे की तालिका लाइव है: हमारी कीमतें और OpenRouter कॉलम मौजूदा प्राइस लिस्ट से हैं, इनपुट और आउटपुट मिलाकर।

मॉडल प्रति अनुरोध 1,000 अनुरोध OpenRouter, 1,000 अनुरोध
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

प्रति अनुरोध 500 इनपुट और 300 आउटपुट टोकन। प्रति 1M टोकन की कीमतें वर्तमान हैं और हमारे टैरिफ के साथ बदलती रहती हैं; OpenRouter कॉलम समान कार्यभार के लिए संदर्भ कीमतें दिखाता है।

DeepSeek-V4-Flash पर वे 1,000 रिक्वेस्ट $0.0375 में आती हैं। पूरी कीमतें प्राइसिंग पेज पर हैं; आपसे किस चीज़ का बिल लिया जाता है इसका विचार इनपुट बनाम आउटपुट टोकन में है।

अगर यह काम न करे#

स्विच के बाद, तीन एरर ज़्यादातर परेशानी कवर कर लेते हैं। संदेश को कारण से मिलाएँ:

जोड़े मिलाएँ

हर लक्षण को उसके कारण से मिलाएँ

  • 401 UnauthorizedKey गायब है, गलत टाइप हुई है, या अभी भी OpenRouter की है
  • 404 Not Foundbase URL का पाथ गलत है या model id पूरा CheapTokens id नहीं है
  • जवाब बीच वाक्य में कट गयाmax_tokens जवाब की ज़रूरत से कम है; finish_reason length कहता है

401 और 404 ट्रबलशूटिंग लेख हर एक को सटीक संदेशों के साथ समझाता है, और base_url क्या है बताता है कि एक गलत स्लैश पाथ को क्यों तोड़ देता है।

शिप करने से पहले#

चेकलिस्ट

स्विच चेकलिस्ट