اگر با Claude API چیزی ساخته باشید، احتمالاً خیلی زود متوجه شدهاید که هزینه توکنها فقط از خود سؤال کاربر نمیآید. در بسیاری از پروژهها، همان دستور سیستم، همان سند مرجع، همان چند مثال ثابت یا همان تعریف ابزارها در هر درخواست دوباره ارسال میشود و همین بخش تکراری میتواند بخش اصلی هزینه را بسازد.

قابلیتی که خیلیها دیر به سراغش میروند، Prompt caching است. این ویژگی خروجی مدل را تغییر نمیدهد، اما به Claude اجازه میدهد بخش ثابت و تکرارشونده پرامپت را یک بار پردازش کند و در درخواستهای بعدی از cache بخواند. نتیجه عملی این است که اگر معماری درخواستهایتان درست باشد، هزینه بخش ورودیِ تکراری میتواند بسیار کمتر از حالت عادی شود.

Prompt caching دقیقاً چه مشکلی را حل میکند؟
در یک فراخوانی معمولی API، مدل هر بار کل ورودی را از نو میخواند؛ حتی اگر ۹۰ درصد آن همان چیزی باشد که در درخواست قبلی فرستادهاید. برای یک چت ساده شاید این موضوع مهم نباشد، اما در ابزارهای واقعی مثل دستیار کدنویسی، ربات پشتیبانی، سامانه تحلیل اسناد یا ابزار پژوهشی، بخش ثابت پرامپت میتواند بسیار بزرگتر از سؤال تازه کاربر باشد.
با Prompt caching شما مشخص میکنید کدام بخش از ورودی قابل استفاده مجدد است؛ مثلاً دستور سیستم، راهنمای سبک نوشتار، پایگاه دانش، سند مرجع طولانی یا تعریف ابزارها. بار اول، Claude این بخش را مانند ورودی عادی پردازش و در cache ذخیره میکند. در درخواستهای بعدی، همان بلوک بهجای پردازش کامل، از cache خوانده میشود و هزینه خواندن cache فقط کسری از هزینه ورودی معمولی است.

صرفهجویی از کجا میآید؟
نکته مهم این است که این روش قرار نیست شما را مجبور کند زمینه و دستورهای لازم را حذف کنید. میتوانید همچنان پرامپت سیستم مفصل، مثالهای کافی یا سند مرجع کامل را همراه درخواست نگه دارید، اما فقط بخش متغیر پیام با نرخ کامل محاسبه شود. در منابع Anthropic، خواندن از cache برای بخش قابل استفاده مجدد میتواند حدود یکدهم هزینه ورودی معمولی باشد؛ در مقابل، نوشتن اولیه در cache کمی گرانتر از ورودی عادی تمام میشود.
این اضافههزینه اولیه معمولاً وقتی چند بار از همان محتوا استفاده کنید جبران میشود. اگر یک سند یا مجموعه دستورها در دهها یا صدها درخواست تکرار شود، پرداخت اولیه برای cache در برابر تخفیفهای بعدی ناچیز است. به همین دلیل این قابلیت برای workloadهای پرتکرار، ابزارهای agentic و محصولات SaaS مبتنی بر LLM اهمیت زیادی دارد.
ترکیب Prompt caching با Batch API
اگر پاسخ فوری لازم ندارید، اهرم دوم Batch API است. Batch API درخواستها را غیرهمزمان پردازش میکند و برای کارهایی مثل دستهبندی انبوه محتوا، پردازش شبانه گزارشها، استخراج اطلاعات از اسناد یا ارزیابیهای دورهای مناسب است. طبق توضیح MakeUseOf، تخفیف Batch API با تخفیف cache در تضاد نیست و در سناریوهای مناسب میتواند کنار آن استفاده شود.
برای مثال فرض کنید ابزاری دارید که باید به سؤالهای کاربران درباره یک سند ۵۰ صفحهای پاسخ بدهد. بدون cache، آن سند در هر سؤال دوباره با نرخ کامل ورودی محاسبه میشود. با cache، سؤال اول هزینه نوشتن cache را دارد، اما سؤالهای بعدی همان سند را با هزینهای بسیار کمتر میخوانند. اگر همین پردازشها فوری نباشند و از Batch API هم استفاده کنید، هزینه نهایی هر کار میتواند به چند سنت یا حتی کمتر نزدیک شود؛ البته عدد دقیق همیشه به مدل، حجم توکن و قیمتهای روز Anthropic بستگی دارد.
اشتباهاتی که cache را بیاثر میکنند
Prompt caching فقط وقتی درست کار میکند که بلوک cacheشده واقعاً بین درخواستها یکسان بماند. اگر داخل دستور سیستم timestamp، شناسه درخواست، تاریخ امروز یا دادههای متغیر بگذارید، cache hit از بین میرود. همین اتفاق ممکن است با JSONهایی بیفتد که هر بار ترتیب کلیدهایشان عوض میشود؛ از نگاه مدل و API، آن ورودی دیگر دقیقاً همان ورودی قبلی نیست.
- بخش ثابت و سنگین پرامپت را در ابتدای ورودی قرار دهید.
- متغیرهایی مثل نام کاربر، سؤال تازه یا داده لحظهای را بعد از نقطه cache بگذارید.
- ساختار دادههای تکراری را پایدار نگه دارید؛ حتی ترتیب کلیدها و متنهای کوچک را بیدلیل تغییر ندهید.
- بعد از راهاندازی، آمار usage را بررسی کنید تا مطمئن شوید توکنها واقعاً از cache خوانده میشوند.
چطور آن را فعال کنیم؟
در استفاده مستقیم از API، باید برای بخشی از ورودی که میخواهید دوباره استفاده شود cache breakpoint تعریف کنید. این قابلیت برای پرامپتهای خیلی کوتاه مناسب نیست و معمولاً وقتی ارزش دارد که بلوک ثابت شما به حداقل طول لازم برسد؛ عدد دقیق بسته به مدل و مستندات فعلی Anthropic ممکن است تغییر کند، پس پیش از تخمین هزینه باید صفحه قیمتگذاری و مستندات رسمی را بررسی کنید.
اگر از Claude Code استفاده میکنید، بخش زیادی از این کار پشت صحنه انجام میشود. Claude Code برای دستور سیستم، تعریف ابزارها و راهنمای پروژه از cache استفاده میکند تا در مکالمههای چندمرحلهای لازم نباشد همه این محتواها با هزینه کامل در هر نوبت دوباره پردازش شوند.
برای چه کسانی ارزش دارد؟
اگر فقط چند درخواست تکمرحلهای و کوتاه به Claude میفرستید، شاید تفاوت مالی چشمگیر نباشد. اما هر جایی که یک متن ثابت، سند مرجع، راهنمای محصول یا مجموعه ابزارها بارها تکرار میشود، Prompt caching میتواند یکی از سادهترین راههای کاهش هزینه باشد. در پروژههای بزرگتر، ترکیب آن با Batch API میتواند تفاوت بین یک محصول قابلمقیاس و یک آزمایش پرهزینه باشد.
جمعبندی ساده است: محتوای ثابت را ثابت نگه دارید، بخش متغیر را جدا کنید، cache hit را در usage بررسی کنید و برای پردازشهای غیرضروریِ فوری، Batch API را هم در نظر بگیرید. اینها خروجی Claude را جادوییتر نمیکنند، اما هزینه استفاده جدی از API را بسیار منطقیتر میکنند.
منبع: این مطلب یک بومیسازی و بازنویسی تحریریهای بر اساس مقالهای از MakeUseOf است: مشاهده مقاله اصلی.