Cache tokens

Cache Tokens بخش‌هایی از Context هستن که Model Provider قبلا پردازش کرده و دوباره از همون نتیجه استفاده می‌کنه؛ همین باعث میشه Session های طولانی هزینه‌ی خیلی کمتری داشته باشن.

Cache Tokens همون Input Tokensهایی هستن که Model Provider قبلا پردازششون کرده و نتیجه‌شون رو داخل Prefix Cache نگه داشته.

وقتی یه درخواست جدید می‌فرستی، اگه اول Context دقیقاً مثل درخواست قبلی باشه، مدل لازم نیست دوباره اون بخش رو از اول پردازش کنه. همون نتیجه‌ی قبلی رو استفاده می‌کنه و اون قسمت با هزینه‌ی خیلی کمتری حساب میشه. این بخش‌ها همون Cache Tokens هستن.

اگه این قابلیت وجود نداشت، چون Model یه سیستم Statelessـه، توی هر Model Provider Request باید کل Session از اول پردازش می‌شد. یعنی هرچی مکالمه طولانی‌تر می‌شد، هزینه هم بیشتر و بیشتر بالا می‌رفت.

فرض کن درخواست اول فقط شامل AB باشه. چون اولین باره، هیچ چیزی داخل Cache نیست و هر دو بخش با قیمت کامل پردازش میشن.

حالا درخواست بعدی ABC باشه. چون AB قبلاً پردازش شده، فقط C با قیمت کامل حساب میشه و AB به عنوان Cache Tokens محاسبه میشه.

اگه بعدش ABCD رو بفرستی، باز هم فقط D هزینه‌ی کامل داره، چون بقیه از قبل داخل Cache هستن.

ولی اگه وسط کار ABCD تبدیل بشه به AXCD ، از همون جایی که B به X تغییر کرده، Cache دیگه قابل استفاده نیست و XCD باید دوباره از اول پردازش بشه.

به همین خاطر Cache خیلی حساسه. حتی یه تغییر کوچیک توی ابتدای Context، مثل تغییر یه Timestamp ، جابه‌جا شدن متن‌ها یا تغییر System Prompt، باعث میشه بخش بزرگی از Cache از بین بره و هزینه‌ی درخواست‌ها ناگهان زیاد بشه.

اگه هم چند دقیقه از Session استفاده نکنی، معمولاً Cache منقضی میشه و درخواست بعدی باید یک بار کل Context رو با قیمت کامل پردازش کنه. و خب بعد از اون دوباره Cache ساخته میشه.