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

البدءدليل

أول طلب إلى CheapTokens باستخدام HTTPie: المفتاح في env، = و :=

أمر http واحد مقروء يرسل إكمال دردشة مع المفتاح في متغير بيئة، ثم يظهر أين الجواب واستخدام الرموز.

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

طرفية تعرض أمر http مع متغير مفتاح bearer وحقول JSON
في هذه الصفحة
  1. ما تفعله = و := فعلياً
  2. أين الجواب
  3. بدّل النموذج: غيّر حقلاً واحداً
  4. تكلفة طلب اختبار واحد
  5. إذا لم يعمل

تريد أن تعرف أن المفتاح يعمل وأن معرّف النموذج صحيح، وتريد معرفة ذلك في سطر واحد. أمر http في HTTPie يفعل ذلك مع اقتباسات أقل بكثير من curl: تكتب الحقول، وهو يبني JSON. إليك الطلب كاملاً، وبقية المقال تشرح كل جزء.

bash
export CHEAPTOKENS_API_KEY="paste-your-key-here"

http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]'

واجهة البرمجة متوافقة مع OpenAI، لذا عنوان URL الأساسي هو https://api.cheaptokens.dev/v1 وطلبات الدردشة تذهب إلى /chat/completions تحته. معرّف النموذج هو الكامل، deepseek-ai/DeepSeek-V4-Flash-0731 (الاسم المختصر من جداول الأسعار غير مقبول). إذا لم تخزّن مفتاحاً من قبل، خزّن مفتاح API بأمان أولاً: كتابة سطر export تضع المفتاح في سجل shell، لذا ملف تعريف أو مدير أسرار هو المكان الأفضل له.

الطلب في طرفية: مفتاح bearer من المتغير، النموذج كسلسلة، max_tokens كرقم، messages كمصفوفة خام
نفس الطلب كما يبدو في الطرفية

ما تفعله = و := فعلياً#

هذا هو الجزء الوحيد من HTTPie الذي عليك تعلمه. تقول وثائق JSON في HTTPie (الإصدار 3.2.4، بتاريخ 1 نوفمبر 2024، قُرئ في 9 نوفمبر 2026) أن = يعيّن حقل سلسلة و := يعيّن قيمة JSON خام: رقم، أو منطقي، أو مصفوفة، أو كائن. الحقول المعطاة بهذه الطريقة تُرسل كجسم JSON افتراضياً، لذا لا تضيف رأس Content-Type بنفسك.

في طلبنا هذا يعطي ثلاثة أشكال مختلفة:

  • model=deepseek-ai/DeepSeek-V4-Flash-0731 سلسلة، لذا =.
  • max_tokens:=200 رقم، لذا :=. مع = كنت سترسل السلسلة "200".
  • messages:=[…] مصفوفة من الكائنات، لذا := مرة أخرى، والقيمة توضع بين علامات اقتباس مفردة حتى يترك shell علامات الاقتباس المزدوجة الداخلية كما هي.

تقول الوثائق أيضاً أن الجسم من stdin لا يمكن دمجه مع حقول سطر الأوامر، لذا اختر نمطاً واحداً. لاختبار أول، الحقول أقصر وأسهل في التعديل.

فحص سريع

ماذا يرسل max_tokens=200 (مع = عادي)؟

إظهار الإجابة

الإجابة: السلسلة "200"

= دائماً يصنع سلسلة. للرقم تحتاج :=، لذا اكتب max_tokens:=200.

أين الجواب#

الرد يتبع تنسيق إكمال الدردشة في OpenAI. تبحث عن ثلاثة أشياء، وهي في أماكن مختلفة:

json
{
  "choices": [
    {
      "message": { "role": "assistant", "content": "…the answer text…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}

نص الجواب هو choices[0].message.content. finish_reason بجانبه في نفس الاختيار، و usage في المستوى الأعلى. usage يظهر كم رمزاً أرسلت (prompt_tokens) وكم كتب النموذج (completion_tokens)، وهو مفيد لتقدير تكلفة الطلب.

أين تنظر في الرد: choices، message.content، finish_reason و usage
ثلاثة حقول تقرأها في كل رد

إذا أردت النص فقط، مرّر الجسم إلى jq:

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]' \
  | jq -r '.choices[0].message.content'
جرّب بنفسكجرّب: اجعل الحد صغيراً جداً واقرأ finish_reasonإظهار الإجابة

غيّر max_tokens:=200 إلى max_tokens:=5 وشغّله مرة أخرى. الجواب مقطوع، و finish_reason يقرأ length بدلاً من stop: الحد أوقف النموذج، لا نهاية الفكرة. لماذا ينقطع الجواب يغطي الحل.

بدّل النموذج: غيّر حقلاً واحداً#

النموذج سلسلة واحدة، لذا تجربة آخر تعديل بكلمة واحدة. كلا المعرّفين أدناه متاحان على CheapTokens برصيد واحد؛ DeepSeek-V4-Flash يمنحك سياقاً 380K وحتى 32,768 رمز إخراج لكل جواب، GLM-5.3-Flash سياقاً 390K وحتى 8,192.

طلب واحد، نموذجان

DeepSeek-V4-Flash

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=deepseek-ai/DeepSeek-V4-Flash-0731 \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'

GLM-5.3-Flash

bash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
  POST https://api.cheaptokens.dev/v1/chat/completions \
  model=zai-org/GLM-5.3-Flash \
  max_tokens:=200 \
  'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'

لست متأكداً أي معرّف تستخدم؟ اعرض النماذج باستخدام GET /v1/models وانسخ السلسلة الدقيقة.

تكلفة طلب اختبار واحد#

سؤال قصير كهذا رخيص. لنفترض أن السؤال حوالي 100 رمز والجواب حوالي 150: هذا الطلب يكلف $0.000017. ألف منها تبدو هكذا، مع حساب الإدخال والإخراج معاً:

النموذج لكل طلب 1,000 طلبات OpenRouter، 1,000 طلبات
GLM-5.3-Flash $0.000008 $0.008 $0.0158
DeepSeek-V4-Flash $0.000017 $0.0165 $0.028
MiniMax-M2.7 $0.000028 $0.0275 $0.33

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

في المجموع، مع حساب الإدخال والإخراج معاً، يخرج DeepSeek-V4-Flash أرخص من OpenRouter، والسعر سعر ثابت واحد بدون ساعات ذروة. الأسعار الحالية لكل نموذج على صفحة الأسعار.

إذا لم يعمل#

  • كتبت messages=[…] مع = عادي. المصفوفة تُرسل كسلسلة، لا كقائمة رسائل. استخدم := وعلامات اقتباس مفردة حول القيمة بأكملها.
  • JSON داخل := غير صالح. كل مفتاح وسلسلة يحتاج علامات اقتباس مزدوجة، وعلامات الاقتباس الخارجية يجب أن تكون مفردة. إذا عدّلت نص الرسالة، حافظ على توازن علامات الاقتباس.
  • المفتاح فارغ. echo ${#CHEAPTOKENS_API_KEY} يطبع الطول دون إظهار المفتاح؛ 0 يعني أن المتغير غير معيّن في هذه الطرفية.
  • معرّف النموذج هو الاسم المختصر. استخدم deepseek-ai/DeepSeek-V4-Flash-0731 الكامل. لأجوبة 401 و 404، انظر مفتاح خاطئ، عنوان URL أساسي أو معرّف نموذج.
  • لجأت إلى --session. تقول وثائق المصادقة في HTTPie أن ملفات الجلسة تخزن بيانات الاعتماد بنص عادي، لذا احتفظ بالمفتاح في البيئة واترك --session خارج هذا الأمر.

تحقق من إصدارك باستخدام http --version إذا تصرف علم بشكل مختلف عما سبق. تفضل Python؟ نفس الطلب بدون SDK في أول طلب في Python باستخدام requests. للمرجع الكامل لواجهة البرمجة، انظر وثائق CheapTokens.