سارا برای یک دفتر حقوقی دستیاری ساخته که «آییننامهٔ اجرایی» و مجموعهٔ بخشنامههای سازمان را میخواند و به پرسشهای وکلا جواب میدهد. کیفیت جوابها خوب است؛ مشکل جای دیگری است. هر پرسش، حتی یک پرسش دو خطی، کل آن هشتاد هزار توکن سند را دوباره به مدل میفرستد. یعنی برای پرسش «مهلت اعتراض چند روز است؟» همانقدر هزینه میدهد که برای یک تحلیل کامل پرونده. صورتحساب ماه اول که آمد، مدیر دفتر پرسید: «ما داریم پول پردازش چه چیزی را میدهیم؟» جواب صادقانه این بود: پول خواندن دوبارهٔ سندی که مدل ده دقیقه پیش خوانده بود.
راهحل این مسئله یک تکنیک است که در مستندات آنتروپیک با نام «کش پرامپت» شناخته میشود و ادعایش هم بزرگ است: تا نود درصد کاهش هزینهٔ ورودی و بیش از دو برابر کاهش تأخیر. در درسهای پیشین این سری دربارهٔ شکلدادن به رفتار مدل حرف زدیم، از خروجی JSON مطمئن تا تفکر گسترده. این درس دربارهٔ چیزی است که هیچ ربطی به کیفیت جواب ندارد و فقط به اقتصاد آن مربوط است — و دقیقاً به همین دلیل معمولاً دیر یاد گرفته میشود؛ وقتی صورتحساب آمده است.
لیست مطالب
آنچه در این درس یاد میگیرید
- کش پرامپت دقیقاً چه چیزی را ذخیره میکند و چرا با «حافظهٔ گفتوگو» فرق دارد.
- روش خودکار در برابر نقطهگذاری دستی، و اینکه از کدام باید شروع کنید.
- کف توکن لازم برای کششدن، طول عمر کش و گزینهٔ یکساعته.
- ریاضی واقعی هزینه: چرا نوشتن گرانتر و خواندن ده برابر ارزانتر است و نقطهٔ سربهسر کجاست.
- الگوی گفتوگوی چندنوبتی و اینکه چطور کش خودش جلو میرود.
- پرتکرارترین اشتباهی که کش را بیصدا باطل میکند.
کش پرامپت چیست و چه چیزی نیست
هر بار که درخواستی میفرستید، مدل باید کل ورودی را از نو پردازش کند. اگر نود درصد آن ورودی در هزار درخواست بعدی هم عیناً تکرار شود — یک سند بلند، یک راهنمای طولانی، یک مجموعه مثال — دارید هزار بار هزینهٔ پردازش یک چیز ثابت را میدهید. کش پرامپت میگوید: نتیجهٔ پردازش آن بخش ثابت را نگه دار و دفعهٔ بعد از همانجا ادامه بده.
مهم است که این را با حافظه اشتباه نگیریم. مدل چیزی را «به یاد نمیآورد»؛ شما هنوز باید تمام آن هشتاد هزار توکن را در هر درخواست بفرستید. چیزی که تغییر میکند صورتحساب و زمان است، نه محتوای درخواست. کش یک بهینهسازی زیرساختی است، نه قابلیت جدید مدل.
سادهترین شکل ممکن: یک خط
مستندات توصیه میکنند از حالت خودکار شروع کنید. یعنی بهجای اینکه خودتان تصمیم بگیرید کجای پرامپت مرز کش باشد، یک پارامتر میگذارید و سامانه آخرین بخش قابلکش را خودش علامت میزند:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=300,
cache_control={"type": "ephemeral"},
system=REGULATION_TEXT,
messages=[{"role": "user", "content": question}]
)
u = response.usage
print("نوشته در کش:", getattr(u, "cache_creation_input_tokens", 0))
print("خوانده از کش:", getattr(u, "cache_read_input_tokens", 0))
همین. دو فیلد پایانی مهمترین ابزار عیبیابی شما هستند. اگر پس از درخواست دوم هنوز cache_read_input_tokens صفر است، یعنی کش کار نمیکند و باید دنبال علت بگردید — نه اینکه فرض کنید همهچیز درست است و ماه بعد صورتحساب را ببینید.
حالت دستی، وقتی کنترل بیشتری میخواهید
در حالت دستی، cache_control را روی خودِ بلوکهای محتوا میگذارید:
تا اینجا مقدمه بود. بخش اصلی این درس — نمونهها، پرامپتهای آماده و تمرینها — برای اعضای ویژه باز میشود.
کش پرامپت: همان کیفیت با کسری از هزینه
برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.
🎁 ورود / ثبتنام و شروع ۱۴ روز رایگان