مستوى المقال: متوسط — يفترض إنك جرّبت Anthropic SDK وعندك تطبيق فيه system prompt واحد على الأقل أطول من 1,500 توكن.
Prompt Caching في Claude API: 90% خصم على نفس النص لو كرّرته ذكي
لو chatbot عربي عندك بيرد على 12 ألف رسالة يوميًا، وكل رسالة بتاخد system prompt طوله 18 ألف توكن، انت بتدفع نفس النص 12 ألف مرة. التكلفة الشهرية بتطلع $1,200 على Claude Sonnet 4.6. سطر cache_control واحد بينزّل الرقم ده لـ $145 من غير ما يغيّر حرف في الرد. الباقي من المقال بيشرح ليه ده بيشتغل، الكود اللي محتاجه، والـ trade-offs اللي مش ظاهرة في التوثيق الرسمي.
المشكلة باختصار
الـ LLM لمّا بياخد طلب بيقسّم النص لـ tokens، وبيمشي عليهم في الـ transformer علشان يحسب اللي اسمه KV cache (Key-Value cache) — ده مصفوفة attention جوّاه. كل ما الطلب يتكرّر بنفس البداية، بيعيد نفس الحسبة من الصفر. Prompt Caching بيخلي Anthropic تخزن الـ KV cache ده على السيرفر بتاعها، فلمّا يجي طلب تاني بنفس البداية، بترجعه جاهز. النتيجة: التوكن المخزّن بيتحسب بـ 0.1× السعر الأصلي، بدل 1×.
المثال البسيط: نادل القهوة اللي حافظ طلبك
تخيّل قهوة بتزورها كل يوم. أول مرة تدخل، النادل يسألك "حضرتك بتشرب إيه؟ سكر كام؟ حليب ولا لأ؟ كوب صغير ولا كبير؟" — 4 أسئلة، دقيقة كاملة. بعد أسبوع، أول ما تخش يقولك "زي كل يوم؟" وتقوله "آه" وخلاص. هو حافظ الجزء الثابت من طلبك، فمحتاج بس يعرف الجديد.
Prompt Caching بيشتغل بنفس المنطق. الـ system prompt الطويل + التعريفات الثابتة + الأمثلة few-shot هي "الجزء اللي بيتكرر كل مرة". بدل ما Claude يعيد قراءتها من الأول كل طلب، بيخزّن نسخة جاهزة لـ 5 دقايق (أو ساعة لو دفعت زيادة)، ويبدأ من المتغيّر بس — اللي هو رسالة المستخدم الجديدة.
التعريف العلمي بدون حشو
Prompt Caching هي ميزة في Anthropic API بتسمحلك تحدّد أجزاء من الـ prompt على إنها "ثابتة"، فالسيرفر يحفظ الـ internal attention state بتاعها لمدة محدودة. أي طلب لاحق يبدأ بنفس البادئة (prefix matching) بيستفيد من الـ cache. الميزة مبنية على إن الـ transformer attention causal: التوكن رقم N بيعتمد بس على التوكنات قبله، يعني لو أول 18,000 توكن ثابتين، الحسبة الخاصة بيهم لا تتغير ولا يتأثرون بالباقي.
الشروط الأساسية حسب توثيق Anthropic مايو 2026:
- الحد الأدنى لحجم الـ cache block: 1,024 توكن لـ Sonnet/Opus، و 2,048 توكن لـ Haiku.
- TTL افتراضي: 5 دقايق من آخر استخدام للـ cache (sliding window).
- TTL ممتد: ساعة واحدة، بسعر 2× من سعر الـ input الأصلي وقت الكتابة.
- سعر cache write: 1.25× سعر input عادي.
- سعر cache read: 0.10× سعر input عادي (الخصم 90%).
- ممكن تحط حتى 4 cache breakpoints في الطلب الواحد.
الكود اللي بيشتغل فعلًا
الـ snippet ده بيستخدم anthropic SDK نسخة 0.45 أو أحدث، Python 3.11+. بيفترض إن عندك متغيّر LEGAL_CONTEXT فيه نص قانوني عربي طوله ~18,000 توكن.