API وSDKدليل
LiteLLM مع api_base مخصص: استدعاء CheapTokens في Python
استخدم بادئة openai/ وapi_base ومعرّف نموذج كامل لاستدعاء CheapTokens من litellm.completion() ومن إعداد الوكيل config.yaml في LiteLLM، وأصلح Not Found.

في هذه الصفحة
لإرسال LiteLLM إلى CheapTokens تغيّر ثلاث قيم: model يأخذ البادئة openai/ أمام معرّف النموذج الكامل، وapi_base يصبح https:/، وapi_key هو مفتاح CheapTokens الخاص بك. هذا هو التبديل كله، سواء لـ litellm. في Python أو لوكيل LiteLLM.
لنفترض أن لديك مشروعًا يستدعي litellm. بنموذج OpenAI أو Anthropic، وتريد تجربة نموذج أرخص دون المساس ببقية الكود. البادئة هي ما يجعل ذلك يعمل: تقول وثائق مزوّد OpenAI المتوافق في LiteLLM (تم التحقق في 29 أكتوبر 2026) إنه لأي نقطة نهاية متوافقة مع OpenAI تضبط النموذج بـ openai/ حتى يوجّه LiteLLM الطلب إلى مزوّد OpenAI، ثم تمرّر api_base وapi_key بجانبه. يتحدث CheapTokens بصيغة OpenAI Chat Completions على https:/، لذا فهو مناسب.
الاستدعاء نفسه في Python وفي الوكيل#
الإعدادان قصيران. اختر التبويب الذي يطابق طريقة تشغيلك لـ LiteLLM.
نموذج CheapTokens واحد، وطريقتان لاستدعائه
Python SDK
import os
import litellm
response = litellm.completion(
model="openai/deepseek-ai/DeepSeek-V4-Flash-0731",
api_base="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
messages=[{"role": "user", "content": "Explain what api_base does in one sentence."}],
max_tokens=200,
)
print(response.choices[0].message.content)
print(response.usage)احتفظ بالمفتاح في متغير بيئة، لا في الملف.
إعداد الوكيل config.yaml
model_list:
- model_name: cheap-chat
litellm_params:
model: openai/deepseek-ai/DeepSeek-V4-Flash-0731
api_base: https://api.cheaptokens.dev/v1
api_key: os.environ/CHEAPTOKENS_API_KEYشغّله بـ litellm -. يطلب العملاء من الوكيل cheap-chat ولا يرون معرّف النموذج الحقيقي أبدًا.
استدعاء الوكيل
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "cheap-chat", "messages": [{"role": "user", "content": "Say hi"}]}'يستمع الوكيل على المنفذ 4000 افتراضيًا. بدّل النموذج خلف cheap-chat لاحقًا ولن يتغير هذا الطلب.
معرّف النموذج هو الجزء الذي يتعثر فيه الناس. المعرّف الذي يقبله CheapTokens هو الكامل، deepseek-، وopenai/ يأتي أمامه. ليس deepseek-، وليس مجرد البادئة مع اسم قصير. إن لم تكن متأكدًا من اسم النموذج، اعرض النماذج بـ GET /v1/models وانسخ المعرّف من الرد.

ما الذي يجب أن تراه#
شغّل تبويب Python. يُظهر print الأول نص النموذج. ويُظهر الثاني response.usage، عدد الرموز لهذا الاستدعاء الواحد: prompt_tokens لما أرسلته وcompletion_ لما كتبه النموذج. يعيدها LiteLLM بصيغة OpenAI، لذا يستمر الكود الذي يقرأ usage في العمل. إن أردت تحويل هذين الرقمين إلى فاتورة جارية، يُظهر تتبع تكلفة رموز الوكيل في Python كيف.
إضافة المزيد من النماذج إلى الوكيل#
فكرة model_name هي أن يحتفظ عملاؤك باسم مستعار واحد بينما تغيّر ما يقف خلفه. يمكن لـ model_list أن يحمل عدة إدخالات، كلها تشير إلى نفس api_base ونفس المفتاح، لأن رصيد CheapTokens واحد يغطي كل النماذج:
model_list:
- model_name: cheap-chat
litellm_params:
model: openai/deepseek-ai/DeepSeek-V4-Flash-0731
api_base: https://api.cheaptokens.dev/v1
api_key: os.environ/CHEAPTOKENS_API_KEY
- model_name: cheap-glm
litellm_params:
model: openai/zai-org/GLM-5.3-Flash
api_base: https://api.cheaptokens.dev/v1
api_key: os.environ/CHEAPTOKENS_API_KEY
- model_name: cheap-minimax
litellm_params:
model: openai/MiniMaxAI/MiniMax-M2.7
api_base: https://api.cheaptokens.dev/v1
api_key: os.environ/CHEAPTOKENS_API_KEYأي اسم مستعار لأي مهمة؟ لاستدعاءات الدردشة والوكلاء حيث قد تطول الإجابة، ابدأ بـ DeepSeek-V4-Flash: سياق 380K، وحتى 32,768 رمز إخراج لكل إجابة، وسعر ثابت بلا ساعات ذروة. يمتلك GLM-5.3-Flash سياقًا 390K وحتى 8,192 رمز إخراج. ويمتلك MiniMax-M2.7 سياقًا 180K. تحتوي صفحة DeepSeek على التفاصيل، وتُدرج الأسعار المعدلات الحالية للثلاثة.
عندما يتعطل: Not Found و401#
يغطي خطآن معظم الاستدعاءات الأولى الفاشلة. تقول وثائق LiteLLM ألا تضيف أي شيء إضافي إلى عنوان URL الأساسي، وأنه عند خطأ Not Found يجب أن تتحقق من أن api_base ينتهي بـ /v1. ملاحظة واحدة: مثال الوثائق نفسه لوكيل محلي يستخدم http:/ بلا /v1. ذلك خادم مختلف. بالنسبة لـ CheapTokens يبقى /v1.

اختر حالتك
كيف يبدو خطؤك؟
اختر خيارًا لعرض الإجابة
Not Found (404)
تحقق من api_base. يجب أن يكون بالضبط https:/، مع /v1 وبدون / في النهاية. يضيف LiteLLM بقية المسار بنفسه.
401 Unauthorized
المفتاح مفقود أو خاطئ، أو قرأ LiteLLM متغير بيئة فارغًا. اطبع طول os.، لا المفتاح نفسه، للتحقق من أنه مضبوط، وتأكد من أنك لم تمرر مفتاح OpenAI بدافع العادة.
النموذج مرفوض
قارن المعرّف حرفًا بحرف مع المعرّف من /v1/models. بادئة openai/ مخصصة لـ LiteLLM فقط؛ وما يليها هو معرّف CheapTokens الكامل، بما في ذلك جزء المطوّر قبل الشرطة المائلة.
للاطلاع على الشرح الكامل لرموز الحالة راجع API 401 أو 404: مفتاح أو عنوان URL أساسي أو معرّف نموذج خاطئ. إن أردت الفكرة وراء api_base أولًا، يشرحها ما هو base_url وكيف تبدّل بالنسخة المبسطة.
فحص سريع
قيمة api_base لديك هي https://api.cheaptokens.dev والاستدعاء يعيد Not Found. ما الذي تغيّره أولًا؟
إظهار الإجابة
الإجابة: أضف /v1 ليصبح https://api.cheaptokens.dev/v1
يشير Not Found إلى المسار. المفتاح سيعطي 401، والبادئة هي ما يخبر LiteLLM باستخدام الطلب بأسلوب OpenAI.
تكلفة ألف استدعاء#
افترض أن روبوت دعم خلف الوكيل يرسل 1,000 طلب يوميًا، كل منها بنحو 2,000 رمز إدخال (السؤال مع السياق) و500 رمز إخراج. إليك هذا الحمل على الأسعار الحية، مع عمود OpenRouter للمقارنة بالإجمالي، مع احتساب الإدخال والإخراج معًا:
| النموذج | الإدخال $/1M | الإخراج $/1M | لكل طلب | 1,000 طلبات | OpenRouter، 1,000 طلبات |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.06 | $0.121 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.08 | $0.173 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.175 | $1.20 |
2,000 رمز إدخال و500 رمز إخراج لكل طلب. الأسعار لكل مليون رمز حالية وتتغير مع تعريفاتنا؛ يعرض عمود OpenRouter أسعارًا مرجعية لنفس حجم العمل.
بالنسبة لـ DeepSeek-V4-Flash يكلف هذا الحمل $0.08 يوميًا، ويُظهر الجدول أنه أرخص من OpenRouter إجمالًا. غيّر الرقمين إلى متوسط طلبك الخاص وستحصل على ميزانيتك.
هذا كل ما يحتاجه LiteLLM: ثلاث قيم، و/v1 واحد، ومعرّف نموذج كامل. أضف المفتاح من لوحة التحكم لديك وشغّل تبويب Python.



