Phase 11: LLM Engineering

ذخیره سازی سریع و ذخیره سازی متن

پیامک سیستم شما 4000 توکن است. پیامک RAG شما 20000 توکن است. هر بار هر درخواست هر دو را ارسال می کنید. همچنین هر بار برای هر دو پرداخت می کنید. پیامک سریع به ارائه دهنده اجازه می دهد تا این پیشگویی را گرم نگه دارد و 10٪ از نرخ عادی را در مورد استفاده مجدد به شما پرداخت کند. اگر درست استفاده شود، هزینه نتیجه گیری را 5090% و تاخیر اولین توکن را 4085% کاهش می دهد.

Type: Build

Languages: Python

Prerequisites: Phase 11 · 01 (Prompt Engineering), Phase 11 · 05 (Context Engineering), Phase 11 · 11 (Caching and Cost)

Time: ~60 minutes

مشکل

يه مامور رمزگاري يه پيغام 15 هزار توکن رو به کلود ميفرستد هر بار که حرف بزنه$3/M input tokens is $0.90 در هزینه ورودی تنها قبل از هر پیام واقعی کاربر. ضرب به 10،000 مکالمه روزانه و لایحه به 9،000 دلار / روز برای متن که هرگز تغییر نمی کند.

شما نمی توانید بدون آسیب به کیفیت، پرامپتر را کوچک کنید. شما نمی توانید از ارسال آن اجتناب کنید. مدل به آن در هر نوبت نیاز دارد. تنها حرکت این است که هزینه کامل را برای یک پیشگویی که ارائه دهنده قبلاً دیده است، پرداخت نکنید.

این حرکت به سرعت به حافظه کش است. آنترپک آن را در اوت 2024 (با یک نوع 1 ساعت طولانی شده TTL در 2025) عرضه کرد ، OpenAI آن را در اواخر آن سال خودکار کرد ، گوگل به همراه Gemini 1.5 به صورت صریح به حافظه کش زمینه را عرضه کرد و اکنون هر سه آن را به عنوان یک ویژگی درجه اول در مدل های مرزی خود ارائه می دهند.

مفهوم

!Prompt caching: write once, read cheap

The mechanic.وقتی پیشگویی یک درخواست با یک درخواست اخیر مطابقت دارد، ارائه دهنده KV-کاش را از اجرا قبلی به جای رمزگذاری مجدد توکن ها ارائه می دهد. شما اولین بار یک هزینه نوشتن کوچک و هر بار بعد تخفیف خواندن بزرگ پرداخت می کنید.

Three provider flavors in 2026.

ProviderAPI styleHit discountWrite premiumDefault TTLMin cacheable
AnthropicExplicit cache_control markers on content blocks90% off input25% surcharge5 min (extendable to 1 hour)1,024 tokens (Sonnet/Opus), 2,048 (Haiku)
OpenAIAutomatic prefix detection50% off inputnoneUp to 1 hour (best-effort)1,024 tokens
Google (Gemini)Explicit CachedContent APIStorage-billed; read at ~25% of normalStorage fee per token·hourUser-set (default 1 hour)4,096 tokens (Flash), 32,768 (Pro)

The invariant.هر سه پیشگویی فقط. اگر هر نشانه ای بین درخواست ها متفاوت باشد، همه چیز پس از اولین نشانه متفاوت یک خطا است. بخش های ثابت را در بالای صفحه قرار دهید، بخش های متغیر را در پایین.

طرح دوستانه با کیش

[system prompt]          <-- cache this
[tool definitions]       <-- cache this
[few-shot examples]      <-- cache this
[retrieved documents]    <-- cache if reused, else don't
[conversation history]   <-- cache up to last turn
[current user message]   <-- never cache (different every time)

از دستور تجاوز کنید پیام کاربر را بالای پیام سیستم قرار دهید، بازخواهی های پویا را بین چند عکس و کش هرگز وارد نکنید.

محاسبه بروک هم

25٪ امتیاز نوشتن Anthropic به این معنی است که یک بلوک ذخیره شده باید حداقل دو بار خوانده شود تا پول را صرفه جویی کند. 1 نوشتن + 1 خواندن به طور متوسط 0.675x هزینه در هر درخواست (موفق 32٪) است؛ 1 نوشتن + 10 خواندن به طور متوسط 0.205x (موفق 80٪) است. قاعده عمودی: هر چیزی که انتظار دارید حداقل 3 بار در TTL استفاده مجدد کنید، ذخیره کنید.

آن را بسازید

مرحله 1: ذخیره سازی سریع آنترپیک با نشانگرهای صریح

pythonimport anthropic

client = anthropic.Anthropic()

SYSTEM = [
    {
        "type": "text",
        "text": "You are a senior Python reviewer. Follow the rubric exactly.\n\n" + RUBRIC_15K_TOKENS,
        "cache_control": {"type": "ephemeral"},
    }
]

def review(code: str):
    return client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        system=SYSTEM,
        messages=[{"role": "user", "content": code}],
    )

.cache_controlمارکر به آنترپیک می گوید تا بلوک را برای 5 دقیقه ذخیره کند. دوباره در داخل این پنجره استفاده کنید. پس از انقضا دوباره استفاده کنید و دوباره بنویسید.

Response usage fields:

pythonresponse = review(code_a)
response.usage
# InputTokensUsage(
#     input_tokens=120,
#     cache_creation_input_tokens=15023,   # paid at 1.25x
#     cache_read_input_tokens=0,
#     output_tokens=340,
# )

response_b = review(code_b)
response_b.usage
# cache_creation_input_tokens=0
# cache_read_input_tokens=15023           # paid at 0.1x

هر دو زمینه را در IC بررسی کنید اگر cache_read_input_tokensدر تمام درخواست ها صفر باقی می ماند، کلید های حافظه کش شما در حال حرکت هستند.

مرحله دوم: یک ساعت طولانی تر TTL

برای کارهای طولانی مدت، 5 دقیقه پیش بینی بین شغل ها به پایان می رسد.ttl:

python{"type": "text", "text": RUBRIC, "cache_control": {"type": "ephemeral", "ttl": "1h"}}

یک ساعت TTL دو برابر هزینه نوشتن (50٪ در مقایسه با خط اصلی به جای 25٪) است، اما در هر دسته که از قبل از 5 بار استفاده می شود، به سرعت باز می گردد.

مرحله 3: OpenAI خودکار ذخیره سازی

OpenAI به شما هیچ چیزی برای تنظیم نمی دهد. هر پیشگویی بیش از 1,024 توکن که با یک درخواست اخیر مطابقت دارد به طور خودکار تخفیف 50٪ دریافت می کند.

pythonfrom openai import OpenAI
client = OpenAI()

resp = client.chat.completions.create(
    model="gpt-5",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},   # long and stable
        {"role": "user", "content": user_msg},
    ],
)
resp.usage.prompt_tokens_details.cached_tokens  # the discounted portion

قانون مشابه طرح دوستانه به کش اعمال می شود. دو چیز از کش OpenAI را می کشند که از آنترپیک را نمی کشند: تغییر userفیلدی (که به عنوان یک بخش کلید حافظه کش استفاده می شود) و ابزار تنظیم مجدد.

مرحله 4: ذخیره سازی متن صریح دوقلوها

جمیانی با کیش به عنوان یک شی درجه اول که شما ایجاد می کنید و نام می دهید، رفتار می کند:

pythonfrom google import genai
from google.genai import types

client = genai.Client()

cache = client.caches.create(
    model="gemini-3.8-flash",
    config=types.CreateCachedContentConfig(
        display_name="rubric-v3",
        system_instruction=RUBRIC,
        contents=[FEW_SHOT_EXAMPLES],
        ttl="3600s",
    ),
)

resp = client.models.generate_content(
    model="gemini-3.8-flash",
    contents=["Review this code:\n" + code],
    config=types.GenerateContentConfig(cached_content=cache.name),
)

جمیانی ذخیره سازی را در هر توکن ساعت تا زمانی که حافظه کش زنده است، هزینه می کند و با ~25٪ از نرخ ورودی معمولی می خواند. این شکل مناسب است وقتی شما از همان پیام عظیم در چندین جلسه در طول روز استفاده می کنید.

مرحله 5: اندازه گیری میزان ضربه در تولید

ببینcode/main.pyبرای یک حسابدار سه ارائه دهنده شبیه سازی شده که حساب های نوشتن / خواندن / گمشدن را ردیابی می کند و هزینه های مخلوط را برای هر درخواست 1K محاسبه می کند. دروازه در نرخ هدف قرار می گیرد اکثر تنظیمات تولید Anthropic باید بعد از گرم شدن > 80٪ بخش خواندن را ببینند.

خطرهایی که هنوز در سال 2026 وجود دارند

  • Dynamic timestamps at the top. "Current time: 2026-04-22 15:30:02"هر درخواست گم شده است. وقت مهر را در زیر نقطه شکستن حافظه پیشگیری حرکت دهید.
  • Tool reordering.سریالیز کردن ابزارها در یک نظم پایدار یک تغییر دستور بین انتشارات هر ضربه را می شکند.
  • Free-text near-duplicates."شما کمک کننده هستید". مقابل "شما یک دستیار مفید هستید". یک بایت تفاوت = گمشدن کامل.
  • Too-small blocks.آنترپیک یک طبقه 1,024 توکن را اجرا می کند (2،048 برای هیکو). بلوک های کوچکتر به طور خاموشی ذخیره نمی شوند.
  • Blind cost dashboards."توکن ورودی" را به زیرنویس و زیرنویس تقسیم کنید. در غیر این صورت کاهش ترافیک به نظر می رسد به عنوان یک برنده زیرنویس.

ازش استفاده کن

"پاكي" مخزن 2026:

SituationPick
Agent with stable 10k+ system prompt, many turnsAnthropic cache_control with 5-min TTL
Batch job reusing a prefix for 30+ minutesAnthropic with ttl: "1h"
Serverless endpoints on GPT-5, no custom infraOpenAI automatic (just make your prefix stable and long)
Multi-day reuse of a giant code/doc corpusGemini explicit CachedContent
Cross-provider fallbackKeep the cacheable prefix layout identical across providers so any hit works

ترکیب با کیشنگ معنوی (فاز 11 · 11) برای لایه پیام کاربر: دستی های کیشنگ فوری استفاده مجدد شبیه به توکن ، دستی های کیشنگ معنوی استفاده مجدد شبیه به معنی

-باده

نگه دارoutputs/skill-prompt-caching-planner.md:

markdown---
name: prompt-caching-planner
description: Design a cache-friendly prompt layout and pick the right provider caching mode.
version: 1.0.0
phase: 11
lesson: 15
tags: [llm-engineering, caching, cost]
---

Given a prompt (system + tools + few-shot + retrieval + history + user) and a usage profile (requests per hour, TTL needed, provider), output:

1. Layout. Reordered sections with a single cache breakpoint marked; explain which sections are stable, which are volatile.
2. Provider mode. Anthropic cache_control, OpenAI automatic, or Gemini CachedContent. Justify from TTL and reuse pattern.
3. Break-even. Expected reads per write within TTL; net cost vs no-cache with math.
4. Verification plan. CI assertion that cache_read_input_tokens > 0 on the second identical request; dashboard split by cached vs uncached tokens.
5. Failure modes. List the three most likely reasons the cache will miss in this setup (dynamic timestamp, tool reorder, near-duplicate text) and how you will prevent each.

Refuse to ship a cache plan that places a dynamic field above the breakpoint. Refuse to enable 1h TTL without a reuse count that makes the 2x write premium pay back.

تمرینات

  1. Easy.با يه تماس با سيستم 5000 توکن با کلاود 10 نوبت رو بگيرcache_controlو بعدش با. گزارش حساب ورودی توکن برای هر یک.
  2. Medium.یک تست هرنس بنویسید که با توجه به یک قالب فوری و یک دفترچه درخواست، نرخ ضربه و پس انداز دلاری انتظار می رود را در هر ارائه دهنده محاسبه کند (Anthropic 5m، Anthropic 1h، OpenAI خودکار، Gemini صریح).
  3. Hard.ایجاد یک بهینه سازی طرح: به یک پرامپت و یک لیست از زمینه های مشخص شده داده شده است stable=True/False، به سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت سمت

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Prompt caching"Makes long prompts cheap"Reusing a provider-side KV-cache for matching prefixes; 50-90% discount on repeated input tokens.
cache_control"The Anthropic marker"Content-block attribute that declares "everything up to here is cacheable"; {"type": "ephemeral"}.
Cache write"Paying the premium"The first request that populates the cache; billed at ~1.25x input rate on Anthropic, free on OpenAI.
Cache read"The discount"Subsequent requests matching the prefix; billed at 10% (Anthropic), 50% (OpenAI), ~25% (Gemini).
TTL"How long it lives"Seconds the cache stays warm; Anthropic 5m default (extendable 1h), OpenAI best-effort up to 1h, Gemini user-set.
Extended TTL"1-hour Anthropic cache"{"type": "ephemeral", "ttl": "1h"}; 2x write premium but worth it for batch reuse.
Prefix match"Why my cache missed"Caches only hit when every token from the start up to the breakpoint is byte-identical.
Context caching (Gemini)"The explicit one"Google's named, storage-billed cache object; best for multi-day reuse of large corpora.

خواندن بیشتر

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.