Prompt Caching في Claude API: ليه بتدفع تمن نفس الـ context 1000 مرة في اليوم
لو تطبيقك بيبعت لـ Claude نفس الـ system prompt الطويل في كل request — مثلاً 8K token فيها تعليمات، أمثلة، ومستندات مرجعية — إنت فعليًا بتدفع تمن نفس الكلام آلاف المرات شهريًا بدون داعي. Prompt Caching بيخلّي Anthropic تحفظ الجزء الثابت في GPU memory، وتحاسبك عليه بـ 10% من السعر العادي بعد أول request. التوفير في تطبيق متوسط الحجم بيوصل 87%، ووقت الاستجابة بينزل 33%.
المشكلة باختصار
أنماط الاستخدام الحقيقية لتطبيقات Claude API بتكرر نفس الـ context بنسبة كبيرة. Chatbot بيعرض على كل سؤال نفس الـ knowledge base. Code reviewer بيبعت نفس الـ style guide. Translation tool بيرسل نفس الـ glossary. الـ pricing التقليدي بيحاسبك على نفس الـ input tokens في كل request وكأنها جديدة.
الافتراض هنا إن تطبيقك ≥ 1024 token ثابتة في الـ prompt و request واحد على الأقل كل 5 دقايق. لو الشرطين مش متحققين، Prompt Caching مش هيوفّرلك حاجة. لكن لو متحققين، الفرق في الفاتورة بيبان من اليوم الأول.
مثال للمبتدئ: المطعم اللي بيعرف طلبك
تخيّل إنك بتروح نفس المطعم كل يوم وبتطلب نفس الإفطار. أول يوم، الجرسون بيكتب الطلب على ورقة في 30 ثانية. ثاني يوم، بيلاقي الورقة من إمبارح في درج تحت الكاونتر، يطلعها في ثانيتين، ويحطها قدام الشيف. هو ما اضطرش يكتبها من الأول. إنت دفعت تمن "كتابة الورقة" مرة واحدة، وكل يوم بعد كده بتدفع بس تمن "إخراجها من الدرج".
Prompt Caching بيشتغل بنفس المنطق بالظبط. الجزء الثابت من الـ prompt بيتحفظ مرة واحدة في ذاكرة الـ GPU، وكل request جديد بيستخدمه مباشرة بدون ما الـ model يعيد معالجته من الصفر.
الشرح العلمي: KV cache و attention computation
الـ Transformer architecture بتحسب الـ attention لكل token مع كل token قبله — ده O(n²) في الذاكرة والوقت. لو عندك 8K token في الـ system prompt و 2K token في الـ user message، الـ model بيحتاج يحسب حوالي 100M عملية attention في كل request جديد.
الـ KV cache في Prompt Caching بيحفظ الـ Key و Value matrices للجزء الثابت بعد أول حساب. الـ request اللي بعده بيستعير الـ matrices دي من الذاكرة بدل ما يحسبها تاني. النتيجة: بدل 100M عملية في الـ prefill phase، الـ model بيحسب 4M بس (الجزء المتغير لوحده). دي العملية اللي وصفتها ورقة Pope et al. 2022 في Google كأساس لـ "efficient transformer inference".
Anthropic بتطبق الفكرة دي على مستوى الـ API: بتحفظ الـ KV cache على GPU memory مع Time-To-Live = 5 دقايق افتراضيًا (أو ساعة كاملة بتكلفة أعلى)، وأي request جاي خلال الفترة دي بنفس الـ exact prefix بيستفيد من الـ cache.