Prefix cache

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

این Prefix Cache یه قابلیته که سمت Model Provider قرار داره و باعث میشه مدل مجبور نباشه هر بار کل Context رو از اول پردازش کنه.

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

فرض کن تا الان ۲۰ تا پیام رد و بدل کردین و فقط یه پیام جدید اضافه شده. بیشتر Context دقیقاً همون چیزیه که توی درخواست قبلی هم وجود داشت. Model Provider این بخش مشترک رو داخل Prefix Cache نگه می‌داره و دفعه‌ی بعد به جای اینکه دوباره از اول پردازشش کنه، فقط از همون جایی ادامه میده که تغییر ایجاد شده.

به همین خاطر، اون بخش تکراری با قیمت خیلی کمتری حساب میشه و بهش Cache Tokens میگن.

اگه Prefix Cache وجود نداشت، هر بار که یه پیام جدید می‌فرستادی، مدل مجبور بود کل تاریخچه‌ی مکالمه رو دوباره از اول پردازش کنه. مثلاً توی یه Session پنجاه‌پیامه، پیام اول پنجاه بار پردازش می‌شد.

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

یه نکته‌ی مهم هم اینه که Prefix Cache فقط وقتی کار می‌کنه که ابتدای Context تغییر نکرده باشه. اگه مثلاً Harness هر بار یه چیز جدید به اول System Prompt اضافه کنه، Cache از همون نقطه از کار میفته و مدل مجبور میشه دوباره همه‌چیز رو از اول پردازش کنه.