العودة إلى المدونة

الأدوات والتكاملاتدليل

ربط LibreChat بـ CheapTokens: نقطة نهاية مخصصة في librechat.yaml

أضف نقطة نهاية CheapTokens إلى LibreChat المستضاف ذاتيًا: مدخل واحد في librechat.yaml، والمفتاح كمتغير بيئة، وثلاثة نماذج في القائمة.

بواسطة CheapTokens Teamنُشر في 4 دقيقة قراءة

مدخل إعداد LibreChat يشير إلى API الخاص بـ CheapTokens
في هذه الصفحة
  1. ما يحتاجه المدخل
  2. اربطه في ثلاث خطوات
  3. ثلاثة نماذج في قائمة واحدة
  4. إذا لم تظهر نقطة النهاية أو أجابت بخطأ

LibreChat لديك يعمل، لكن قائمة النماذج تعرض فقط ما جاءت به افتراضيًا. لإضافة CheapTokens تكتب مدخلًا واحدًا endpoints.custom في librechat.yaml: اسمًا، وعنوان URL الأساسي https://api.cheaptokens.dev/v1، والمفتاح كمتغير بيئة، وقائمة بمعرّفات النماذج. أعد تشغيل الحاوية، وسيظهر نقطة نهاية "CheapTokens" في القائمة.

أسماء الحقول أدناه مأخوذة من مرجع نقاط النهاية المخصصة في LibreChat (فرع التوثيق "Latest (dev)"، تم التحقق منه في 30 أكتوبر 2026). لا تحمل الصفحة رقم إصدار، لذا إذا كان تثبيتك أقدم وسلك أحد الحقول سلوكًا مختلفًا، فقارنه بتوثيق إصدارك. أما جانب API فهو ذاك الموصوف في توثيقنا: صيغة OpenAI Chat Completions، ورصيد واحد لكل النماذج.

ما يحتاجه المدخل#

أربعة حقول مطلوبة، ولكل منها وظيفة واضحة:

  • name — اسم نقطة النهاية في القائمة.
  • apiKey — المفتاح. يوصي التوثيق بمرجع مثل ${VAR} بدلًا من المفتاح نفسه، حتى يبقى السر خارج ملف YAML.
  • baseURL — وجهة الطلبات: https://api.cheaptokens.dev/v1.
  • models.default — قائمة معرّفات النماذج المعروضة في القائمة.

هناك حقلان اختياريان يستحقان الضبط. يتيح titleConvo: true لـ LibreChat تسمية محادثاتك (تُنشأ العناوين ما لم يكن false)، وmodelDisplayLabel هو التسمية بجانب الإجابات (الافتراضي "AI"). قيمة models.fetch هي false افتراضيًا، لذا لن يطلب LibreChat قائمة نماذج من API؛ بل تأتي القائمة من models.default. ولهذا تُكتب المعرّفات أدناه كاملة.

اربطه في ثلاث خطوات#

خطوة بخطوة

اربط LibreChat (Docker)

زوّد الحاوية بالمفتاح

يجب أن يصل المفتاح إلى حاوية LibreChat كمتغير بيئة. يتيح لك توثيق LibreChat ضبط المتغيرات في docker-compose.override.yml تحت environment، لذا أنشئ ذلك الملف بجانب docker-compose.yml. اسم المتغير من اختيارك، اختر أي اسم، فقط أبقِه مطابقًا في ملف YAML:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

القيمة عنصر نائب: استخدم المفتاح من لوحة تحكم CheapTokens لديك.

أضف نقطة النهاية إلى librechat.yaml

أنشئ librechat.yaml بجانب docker-compose.yml. يتبع الشكل مثال Mistral في توثيق LibreChat، مع عنواننا ومعرّفاتنا:

yaml
endpoints:
  custom:
    - name: 'CheapTokens'
      apiKey: '${CHEAPTOKENS_API_KEY}'
      baseURL: 'https://api.cheaptokens.dev/v1'
      models:
        default:
          - 'zai-org/GLM-5.3-Flash'
          - 'deepseek-ai/DeepSeek-V4-Flash-0731'
          - 'MiniMaxAI/MiniMax-M2.7'
      titleConvo: true
      modelDisplayLabel: 'CheapTokens'

اربط الملف وأعد التشغيل

يجب أن ترى الحاوية الملف. أضف volumes إلى نفس docker-compose.override.yml، ليحتوي الآن كليهما:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

ثم طبّقه:

bash
docker compose up -d
من المفتاح إلى القائمة: متغير البيئة، ثم librechat.yaml، ثم الربط، ثم CheapTokens في قائمة النماذج
المسار من المفتاح إلى نقطة نهاية CheapTokens في قائمة LibreChat

افتح LibreChat في المتصفح، وابدأ محادثة جديدة واختر CheapTokens في قائمة نقاط النهاية. النماذج الثلاثة موجودة في القائمة. أرسل "Say hi in one sentence" ويفترض أن تصلك إجابة. إن لم تصلك، فانتقل إلى القسم الأخير.

ثلاثة نماذج في قائمة واحدة#

هذا هو الجزء الذي يجعل المحادثة المستضافة ذاتيًا جديرة بالعناء. لنفترض أنك تشغّلها لفريق صغير. معظم الأسئلة يومية: أعد صياغة هذا البريد، اشرح هذا الخطأ. لهذه يكفي zai-org/GLM-5.3-Flash، بنافذة سياق 390K وحتى 8,192 رمزًا لكل إجابة. وعندما يلصق أحدهم مستندًا طويلًا ويريد ردًا مطوّلًا، يبدّل المحادثة نفسها إلى deepseek-ai/DeepSeek-V4-Flash-0731 (سياق 380K، وحتى 32,768 رمزًا لكل إجابة). أما MiniMaxAI/MiniMax-M2.7 (سياق 180K) فهو الرأي الثالث عندما تختلف إجابتان. لا اشتراك ثانٍ، ولا مفتاح ثانٍ: الثلاثة تُحتسب من رصيد واحد.

كم تكلّف تلك المحادثة؟ خذ فريقًا من خمسة يرسلون 200 رسالة يوميًا، تحمل كل منها نحو 3,000 رمز إدخال (السجل ينمو) وتعيد نحو 500 رمز:

النموذج لكل طلب 200 طلبات OpenRouter، 200 طلبات
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

3,000 رمز إدخال و500 رمز إخراج لكل طلب. الأسعار لكل مليون رمز حالية وتتغير مع تعريفاتنا؛ يعرض عمود OpenRouter أسعارًا مرجعية لنفس حجم العمل.

في الجدول، يُحتسب سعر كل نموذج لتلك الطلبات الـ200 مع الإدخال والإخراج معًا، ويأتي الإجمالي أرخص من OpenRouter. اختر الصف المطابق لاستخدامك وقارنه بـصفحة الأسعار.

جرّب بنفسكجرّب: أرسل سؤالًا واحدًا إلى نموذجينإظهار الإجابة

افتح محادثة جديدة، واختر zai-org/GLM-5.3-Flash، واطلب ملخصًا لفقرة تعرفها جيدًا. بدّل النموذج في القائمة نفسها إلى deepseek-ai/DeepSeek-V4-Flash-0731، واطلب مرة أخرى. قارن طول الإجابتين ونبرتهما — وبهذا تحدد النموذج الافتراضي.

إذا لم تظهر نقطة النهاية أو أجابت بخطأ#

معظم المشكلات واحدة من ثلاثة أمور. اختر ما يطابق ما تراه:

اختر حالتك

ماذا ترى؟

CheapTokens مفقود من القائمة

لم يقرأ LibreChat ملفك أصلًا. تحقق من أن librechat.yaml مربوط عند /app/librechat.yaml (ملف التجاوز أعلاه)، وأن مسافات YAML البادئة سليمة، وأنك نفّذت docker compose up -d بعد التغيير.

401 Unauthorized

المفتاح مفقود أو خاطئ. تحقق من أن الاسم بعد ${ في librechat.yaml هو بالضبط اسم متغير البيئة، وأن المفتاح لا يحتوي على مسافات أو علامات اقتباس لُصقت به. المزيد عن هذا الخطأ في API 401 أو 404.

404 أو خطأ في النموذج

معرّف النموذج خاطئ. استخدم المعرّف الكامل مثل deepseek-ai/DeepSeek-V4-Flash-0731؛ فالاسم المختصر غير مقبول. يمكنك سرد المعرّفات الدقيقة باتباع الخطوات في سرد النماذج باستخدام GET /v1/models.

بمجرد نجاح الرسالة الأولى، يمكنك إضافة المزيد من المعرّفات إلى models.default متى أردت نموذجًا آخر في القائمة. تفضّل واجهة أمامية أخرى؟ الفكرة نفسها، عنوان URL أساسي مع مفتاح، موجودة في ربط Open WebUI بـ CheapTokens، والصورة العامة في API المتوافق مع OpenAI: ما هو base_url. أما النماذج نفسها فهي في صفحة GLM.