تعتمد فاتورة Claude غالبًا على رموز الإدخال أكثر من الإخراج. لأن واجهة Claude API عديمة الحالة، فأنت تعيد إرسال موجه النظام، تعريفات الأدوات، المستندات، وسجل المحادثة في كل طلب. في حلقات الوكلاء أو جلسات Claude Code الطويلة، يصبح هذا السياق المعاد إرساله هو الجزء الأكبر من التكلفة.
لخفض الفاتورة فعليًا، ركّز على ثلاثة محاور: تقليل ما ترسله، اختيار نموذج أرخص عندما يكفي، ومنع إعادة إرسال السياق غير المستخدم. هذا الدليل يقدّم خطوات عملية قابلة للتطبيق: التخزين المؤقت للموجه، اختيار النموذج، Batch API، ضبط حدود الطلب، ضغط السياق، اختبار pxpipe، واستخدام Mock API أثناء التطوير.
إذا كنت تحتاج إلى أساسيات التسعير أولًا، مثل معنى الرمز، آلية العد، وتكلفة التخزين المؤقت والدُفعات، راجع: شرح تكلفة واجهة برمجة تطبيقات Claude.
الرافعة 1: فعّل التخزين المؤقت للموجه Prompt Caching
استخدم التخزين المؤقت للموجه عندما يكون لديك جزء ثابت يتكرر في كل طلب، مثل:
- موجه النظام.
- تعريفات الأدوات.
- وثائق طويلة.
- تعليمات ثابتة للوكلاء.
- أمثلة ثابتة لا تتغير بين الطلبات.
الفكرة: تجعل هذا الجزء قابلًا للتخزين المؤقت. عند إرسال طلب لاحق يبدأ بنفس البايتات، يقرأ Claude هذا الجزء من الذاكرة المؤقتة بدلًا من إعادة معالجته بالسعر الكامل.
اقتصاديًا، قراءات الذاكرة المؤقتة تكلف تقريبًا 0.1x من سعر الإدخال الأساسي، أي توفير يصل إلى حوالي 90% على الجزء المخزن. لكن الكتابة الأولى أغلى:
-
1.25xلمدة صلاحية 5 دقائق. -
2xلمدة صلاحية ساعة واحدة.
لذلك لا تستخدم التخزين المؤقت لبادئة تُستخدم مرة واحدة فقط. نقطة التعادل تقريبًا:
- طلبان لذاكرة 5 دقائق.
- 3 طلبات لذاكرة ساعة واحدة.
قاعدة مهمة: البادئة يجب أن تكون ثابتة بايتًا ببايت
التخزين المؤقت يعتمد على مطابقة البادئة على مستوى البايت. أي تغيير داخل المنطقة المخزنة يبطلها.
تجنّب وضع هذه العناصر داخل الجزء المخزن:
timestamp
request_id
session_id
random UUID
عداد الطلبات
ترتيب أدوات يتغير بين الطلبات
كيف تتحقق أن التخزين المؤقت يعمل؟
افحص الحقل التالي في استجابة Claude:
{
"usage": {
"cache_read_input_tokens": 12345
}
}
إذا ظل cache_read_input_tokens يساوي صفرًا في طلبات متكررة، فأنت غالبًا تغيّر شيئًا داخل البادئة الثابتة.
للتفاصيل حول الآلية، راجع: ما هو التخزين المؤقت للموجه وكيف يعمل.
الرافعة 2: اختر حجم النموذج حسب المهمة
أحد أكثر أسباب الهدر شيوعًا هو تشغيل نموذج كبير على مهمة لا تحتاجه. لا تجعل النموذج الأعلى تكلفة هو الافتراضي لكل شيء.
التسعير الحالي لكل مليون رمز:
| النموذج | معرف النموذج | الإدخال | الإخراج | نافذة السياق |
|---|---|---|---|---|
| Fable 5 | claude-fable-5 |
$10 | $50 | 1M |
| Opus 4.8 | claude-opus-4-8 |
$5 | $25 | 1M |
| Sonnet 5 | claude-sonnet-5 |
$3 ($2 تمهيدي) | $15 ($10 تمهيدي) | 1M |
| Haiku 4.5 | claude-haiku-4-5 |
$1 | $5 | 200K |
استخدم هذا التوجيه العملي:
- Fable 5: للمهام الصعبة جدًا التي تحتاج استدلالًا طويلًا وتستفيد فعلًا من قدرته الإضافية.
- Opus 4.8: خيار افتراضي جيد لمعظم أعمال الوكلاء والبرمجة وClaude Code.
- Sonnet 5: لحركة إنتاج كبيرة تحتاج جودة جيدة بسعر أقل.
- Haiku 4.5: للتصنيف، الاستخراج، التوجيه، الردود القصيرة، والمهام الحساسة للسرعة.
مثال بسيط لمنطق توجيه حسب المهمة:
function selectClaudeModel(task: {
type: "classification" | "coding" | "long_reasoning" | "bulk_extraction";
latencySensitive?: boolean;
}) {
if (task.type === "classification") return "claude-haiku-4-5";
if (task.type === "bulk_extraction") return "claude-sonnet-5";
if (task.type === "coding") return "claude-opus-4-8";
if (task.type === "long_reasoning") return "claude-fable-5";
return "claude-opus-4-8";
}
ملاحظة خاصة بـ Fable 5: إذا رفض مصنف الأمان طلبًا، يمكن للمعامل التجريبي fallbacks إعادة توجيه الدور إلى Opus 4.8، ويتم فوترة هذا الدور بأسعار Opus. هذا غالبًا خصم وليس تكلفة إضافية مفاجئة، لكنه قد يظهر في تفاصيل الفاتورة.
للمزيد:
- تسعير Opus 4.8
- تسعير Fable 5
- Fable 5 و Opus 4.8
- استخدام Opus 4.8 مجانًا
- استدعاء واجهة برمجة تطبيقات Fable 5
الرافعة 3: انقل العمل غير الفوري إلى Batch API
إذا لم تكن تحتاج الرد في الوقت الحقيقي، استخدم Batch API. ترسل المهام إلى:
/v1/messages/batches
ثم تعالج بشكل غير متزامن. معظم الدُفعات تنتهي خلال ساعة، والحد الأقصى 24 ساعة. الخصم: 50% على جميع الرموز داخل الدفعة، سواء إدخال أو إخراج.
استخدمها مع:
- التقييمات على مجموعات اختبار.
- التصنيف أو الاستخراج بالجملة.
- توليد ملخصات أو وسوم لسجلات موجودة.
- أي معالجة ليلية أو خلفية لا تحتاج استجابة فورية.
قاعدة عملية:
إذا كان الطلب لا يحتاج إجابة مباشرة للمستخدم، فكّر في Batch API أولًا.
مثال قرار معماري:
function shouldUseBatch(job: {
userWaiting: boolean;
deadlineMinutes: number;
itemCount: number;
}) {
if (job.userWaiting) return false;
if (job.deadlineMinutes >= 10) return true;
if (job.itemCount > 100) return true;
return false;
}
إذا كان نصف إنفاقك الحالي يأتي من معالجة ليلية عبر نقطة النهاية المتزامنة، فإن نقلها إلى Batch API يخفض تكلفة هذا الجزء مباشرة بنسبة 50%.
الرافعة 4: اضبط effort و max_tokens واستخدم count_tokens
كل طلب يجب أن يكون له سقف تكلفة واضح. ركّز على ثلاثة إعدادات.
1. effort
المعامل:
output_config.effort
يمكن أن يأخذ قيمًا مثل:
low
medium
high
xhigh
max
كلما زاد الجهد، زادت رموز التفكير والإخراج. لا تستخدم high أو max كافتراض عام.
ابدأ بهذه السياسة:
function selectEffort(task: string) {
if (task === "simple_json_extraction") return "low";
if (task === "classification") return "low";
if (task === "coding_fix") return "medium";
if (task === "architecture_review") return "high";
return "medium";
}
اختبر خفض المستوى درجة أو درجتين، ثم قارن الجودة والتكلفة.
2. max_tokens
max_tokens لا يقلل تكلفة استجابة قصيرة أصلًا، لكنه يمنع الحالات الهاربة.
مثال:
{
"max_tokens": 800
}
استخدم حدودًا حسب نوع المهمة:
const MAX_TOKENS_BY_TASK = {
classification: 50,
json_extraction: 300,
code_patch: 1200,
long_explanation: 2500
};
إذا كنت تتوقع JSON صغيرًا، لا تترك النموذج قادرًا على إنتاج 4000 رمز.
3. count_tokens
قبل إرسال طلب كبير، استخدم count_tokens لمعرفة عدد رموز الإدخال الفعلي.
لا تستخدم tiktoken لتقدير Claude. tiktoken خاص بـ OpenAI وقد يقلل تقدير رموز Claude بحوالي 15–20%.
استخدم count_tokens عندما:
- لديك مستندات كبيرة.
- الطلب قريب من حد ميزانية لكل استدعاء.
- تريد رفض أو ضغط الطلب قبل إرساله.
- تبني CI يمنع الموجهات الضخمة من الدخول للإنتاج.
مثال منطق:
const MAX_INPUT_TOKENS = 100_000;
async function guardPromptBeforeSend(request: unknown) {
const tokenCount = await countClaudeTokens(request);
if (tokenCount > MAX_INPUT_TOKENS) {
throw new Error(`الطلب كبير جدًا: ${tokenCount} رمز إدخال`);
}
return request;
}
الرافعة 5: قلّص السياق الذي تعيد إرساله
بما أن API عديمة الحالة، فإن حلقة الوكيل الطويلة تعيد إرسال السجل كاملًا في كل دور. بعد 20 أو 30 دورًا، يحتوي السجل غالبًا على:
- نتائج أدوات قديمة.
- ملفات قرأها النموذج ولم يعد يحتاجها.
- مسارات استكشاف تم التخلي عنها.
- محادثات وسيطة لا تؤثر على القرار الحالي.
هذا كله يستمر في الظهور كرموز إدخال مدفوعة.
استخدم ميزتين على جانب الخادم:
-
تحرير السياق Context editing عبر
clear_tool_uses_20250919: يزيل نتائج الأدوات القديمة من السياق المعاد إرساله. -
الضغط Compaction عبر
compact_20260112: يلخص السجل القديم إلى تمثيل أقصر.
الميزة هنا أنك لا تحتاج إلى بناء ملخص يدويًا أو تقطيع مصفوفة الرسائل بنفسك.
بالنسبة لجلسات Claude Code الطويلة، راجع: نافذة رموز Claude Code وإعادة التعيينات.
القاعدة العملية:
لا تدفع لإعادة إرسال سياق لم يعد النموذج يحتاجه.
المضي قدمًا: اختبار pxpipe لعرض السياق كصور
الرافعات السابقة تقلل الرموز أو تعيد تسعيرها. أما pxpipe فيتبع زاوية مختلفة: تحويل أجزاء ضخمة وثابتة من السياق إلى صور PNG مضغوطة، بحيث تُرمّز بتكلفة أقل.
ما هو pxpipe؟
pxpipe وكيل محلي مرخص MIT ومكتوب بـ TypeScript. تضعه بين عميلك وواجهة Anthropic API عبر ANTHROPIC_BASE_URL.
يشغّل محليًا، ويفحص الطلب قبل إرساله.
كيف يمكن أن يخفض التكلفة؟
النص الكثيف مكلف كرموز. يقوم pxpipe بتحويل أجزاء مثل:
- موجه النظام الطويل.
- وثائق الأدوات.
- السجل القديم.
- كتل مرجعية ضخمة.
إلى صور PNG قبل إرسالها.
حسب المشروع، المحتوى الكثيف قد يعطي تقريبًا:
3.1 حرف لكل رمز صورة
مقابل حوالي 1 حرف لكل رمز نص
ويذكر مثالًا لموجه نظام مع وثائق أدوات بحوالي 48 ألف حرف ينتج تقريبًا:
2.7K رمز صورة
بدلًا من 25K رمز نص
هذه أرقام المشروع نفسه، وليست ضمانًا على حركة مرورك.
التثبيت والتشغيل
شغّل الوكيل:
npx pxpipe-proxy
سيعمل على:
127.0.0.1:47821
ثم وجّه Claude Code إليه:
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
دعم النماذج
افتراضيًا، يصوّر pxpipe الطلبات لـ:
claude-fable-5
GPT 5.6
أما Opus 4.7/4.8 و GPT 5.5 فهي اختيارية، لأن المشروع يشير إلى أنها تقرأ السياق المصور بشكل أسوأ. يمكن تفعيلها عبر:
PXPIPE_MODELS=...
أو من لوحة التحكم على عنوان الوكيل.
متى تختبر pxpipe؟
اختبره إذا كان سياقك:
- كبيرًا جدًا.
- ثابتًا نسبيًا.
- كثيفًا بالنص.
- لا يعتمد على رموز دقيقة يمكن أن تُقرأ خطأ من الصورة.
المقايضات
لا تعتبر التصوير توفيرًا مجانيًا دائمًا.
- قد يتعارض مع التخزين المؤقت للموجه
التخزين المؤقت يعتمد على مطابقة البايتات. التصوير يغيّر تمثيل الطلب، وقد يمنع استخدام بادئة مخزنة مؤقتًا.
اختبر الاثنين:
prompt caching فقط
pxpipe فقط
prompt caching + pxpipe
ثم قارن التكلفة والجودة.
- النموذج يقرأ السياق المصور عبر الرؤية
السلاسل الدقيقة مثل معرفات hex الطويلة أو الرموز البرمجية الحساسة قد تُقرأ بشكل خاطئ. والأسوأ أن الخطأ قد يكون صامتًا.
- هو وكيل طرف ثالث في مسار الطلبات
رغم أنه يعمل محليًا، فهو لا يزال يعترض حركة المرور. قيّمه أمنيًا قبل استخدامه في الإنتاج.
خفض رموز التطوير والاختبار أثناء البناء
كل ما سبق يخص تكلفة الإنتاج أو حركة المرور الفعلية. لكن أثناء التطوير، أنت غالبًا تحرق رموزًا مدفوعة على أشياء لا تحتاج نموذجًا حقيقيًا:
- اختبار شكل الطلب.
- اختبار تحليل الاستجابة.
- اختبار معالجة الأخطاء.
- تشغيل CI.
- إعادة محاولات فاشلة.
- تجارب موجهات أولية.
هنا يفيد Apidog، لكن ضمن نطاق محدد: لا يخفض فاتورة Claude الإنتاجية، بل يقلل إنفاق التطوير والاختبار.
استخدم واجهة Anthropic وهمية في Apidog:
- عرّف عقد الطلب لنقطة Claude التي تستدعيها.
- عرّف شكل الاستجابة المتوقعة.
- أنشئ Mock API.
- وجّه اختباراتك وCI إلى الواجهة الوهمية.
- استخدم Claude الحقيقي فقط عندما تحتاج التحقق من جودة النموذج.
مثال عملي:
Development / CI → Apidog Mock API
Staging quality tests → Claude API
Production → Claude API
بهذه الطريقة، تستطيع اختبار الاتصال، العقود، parsing، ومعالجة الأخطاء بدون استهلاك رموز مدفوعة في كل تكرار.
خطة تطبيق مختصرة
طبّق الرافعات بهذا الترتيب:
-
فعّل التخزين المؤقت للبادئة الثابتة
- موجه النظام.
- الأدوات.
- الوثائق.
- تحقق من
cache_read_input_tokens.
-
وجّه الطلبات حسب المهمة
- Haiku للمهام البسيطة.
- Sonnet للحجم.
- Opus لمعظم البرمجة والوكلاء.
- Fable فقط عندما تحتاجه فعليًا.
-
انقل المهام غير الفورية إلى Batch API
- تقييمات.
- استخراج بالجملة.
- تصنيف.
- معالجة ليلية.
-
ضع سقفًا لكل طلب
- اضبط
effort. - اضبط
max_tokens. - استخدم
count_tokens.
- اضبط
-
قلّص السجل المعاد إرساله
- Context editing.
- Compaction.
- إزالة نتائج الأدوات القديمة.
-
اختبر pxpipe فقط إذا كان سياقك مناسبًا
- قارن الجودة والتكلفة.
- لا تفترض أنه يتراكم مع prompt caching.
-
استخدم Mock API أثناء التطوير
- لا تجعل CI يحرق رموزًا حقيقية بلا حاجة.
ابدأ بالتخزين المؤقت وتوجيه النموذج، لأنهما غالبًا يعطيان أكبر خفض مباشر. بعد كل تغيير، قِس الفاتورة الفعلية بدل الاعتماد على التوقعات.
الأسئلة الشائعة
هل تكلفة الإدخال أم الإخراج أعلى؟
لكل رمز، الإخراج أغلى. لكن في أعباء عمل الوكلاء والبرمجة، الإدخال غالبًا هو الجزء الأكبر من الفاتورة لأنك تعيد إرسال السجل كاملًا في كل طلب.
هل prompt caching يوفر أكثر أم Batch API؟
يعتمد على نمط العمل. التخزين المؤقت قد يوفر حتى 90% على البادئة المتكررة في المرور التفاعلي. Batch API يخفض 50% من كل الرموز، لكنه مناسب فقط للعمل غير المتزامن. غالبًا ستستخدم الاثنين معًا.
هل أجعل Fable 5 هو الافتراضي؟
لا. Fable 5 يكلف ضعف Opus 4.8. استخدمه فقط عندما تؤثر قدرته الإضافية على النتيجة. لمعظم البرمجة والوكلاء، Opus 4.8 خيار افتراضي أفضل تكلفة.
هل يعمل pxpipe بسلاسة مع prompt caching؟
ليس دائمًا. التصوير يغيّر بايتات الطلب، والتخزين المؤقت يعتمد على مطابقة البادئة. اختبر الاثنين على حركة مرورك الفعلية.
هل يقلل Apidog فاتورة Claude الإنتاجية؟
لا. Apidog يساعدك على إنشاء Mock API لاختبارات التطوير وCI، بحيث لا تستهلك رموزًا مدفوعة أثناء بناء التكامل. الإنتاج لا يزال يستخدم Claude API الحقيقي.
Top comments (0)