البدءدليل
الانتقال من OpenRouter إلى CheapTokens: base_url والمفتاح ومعرّف النموذج
غيّر base_url ومفتاح API ومعرّف النموذج في OpenAI SDK (Python وJavaScript)، وأرسل أول طلب وتحقق من نجاحه.

في هذه الصفحة
تطبيقك يستدعي OpenRouter بالفعل عبر OpenAI SDK، وتريد أن يستدعي CheapTokens بدلاً منه. تُغيّر ثلاث قيم — base_url، ومفتاح API، ومعرّف model — وتحذف ترويستين اختياريتين. يبقى باقي الكود كما هو.
فيما يلي الأسطر الدقيقة لـ Python وJavaScript وcurl، وطريقة سريعة للتأكد من نجاح التبديل، وجدول يوضح أي نموذج يناسب أي مهمة. إذا لم تكن قد أرسلت طلبًا إلى CheapTokens من قبل، فإن دليل أول طلب API يغطي الحساب والمفتاح؛ والتوثيق يحتوي على المرجع الكامل.
ما الذي يتغيّر فعليًا#
يُهيّئ دليل البدء السريع في OpenRouter (تم التحقق منه في 27 أكتوبر 2026) عميل OpenAI بعنوان base URL https:/ ويسمّي النماذج بصيغة provider/. يتحدث CheapTokens بنفس صيغة OpenAI Chat Completions على https:/. لذا فإن فئة العميل وchat. وطريقة قراءتك للإجابة لا تتغيّر.

هذا تبديل واحد لكل سطر:
- base URL —
https:/بدلاً من عنوان OpenRouter؛/ api. cheaptokens. dev/ v1 - مفتاح API — مفتاح من حسابك في CheapTokens، يُقرأ من متغير بيئة؛
- معرّف النموذج — معرّف CheapTokens الكامل، مثل
deepseek-. خُذ المعرّفات من توثيق CheapTokens: مزوّدون مختلفون يسمّون النموذج نفسه بأسماء مختلفة، والمعرّفات القصيرة من ملصقات الأسعار غير مقبولة.ai/ DeepSeek- V4- Flash- 0731
وحذف واحد. ترويستا HTTP-Referer وX- في OpenRouter اختياريتان وتغذّيان لوحات المتصدرين في 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 — فهي تنتمي إلى 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)
finish_reason من stop يعني أن النموذج أنهى من تلقاء نفسه. length يعني أن max_tokens قطع الإجابة. usage يعرض توكنات الإدخال والإخراج بشكل منفصل، وهما الرقمان اللذان تتكوّن منهما فاتورتك — نفس الرقمين اللذين كنت تتابعهما على OpenRouter.
جرّب بنفسكجرّب: ماذا يقول finish_reason إذا عيّنت max_tokens إلى 1؟إظهار الإجابة
يقول length — قُطعت الإجابة بواسطة max_tokens. اختبار جيد أن يتعامل كودك مع رد مبتور.
أي نموذج يحل محل ماذا#
اختر النموذج حسب المهمة، لا حسب الاسم الذي استخدمته على OpenRouter. الحقائق أدناه من قائمة أسعار CheapTokens التي تم التحقق منها في 27 أكتوبر 2026؛ رصيد واحد يغطي النماذج الثلاثة ولا يتغيّر السعر حسب وقت اليوم.
قم بتمرير الجدول لليمين →
| النموذج | معرّف model |
السياق | أقصى إجابة |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768 توكن |
| GLM-5.3-Flash | zai- |
390K | 8,192 توكن |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192 توكن |
لست متأكدًا أي صف يناسبك؟ ابدأ من ما يفعله التطبيق:
اختر حالتك
ماذا يفعل تطبيقك في الغالب؟
اختر خيارًا لعرض الإجابة
طلبات قصيرة ومتكررة — التصنيف والاستخراج وردود الدعم
جرّب zai-: سياق 390K، وإجابات حتى 8,192 توكن، وهو أرخص من OpenRouter بالإجمالي، مع احتساب الإدخال والإخراج معًا.
إجابات طويلة، وكود، وحلقات وكلاء
جرّب deepseek-: إجابات حتى 32,768 توكن، وسياق 380K، وسعر واحد في أي ساعة من اليوم.
حمل عمل ثابت تدفع له حاليًا سعر OpenRouter المرتفع
جرّب MiniMaxAI/: سياق 180K، وإجابات حتى 8,192 توكن، وبالإجمالي يخرج أرخص من OpenRouter.
كم يكلّف نفس حجم الحركة#
لنفترض أن بوتك يرسل 1,000 طلب، كل منها نحو 500 توكن إدخال و300 توكن إخراج. هذا افتراض — استبدله بأرقامك من usage. الجدول أدناه حيّ: أسعارنا وعمود OpenRouter مأخوذان من قائمة الأسعار الحالية، مع احتساب الإدخال والإخراج معًا.
| النموذج | الإدخال $/1M | الإخراج $/1M | لكل طلب | 1,000 طلبات | OpenRouter، 1,000 طلبات |
|---|---|---|---|---|---|
| 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 |
500 رمز إدخال و300 رمز إخراج لكل طلب. الأسعار لكل مليون رمز حالية وتتغير مع تعريفاتنا؛ يعرض عمود OpenRouter أسعارًا مرجعية لنفس حجم العمل.
على DeepSeek-V4-Flash تبلغ تلك الطلبات الـ 1,000 $0.0375. الأسعار الكاملة على صفحة الأسعار؛ وفكرة ما تُحاسب عليه موجودة في توكنات الإدخال مقابل الإخراج.
إذا لم يعمل#
بعد التبديل، تغطي ثلاثة أخطاء معظم المشكلات. طابق الرسالة مع السبب:
طابق الأزواج
طابق كل عرض مع سببه
اضغط على عنصر من اليسار، ثم على زوجه
- 401 Unauthorizedالمفتاح مفقود أو مكتوب خطأ أو لا يزال مفتاح OpenRouter
- 404 Not Foundمسار base URL خاطئ أو معرّف النموذج ليس معرّف CheapTokens كاملًا
- الإجابة مقطوعة في منتصف الجملةmax_tokens أقل مما تحتاجه الإجابة؛ وfinish_reason يقول length
مقال استكشاف أخطاء 401 و404 يستعرض كلًا منهما مع الرسائل الدقيقة، وما هو base_url يشرح لماذا يكسر شرطة مائلة واحدة خاطئة المسار.
قبل الإطلاق#
قائمة التحقق
قائمة التحقق من التبديل



