مستوى المقال: متوسط — يفترض إنك بتشتغل على Claude API أو OpenAI API ومألوف الـ system prompts والـ token billing.
لو بتبعت نفس الـ system prompt 4,200 token مع كل استدعاء على Claude، انت بتدفع 90% من فاتورتك في tokens بتتكرّر بدون فايدة. Prompt Caching بـ سطرين Python بيرجّع نفس الـ prefix من cache بسعر 10% فقط، والـ TTFT بينزل من 1.8 ثانية لـ 380 مللي ثانية.
Prompt Caching على Claude: ليه فاتورتك الحقيقية 10% بس من اللي بتدفعه
المشكلة باختصار
شات بوت دعم عملاء عربي بيشغّل Claude Sonnet 4.6 بـ system prompt حجمه 4,200 token. الـ prompt فيه: تعليمات الـ persona، 18 مثال few-shot، قاموس مصطلحات الشركة، وقواعد المخاطبة باللهجة. عدد الطلبات اليومي 1,200 طلب. الحساب البسيط: 4,200 × 1,200 = 5.04 مليون input token كل يوم بتتكرّر حرف بحرف. على تسعيرة Sonnet 4.6 ($3 لكل مليون input token)، ده 15.12$ يومياً = 453$ شهرياً. الأسوأ من التكلفة، إن الـ Time To First Token بيقفز فوق 1.8 ثانية لأن النموذج بيقرا الـ context كله من الصفر في كل طلب.
المفهوم بمثال يومي (للمبتدئ)
تخيّل باريستا في مقهى الإسكندرية. أول مرة تطلب منه كابوتشينو، بيكتب الطلب على الورق، بيسألك على نوع اللبن وكمية السكر وحجم الكوب. العملية تاخد دقيقتين. بعد 6 شهور بتيجي كل يوم وبتطلب نفس الطلب بالظبط. الباريستا بقى يشوفك ويقول "نفس الطلب؟ كابوتشينو سكر بني، رغوة قليلة، شوكولاتة على الوش؟". إنت بتقول "آه" — والطلب جاهز في 30 ثانية. هو محفظش "الكابوتشينو" نفسه، هو محفظ الـ template بتاع طلبك. لما تيجي مرة جديدة، محتاج بس يتأكد إنه نفس الطلب، وييدبس الجزء اللي اتغيّر (لو موجود) ويشغّل.
ده بالظبط اللي بيعمله Prompt Caching. Anthropic بتحفظ الجزء الثابت من الـ prompt (الـ system + few-shot examples) في ذاكرة مؤقتة جنب الـ GPU. لما يجيلك طلب تاني بنفس الـ prefix، النموذج بيستخدم الذاكرة المحفوظة دايركت، وبيتعامل مع آخر رسالة المستخدم فقط.
شرح علمي للـ KV-cache
كل نموذج transformer بيشتغل على آلية اسمها self-attention. لكل token في الـ input، النموذج بيحسب 3 vectors: Query و Key و Value. الـ Key/Value vectors بتُستخدم علشان كل token يفهم علاقته بالـ tokens اللي قبله. لـ prompt حجمه 4,000 token وموديل فيه 80 layer (مقاس Sonnet)، حساب الـ KV pairs دي بياخد حوالي 800 مللي ثانية على GPU H100 ويستهلك ذاكرة بالجيجابايتات.
الفكرة الأساسية: الـ KV-cache بتاع أي prefix ثابت مش بيتغيّر أبداً، فممكن نحسبه مرة ونعيد استخدامه. ده مش اختراع Anthropic — الفكرة موثّقة في ورقة "Efficient Memory Management for Large Language Model Serving with PagedAttention" (Kwon et al., SOSP 2023) اللي بنى عليها مشروع vLLM. Anthropic أتاحت الميزة public في أغسطس 2024، وفي 2025 وسّعتها بـ 1-hour TTL beta للـ batch jobs.
الافتراض المهم هنا: الـ caching بيشتغل على exact byte match للـ prefix. تعديل حرف واحد في أول 4,000 token = invalidation كامل للـ cache.