التخزين المؤقت للمطالبات: مقارنة Claude وOpenAI وGemini

يمكن أن يخفّض التخزين المؤقت للمطالبات (Prompt Caching) تكلفة الإدخال المتكرر إلى جزء بسيط، لكن Claude وOpenAI وGemini تطبّقه بطرق مختلفة. تعرّف على نقاط الفصل ومدد الصلاحية ورسوم الكتابة والحد الأدنى للأحجام، مع مثال حسابي للتكلفة وأخطاء تمنع إصابات الكاش.

التخزين المؤقت للمطالبات: مقارنة Claude وOpenAI وGemini
Cristian Da Conceicao
مؤسس Picasso IA

كل طلب ترسله إلى نموذج لغوي كبير يبدأ بالروتين المكلف نفسه. تُقرأ الأوامر النصية للنظام وتعريفات الأدوات والوثائق الملصوقة وأمثلة قليلة (few-shot) مجددًا، توكنًا توكنًا، بالسعر الكامل، رغم أنها لم تتغير منذ الاستدعاء السابق. Prompt caching يُنهي هذا الهدر. يحتفظ المزوّد بالشكل المعالَج من بادئتك المتكررة، ويحتسب جزءًا من سعر الإدخال العادي عندما يعيد الطلب التالي استخدامها. تخيّل مبدأ mise en place في المطبخ: يقطّع الطاهي الشالوت مرة واحدة قبل بدء الخدمة، وتُجمَّع كل الطلبات بعدها من حاويات جاهزة.

تقدم Claude و OpenAI و Gemini الفكرة نفسها، لكنها تختلف في كل شيء آخر تقريبًا: من يقرر ما يُخزَّن، وكم تدوم مدته، وكم تكلف كتابته، وكم يجب أن يكون حجم الأمر النصي حتى يكون مؤهلًا. يقارن هذا المقال الثلاثة بالأرقام من وثائقها الحالية، حتى تختار إعدادك وتتجنب الأخطاء التي تعطّل التخزين المؤقت بهدوء.

ما الذي يفعله Prompt Caching فعليًا

عندما يقرأ النموذج أمرك النصي، ينجز عملًا حقيقيًا على كل توكن قبل أن يكتب أول كلمة من الإجابة. هذا العمل نفسه يتكرر في كل مرة تكون فيها بداية الأمر النصي متطابقة. يتيح Prompt Caching للمزوّد الاحتفاظ بنتيجة ذلك العمل لفترة قصيرة وإعادة استخدامها، فيُعالَج الجزء المتكرر مرة واحدة ويُحتسب بعدها بسعر مخفّض.

يد أمين مكتبة تسحب درجًا من فهرس بطاقات من خشب البلوط، بالطريقة نفسها التي تُسحب بها البادئة المخزّنة بدلًا من إعادة بنائها

تخيّل فهرس بطاقات. يحفظ المزوّد البادئة المعالَجة تحت بصمة لمحتواها الدقيق. الطلب التالي الذي ينتج البصمة نفسها يسحب الدرج بدلًا من إعادة بناء محتوياته من الصفر.

قاعدة البادئة

يعمل التخزين المؤقت من أول توكن إلى الأمام. يجب أن يكون الجزء المخزّن تطابقًا تامًا ومتصلًا لبداية طلبك، وأول اختلاف ينهي التطابق. كل ما يأتي بعد تلك النقطة يُعالَج ويُحتسب بالسعر العادي.

رف طويل من مجلدات خضراء متطابقة مع كتاب واحد مسحوب خارج الصف

هذه القاعدة الواحدة تشكّل نصيحة كل مزوّد. ضع المحتوى الذي لا يتغير في الأعلى، وادفع كل ما يتغير (سؤال المستخدم، والتاريخ الحالي، والمقاطع المسترجعة) إلى الأسفل. يحتوي القسم العلوي الجيد عادةً على:

  • تعريفات الأدوات التي تبقى نفسها بين الاستدعاءات
  • تعليمات النظام وقواعد الأسلوب
  • مواد مرجعية مثل دليل أو عقد أو ملخص لقاعدة شيفرة
  • أمثلة قليلة (few-shot) تعيد استخدامها في كل طلب

💡 فحص سريع: لو طبعت طلبين ولوّنت ما يشتركان فيه، فيجب أن يكون الجزء الملوَّن كتلة واحدة متصلة تبدأ من أول حرف تمامًا. فقرة مشتركة في الوسط لا تُحتسب.

أين يأتي التوفير

تتحسن ثلاثة أمور عند إعادة استخدام البادئة:

  • التكلفة: تُحتسب التوكنات المخزّنة بجزء صغير من سعر الإدخال العادي، بينما يُحتسب الجزء الجديد فقط بالسعر الكامل.
  • زمن الاستجابة: الأمر النصي الطويل يعني انتظارًا أطول قبل ظهور أول توكن للإخراج. تخطي إعادة المعالجة يقصّر ذلك الانتظار، ويزداد المكسب مع طول البادئة.
  • حدود المعدل: تذكر Anthropic أن قراءات الكاش لا تُخصم من حد المعدل لديك، لذا تترك حركة المرور المخزّنة مساحة لطلبات أكثر.

تستفيد أكثر من غيرها حلقات الوكلاء، والإجابة عن الأسئلة من المستندات، وسجلات المحادثة الطويلة، والمصنِّفات ذات الدليل الكبير. أما الأمر النصي الذي يختلف في كل مرة فلا يحصل على شيء.

Claude: تحكم صريح

تمنحك Claude أكثر طرق التحكم مباشرة بين الثلاثة. أنت تحدد أين تنتهي البادئة القابلة للتخزين، وأنت تحدد كم يجب أن تعيش.

نقاط الفصل والوضع التلقائي

تضع علامة على كتلة محتوى بالحقل cache_control من النوع ephemeral، فيصبح كل ما يبدأ من أول الطلب حتى تلك الكتلة، متضمّنةً إياها، هو البادئة المخزّنة. الترتيب ثابت: الأدوات أولًا، ثم النظام، ثم الرسائل. يمكنك ضبط حتى أربع نقاط فصل، وتُرجع API خطأ 400 إذا حاولت وضع نقطة فصل خامسة على مستوى الكتل.

هناك أيضًا وضع تلقائي. أضف حقلًا واحدًا cache_control على المستوى الأعلى للطلب، فيطبّق النظام نقطة الفصل على آخر كتلة قابلة للتخزين، ثم ينقلها إلى الأمام مع نمو المحادثة.

{
  "model": "claude-opus-5-5",
  "cache_control": { "type": "ephemeral" },
  "system": "Long, stable instructions go here...",
  "messages": [
    { "role": "user", "content": "Today's question" }
  ]
}

دفتر أستاذ جلدي بأربع إشارات كتاب من شريط تحدد صفحات مختلفة

هناك تفصيل يُربك الجلسات الطويلة للوكلاء. عند البحث عن إدخال مطابق سابق، يتحقق النظام من 20 موضعًا على الأكثر إلى الخلف من كل نقطة فصل. إذا أضاف دور واحد كتلًا كثيرة، فقد يقع الإدخال السابق خارج هذه النافذة، والحل هو نقطة فصل ثانية موضوعة أبكر في الأمر النصي.

الأسعار ومدد الصلاحية

مدة الصلاحية الافتراضية هي 5 دقائق، وكل إصابة تجدد المؤقت دون مقابل. إذا كانت حركة المرور لديك تأتي في دفعات بطيئة، يمكنك الاشتراك في ساعة واحدة باستخدام "ttl": "1h" مقابل سعر كتابة أعلى.

البندالمضاعفمثال Opus 5.5 (لكل مليون توكن)
الإدخال الأساسي1x$4.00
كتابة الكاش لخمس دقائق1.25x$5.00
كتابة الكاش لساعة2x$8.00
قراءة الكاش0.05x على هذا النموذج$0.20

تقرأ معظم نماذج Claude من الكاش بسعر 0.1x من سعر الإدخال الأساسي. أما فئتا Opus 5.5 و Sonnet 5.5 فتقرآن بسعر 0.05x، وبعض الفئات الأحدث أدنى من ذلك.

الحد الأدنى للأحجام حسب النموذج

يعتمد الحد الأدنى على النموذج، وقد تغيّر كثيرًا بين الأجيال:

💡 فشل صامت: الأمر النصي الأقصر من الحد الأدنى يُعالَج دون تخزين، ولا يُرجَع أي خطأ. العلامة الوحيدة هي حقل الكاش الذي يبقى صفرًا.

OpenAI: نقاط الفصل تصل

لقصة OpenAI فصلان. لفترة طويلة كان التخزين تلقائيًا بالكامل. ومع GPT-5.6 أضافت نقاط الفصل ورسوم كتابة، ما يجعلها تشبه Claude أكثر بكثير.

النماذج الأقدم: تلقائية بالكامل

في GPT-5.5 و GPT-5.5 Pro يضع النظام نقاط فصل ضمنية كل 2,048 توكنًا، وتُضبط مدة الاحتفاظ باستخدام prompt_cache_retention، وتقتصر على 24h. وتدعم نماذج أقدم مثل GPT 5.4 و GPT 5.1 و GPT 5 و GPT 4.1 كلًا من احتفاظ in_memory، الذي يدوم عادةً نحو 5 إلى 10 دقائق من الخمول، وخيار 24h الممتد.

خط ناقل في مستودع يفرز طرودًا متطابقة بينما يراقب عامل ومعه قهوة

يعتمد سعر الإدخال المخزّن على النموذج، لكن لا توجد رسوم كتابة إضافية في هذه الإصدارات. وهذا يجعل التخزين مجانيًا للتجربة. أسوأ حالة أن تدفع السعر العادي.

GPT-5.6 ورسوم الكتابة

تغيّرت القواعد مع GPT-5.6 وما بعدها، والإعداد الجديد أقرب إلى إعداد Claude:

  • وضعان: مع ضبط prompt_cache_options.mode على implicit، تقع نقطة فصل عند نهاية آخر رسالة مؤهلة. ومع explicit، تضع أنت كل نقطة فصل بنفسك باستخدام prompt_cache_breakpoint.
  • التسعير: تكلف قراءات الكاش 0.1x من سعر الإدخال غير المخزّن، وتكلف كتابات الكاش 1.25x.
  • مدة الصلاحية: يقبل prompt_cache_options.ttl قيمة واحدة، هي 30m، وهي أيضًا القيمة الافتراضية.
  • الحد الأدنى: 1,024 توكن إدخال مرئي.
  • التوجيه: يتيح معامل توجيه الكاش في الطلب الاحتفاظ بمحاسبة كاش منفصلة لكل عميل أو مستخدم أو مساحة عمل.
{
  "model": "YOUR_GPT_5_6_MODEL",
  "prompt_cache_options": { "mode": "explicit" },
  "input": [
    {
      "role": "developer",
      "content": [{
        "type": "input_text",
        "text": "Stable rubric and instructions...",
        "prompt_cache_breakpoint": { "mode": "explicit" }
      }]
    },
    { "role": "user", "content": "The changing part of the request" }
  ]
}

تضم فئات المنصة الثلاث الحالية GPT 5.6 Terra و GPT 5.6 Luna و GPT 5.6 Sol. تحقق من جدول الأسعار المباشر لكل فئة قبل وضع الميزانية، لأن OpenAI تدرج بعض الفئات بأسعار قراءة مخزّنة أعمق.

Gemini: كاشان في واحد

تقدم Google آليتين منفصلتين، وتُحتسبان بطريقتين مختلفتين. الأولى تحدث تلقائيًا. والثانية كائن تنشئه وتديره أنت.

التخزين الضمني افتراضيًا

التخزين الضمني مفعّل افتراضيًا لجميع نماذج Gemini 2.5 وما بعدها. لا تغيّر أي شيفرة. إذا شارك الطلب بادئة مشتركة مع طلب سابق، فهو مؤهل لإصابة، ويُمرَّر التوفير تلقائيًا.

الحد الأدنى هو 2,048 توكنًا لنموذجي Gemini 2.5 Flash و 2.5 Pro، و 4,096 توكنًا لنماذج Gemini 3.5 Flash وأشقائه الأحدث من فئة Flash و Gemini 3.1 Pro. تتطابق نصائح Google الخاصة مع قاعدة البادئة تمامًا: ضع المحتوى الكبير المشترك في البداية، وأرسل الطلبات ذات البادئة المتشابهة متقاربة زمنيًا.

لا يوجد وعد بأي طلب بعينه، مع ذلك. التخزين الضمني يعمل حسب الفرصة المتاحة، ولهذا يتجه بعض الفرق إلى النسخة الصريحة.

الكاش الصريح ورسوم التخزين

مع التخزين الصريح تنشئ كائن كاش، ثم توجّه الطلبات إليه.

cache = client.caches.create(
    model="gemini-2.5-flash",
    config=types.CreateCachedContentConfig(
        system_instruction="Long, stable instructions...",
        contents=[big_document],
        ttl="3600s",
    ),
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Today's question",
    config=types.GenerateContentConfig(cached_content=cache.name),
)

منصات محمّلة مكدّسة على رفوف التخزين المبرّد، صورة لدفع ثمن المساحة بالساعة

مدة الصلاحية الافتراضية هي ساعة واحدة، ويمكنك تحديد مدتك باستخدام ttl، مثل "300s". يمكنك لاحقًا تغيير ttl أو expire_time، ولا شيء آخر في الكاش. تتكون الفوترة من ثلاثة أجزاء: التوكنات المعاد استخدامها بمعدل مخفّض، وتخزين لكل توكن في الساعة طوال مدة وجود الكاش، والسعر العادي لكل ما هو خارج الكاش. للكاش الصريح حد أدنى 2,048 توكنًا على نماذج 2.5 و 4,096 على خط 3.x. لا تدعم Interactions API سوى النوع الضمني.

نشرت Google خصومات إعادة استخدام تتراوح بين 75% و90% حسب جيل النموذج، لذا تأكد من الرقم الخاص بنموذجك في صفحة الأسعار المباشرة.

الأرقام جنبًا إلى جنب

ثلاثة دفاتر وآلة حاسبة وإيصالات مرتبة على مكتب من خشب البلوط لمقارنة التكلفة

الميزةClaudeOpenAI (GPT-5.6 وما بعدها)Gemini
طريقة التفعيلcache_control نقطة فصل، أو حقل واحد على المستوى الأعلى للوضع التلقائيمفعّل ضمنيًا افتراضيًا، أو نقاط فصل صريحةمفعّل ضمنيًا افتراضيًا، إضافةً إلى كائنات كاش صريحة
مدة الصلاحية5 دقائق، أو ساعة واحدة عند الطلب30 دقيقةالضمني غير مضمون. الصريح مدته الافتراضية ساعة واحدة
تكلفة الكتابة1.25x لخمس دقائق، و 2x لساعة1.25xسعر الإدخال العادي للضمني. تخزين لكل توكن في الساعة للصريح
تكلفة القراءة0.1x على معظم النماذج، و 0.05x على Opus 5.5 و Sonnet 5.50.1xمعدل مخفّض يُضبط لكل نموذج
الحد الأدنى للبادئة512 إلى 4,096 توكن حسب النموذج1,024 توكن مرئي2,048 على 2.5، و 4,096 على النماذج الأحدث
التحكمحتى 4 نقاط فصلوضع ضمني أو صريحكائن كاش بمدة TTL تحددها

أيهما أقل تكلفة؟

استخدم أرقام Claude للتحقق من نقطة التعادل. كتابة واحدة لخمس دقائق بسعر 1.25x مع قراءة واحدة بسعر 0.1x تكلف 1.35x. استدعاءان بلا تخزين يكلفان 2x. لذا إعادة استخدام واحدة تغطي تكلفة الكتابة بالفعل. أما خيار الساعة فيكتب بسعر 2x، فتحتاج إلى قراءتين قبل أن يتفوق على عدم التخزين.

الآن لنكبّر الحساب. خذ أمرًا نصيًا للنظام بحجم 20,000 توكن يُرسل 1,000 مرة يوميًا، بسعر Opus 5.5 الأساسي البالغ $4 لكل مليون توكن:

  • بلا تخزين: 20 مليون توكن بسعر $4 لكل مليون تساوي $80.00.
  • تخزين مع 50 بدءًا باردًا يوميًا: 50 كتابة بسعر $5 لكل مليون تكلف $5.00، و 950 قراءة بسعر $0.20 لكل مليون تكلف $3.80، أي $8.80 في المجموع.

تُحتسب رسائل المستخدم ومخرجات النموذج بالطريقة نفسها في الحالتين، لذا يعزل هذا الحساب التوفير على البادئة وحدها. على نماذج OpenAI الأقدم التي لا تفرض رسوم كتابة، يكون الحساب أبسط. أما على Gemini، فيضيف المسار الصريح ساعات تخزين إلى الفاتورة، لذا قد يكلّف الكاش الذي يبقى خاملًا معظم اليوم أكثر مما يوفّره.

أخطاء تقتل إصابات الكاش

معظم إعدادات التخزين الفاشلة ليست مشكلات في المزوّد. بل تأتي من ثلاث عادات.

يد تختم تاريخًا مختلفًا على كل ورقة من كومة من نماذج متطابقة

الطوابع الزمنية داخل البادئة

الخطأ الكلاسيكي سطر مثل "الوقت الحالي: 14:32:07" قرب أعلى موجّه النظام. البادئة تختلف في كل طلب، لذا لا يمكن أن تتطابق أبدًا. توثّق Anthropic الفخ نفسه مع نقطة فصل موضوعة على كتلة تحتوي على طابع زمني ورسالة مستخدم: لا تحدث الإصابة أبدًا، لأنه لم يُكتب أي إدخال في أي موضع أبكر. الحل هو نقل نقطة الفصل إلى آخر كتلة تبقى متطابقة عبر الطلبات، ووضع السطر المتغير بعدها.

إعادة ترتيب الأدوات والرسائل

الترتيب جزء من البصمة. تبديل تعريفات الأدوات، أو فرز قائمة المستندات المسترجعة بترتيب مختلف، أو تسلسل JSON بترتيب حقول جديد، كلها تنتج بادئة جديدة. مع Claude، يُبطل التغيير على مستوى واحد ذلك المستوى وكل ما بعده: عدّل تعريف أداة فتذهب كاشات الأدوات والنظام والرسائل كلها. وإضافة الصور أو حذفها تُبطل كاش الرسائل. أبقِ قوائم الأدوات بترتيب ثابت، وسلسلها بالطريقة نفسها في كل مرة.

حركة المرور الباردة بين الدفعات

مدة الصلاحية 5 دقائق لا تفيد مهمةً ترسل طلبًا واحدًا كل عشر دقائق. تدفع كل استدعاء ثمن الكتابة دون أن يحصل أبدًا على قراءة من الكاش. في هذه الحالة أمامك ثلاثة خيارات: الانتقال إلى مدة الصلاحية ذات الساعة الواحدة (1-hour) على Claude، أو إرسال طلب خفيف رخيص الثمن للإبقاء على الكاش نشطًا قبل انتهاء المؤقت، أو تجميع العمل بحيث تصل الطلبات متقاربة زمنيًا.

💡 قاعدة عامة: اجعل مدة صلاحية الكاش تطابق الفجوة بين الطلبات، لا طول الجلسة.

قياس الإصابات في الإنتاج

لا تثق بإعداد حتى تقول الاستجابة إنه نجح. يبلغ كل مزوّد عن نشاط الكاش في كتلة الاستخدام من الاستجابة.

يد تمسك ساعة توقيت فضية عند خط النهاية في مضمار ركض

الحقول التي يجب تسجيلها

المزوّدأين تنظر
Claudeusage.cache_creation_input_tokens و usage.cache_read_input_tokens
OpenAIusage.input_tokens_details.cached_tokens، وفي GPT-5.6 وما بعدها، cache_write_tokens
Geminiعدد التوكنات المخزّنة في usage_metadata

في Claude، يحسب حقل input_tokens التوكنات التي تأتي بعد آخر نقطة فصل فقط، لا الأمر النصي كله. المجموع الحقيقي هو cache_read_input_tokens + cache_creation_input_tokens + input_tokens، لذا احسب معدل الإصابة من هذا المجموع.

سجّل ثلاثة أرقام لكل طلب: التوكنات المخزّنة المقروءة، والتوكنات المكتوبة، والتوكنات المحسوبة بالسعر الكامل. ثم راقب إشارتين. عدد قراءات يبقى صفرًا بعد الطلب المطابق الثاني يعني أن البادئة تتغير أو تقع تحت الحد الأدنى. وعدد كتابات يرتفع في كل طلب يعني أن مدة الصلاحية تنتهي قبل وصول الاستدعاء التالي.

أنشئ صورك بنفسك مع Picasso IA

اكتب مسودات الأوامر النصية في ثلاثة نماذج

تعيش مفاتيح التخزين المؤقت في واجهة API الخاصة بكل مزوّد، لذا فمكان ضبطها هو شيفرتك. يفيدك Picasso IA قبل ذلك بخطوة، عندما تقرر ما الذي ينبغي أن تقوله البادئة الثابتة:

  1. افتح Claude Sonnet 5، والصق الأمر النصي الطويل للنظام، واطلب منه شد الصياغة دون تغيير القواعد.
  2. شغّل المهمة نفسها عبر GPT 5.6 Terra و Gemini 3.5 Flash.
  3. قارن الإجابات الثلاث، واحتفظ بالأمر النصي الذي يتصرف جيدًا في كل مكان، وجمّده كبادئة مخزّنة لديك.

الأمر النصي المجمّد هو أيضًا أمر ثابت، وهذا بالضبط ما يحتاجه الكاش.

مصوّر يرتب صورًا مطبوعة على طاولة في دور علوي مضاء بالشمس

الصور في هذا المقال كلها أُنشئت بواسطة P Image، كل صورة من أمر نصي وصفي واحد عن العدسة والضوء والملمس. يمكنك فعل الشيء نفسه في دقائق. جرّب Seedream 4.5 لتفاصيل 4K حادة، أو Flux 2 Pro للواقعية الفوتوغرافية، أو Imagen 4 للمشاهد الطبيعية، أو Nano Banana Pro للنتائج المصقولة.

اكتب أمرًا نصيًا يسمّي الشخص أو الجسم الرئيسي في الصورة، والضوء، والعدسة، ثم شغّله، وغيّر تفصيلة واحدة وشغّله مرة أخرى. أسرع طريقة للإحساس بنموذج هي أن تبدأ بتجربة صورك الخاصة على Picasso IA اليوم.

شارك هذا المقال

اختر لغتك

مقالات ذات صلة