التخزين المؤقت للسياق

حين يتشارك طلبان نفس البداية (رسالة نظام، مستند مرجعي، تاريخ محادثة)، لا يُعاد حساب الجزء المشترك. يُفوتَر لكم بـسعر مخفّض، تلقائيًا، دون تغيير أي سطر شيفرة.

لا شيء لتفعيله#

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

قراءة ما خُزِّن مؤقتًا#

تذكر كل استجابة ذلك في usage :

"usage": {
  "prompt_tokens": 2014,
  "completion_tokens": 12,
  "total_tokens": 2026,
  "prompt_cache_hit_tokens": 1920,     // servis depuis le cache → tarif réduit
  "prompt_cache_miss_tokens": 94,      // recalculés → tarif normal
  "prompt_tokens_details": { "cached_tokens": 1920 }
}

الاصطلاحان السائدان في السوق موجودان كلاهما (prompt_cache_hit_tokens وprompt_tokens_details.cached_tokens) : تقرأ أدواتكم الحالية أحدهما دون أي تعديل.

ما يغيّره ذلك في الفاتورة#

تُفوتَر الرموز المخدومة من الذاكرة المؤقتة بسعر الذاكرة المؤقتة للنموذج، الأقل بكثير من سعر الإدخال :

النموذجإدخال / مليونإدخال من الذاكرة المؤقتة / مليون
mina-flash250 DA8 DA
mina-low350 DA10 DA
mina-full1300 DA45 DA

حساب توضيحي#

طلب mina-low بـ2014 رمز إدخال ورمز واحد إخراج :

sans cache : 2 014 × 350                       = 704 900 µDA
avec cache : 94 × 350  +  1 920 × 10           =  52 100 µDA
                                                 ─────────────
                                                 −92,6 % sur l'entrée

الأسعار السارية هي دائمًا تلك المعروضة على plateforme.cloudzir.com/pricing.

الاستفادة القصوى منه#

تنطبق الذاكرة المؤقتة على البادئة، أي بداية الطلب. يجب إذًا وضع ما لا يتغير في البداية، وما يتغير في النهاية.

messages = [
    # 1. stable : identique d'une requête à l'autre → mis en cache
    {"role": "system", "content": INSTRUCTIONS + CATALOGUE_PRODUITS},
    # 2. variable : à la fin
    {"role": "user", "content": question_du_client},
]
  • لا قيمة متقلبة في المقدمة : تاريخ، ساعة، معرّف جلسة، عدّاد. ضعوها في رسالة المستخدم، في النهاية.
  • ترتيب ثابت : إن كنتم تبنون الإدخال انطلاقًا من قاموس، رتّبوا المفاتيح؛ ترتيب متغيّر يكسر البادئة المشتركة.
  • المحادثات : بإضافة الجولات في النهاية، يبقى كل التاريخ السابق بادئة مشتركة. هذا حيث يكون الكسب الأكبر.

مدة البقاء#

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

ما هي الذاكرة المؤقتة، وما ليست عليه

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

الإكمال بذاكرة مؤقتة تطبيقية#

للأسئلة المتكررة بشكل صارم (أسئلة شائعة، تصنيف نفس العبارة)، يبقى الأرخص هو تخزين الإجابة عندكم : تكلفة صفرية، زمن استجابة صفري.

import hashlib, json

cache: dict[str, str] = {}

def repondre(client, messages, model="mina-flash"):
    cle = hashlib.sha256(
        json.dumps([model, messages], ensure_ascii=False, sort_keys=True).encode()
    ).hexdigest()
    if cle in cache:
        return cache[cle]                     # aucun appel, aucun jeton facturé
    r = client.chat.completions.create(model=model, messages=messages)
    cache[cle] = r.choices[0].message.content
    return cache[cle]

التتبع#

تعرض صفحة Usage، لكل طلب، الجزء المخدوم من الذاكرة المؤقتة؛ ما يتيح التحقق من أن إدخالكم مبني جيدًا.

cache_control (صيغة Anthropic) مقبول ودون أثر : التخزين المؤقت تلقائي، لا شيء يُوسَم يدويًا.

الإعدادات

استجابة API