Бірлік 6 / 11

Шығындарды оңтайландыру: жедел кэштеу

Табыстар:

  • Шұғыл кэштеудің префикс сәйкестік логикасын түсіндіріңіз
  • Бекітілген мәтінмәнді бірінші және айнымалы мәтінмәнді кейін қою арқылы кэш соққысын арттырады
  • Кэшті жазу/оқу экономикасын және шығынсыздық нүктесін есептей алады

LLM өнімі прототипте арзан көрінеді; Шкалаға көтерілгенде, шот таң қалдырады. Көптеген жұмыс жүктемелерінде есепшоттың көп бөлігі әрбір сұраумен қайта-қайта жіберілетін бірдей бекітілген контекстен келеді: ұзақ жүйелік шақыру, ережелер кітабы, анықтамалық құжаттама. Жедел кэштеу дәл осы қалдықтарды жояды. Бұл бөлімде сіз кэштің қалай жұмыс істейтінін, соғуға шақыруды қалай ұйымдастыру керектігін және кэш экономикасының шығынсыздық нүктесін қалай есептеу керектігін үйренесіз. Дұрыс орнатылса, ол тек сіздің шотыңызды екі есе немесе одан да төмен түсіруі мүмкін.

Кэш қалай жұмыс істейді? Бір өзгермейтін ереже

Шұғыл кэштеу префикс сәйкестігі болып табылады. Провайдер сұрауыңыздың басынан бері өңдеген таңбалауыштарды уақытша сақтайды. Егер сұрау келесі сұрауда бірдей префикспен басталса, бұл жалпы бөлік қайта есептелмейді; Оны оқу кэшке қарағанда әлдеқайда арзан.

Бұдан бір өзгермейтін ереже шығады: егер бір байт префикстің кез келген жерінде өзгерсе, сол нүктеден бастап бүкіл кэш жарамсыз болады. Яғни, тұрақты мазмұн басында, ауыспалы мазмұн соңында болуы керек. Жүйе сұрауының басына әрбір сұраумен өзгеретін жолды қойсаңыз, мысалы, «Бүгінгі күн: 18.07.2026», оның артындағы барлық нәрсе кэшке кіре алмайды.

Өңдеу тәртібі әдетте: құралдар → жүйелік шақыру → хабарламалар. Сіз кэш нүктесін (үзіліс нүктесін) бекітілген бөлімнің соңына қоясыз.

Кэш экономикасы

Кэште үш баға деңгейі бар:

  • Кэш жазу: бірінші рет сақтау. ~1,25x қалыпты кіріс бағасы (5 минуттық сақтау үшін).
  • Кэш оқылды: кейінгі сұраулар бойынша оқу. Қалыпты кіріс бағасынан ~0,1 есе, яғни оннан бір.
  • Қалыпты кіріс: кэшке кірмейтін және әр жолы толық құнымен өңделетін бөлік.

Шығынсыздық нүктесі: Бірінші сұрау жазу сыйақысын төлейді (1,25×). Екінші сұраудан бастап көрсеткіш (0,1×) іске қосылады. Шамамен, сіз екі сұрау бойынша мойын және мойын боласыз; Осыдан кейін бұл таза жинақ. Бекітілген мәтінмән неғұрлым үлкен болса және ол қайта пайдаланылған сұраулар соғұрлым көп болса, пайда соғұрлым үлкен болады.

Сценарий

Кэш жұмыс істей ме?

Үлкен тіркелген жүйе шақыруы, мыңдаған сұраулар

Иә — ең жоғары табыс

Бірдей анықтамалық құжаттар бойынша көптеген сұрақтар

Иә

Әрбір сұрау үшін мүлдем басқа қысқа мәтін

Жоқ — жазу бонусы босқа кетті

Бір реттік сұрау

Жоқ - мүлде оқымайды

Күні/идентификаторы жүйе шақыруындағы әрбір сұраумен өзгереді

Жоқ — префикс бұзылған, соққы нөлге тең

Қадам бойынша: Хит шақыруын қалай орнатуға болады?

  1. Тұрақты және айнымалыны ажыратыңыз. Қандай мазмұн ешқашан өзгермейді (жүйе кеңесі, ережелер кітабы, құжаттама)? Әрбір сұраумен не өзгереді (пайдаланушы сұрағы, күні, идентификаторы)?
  2. Тұрақтыны басына қойыңыз. Өңдеу кезінде бірінші келетін бөлік (құралдар, жүйе) тұрақты болуы керек.
  3. Айнымалы мәнді соңына қойыңыз. Пайдаланушының ағымдағы сұрағы, соңғы.
  4. Белгіні шекараның соңына қойыңыз. Кэш нүктесін бекітілген бөліктің соңғы блогына қойыңыз.
  5. Соққыны растау. Жауаптағы пайдалану өрісінде cache_read_input_tokens мәні нөлден үлкен екенін тексеріңіз. Егер нөл болса, префиксте жасырын бұзушы бар.

{ "жүйе": [ { "түрі": "мәтін", "мәтін": "{{үлкен_тұрақты_жүйе_промпту_және_ережелер}}", "кэш_басқару": { "түрі": "эфемерлік" } } ], "хабарламалар": [ { "рөл": "пайдаланушы", "мазмұн" "r"} ]}

Кеңес: кэш соққыларын болжамаңыз, оларды өлшеңіз. Егер ретті сұрауларда usage.cache_read_input_tokens әлі де нөлге тең болса, дыбыссыз ажыратқыш (жүйе шақыруындағы datetime.now(), ретсіз JSON, әр сұраумен өзгеретін құралдар тізімі) іске қосылады. Байты бойынша екі сұраудың өңделмеген сұрауын салыстырыңыз және айырмашылықты табыңыз.

Үнсіз бұзушылар

Кэшті білмей бүлдіретін типтік үлгілер:

# BREAKER: "Бүгінгі күн: {{қазір}}. Сіз ассистентсіз..." ← префикс әрбір сұрауда өзгереді, соғу нөлге тең# TRUE: айнымалы мәнді хабарлама жүйесіне жылжытыңыз: "Сіз көмекшісісіз..." ← тұрақтысы "Бүгінгі күн: {{қазір}}" сұрауымен өзгеретін жүйе шақыруына ендіру. {{қазір}} Сұрақ: ..."}] ← айнымалысы соңында

Басқа ажыратқыштар: JSON әр сұрау бойынша басқаша сұрыпталған (кілттерді белгіленген тәртіпте ұстаңыз), пайдаланушыға байланысты әртүрлі құралдар тізімі (құралдар алдымен өңделеді; олар өзгерсе, ешнәрсе кэшке енбейді), сөйлесудің ортасындағы үлгіні өзгерту (кэштер үлгіге тән).

Әлсіз шақыру / Күшті шақыру (кэшке ыңғайлы құрылым)

# ӘЛІСІЗ (кэшті бұзу) жүйесі: "Күні: 18.07.2026 14:32. Қолданушы: Ахмет (id 8842). Сіз қолдау ботысыз. Ережелер: ...(2000 токен)..."

# STRONG (кэшке ыңғайлы құрылым)жүйе: "Сіз қолдау ботысыз. Ережелер: ...(2000 таңбалауыш, ешқашан өзгермейді)..." [кэш белгісі]хабарламалар: [ { рөл: пайдаланушы, мазмұн: "Күні: 18.07.2026 14:32. Пайдаланушы идентификаторы: 8842. Сұрақ: ақшаны қалай қайтарамын?" }]

Әлсіз нұсқада 2000 таңбалауыштан тұратын ереже блогы әрбір сұрау бойынша толық құнымен өңделеді. Күшті нұсқада бірдей блок бір рет жазылады және бағаның оннан бір бөлігіне кейінгі барлық сұраныстарда оқылады.

Үш шағын корпус

1-жағдай – Ережелер кітабын кэштеу. Бухгалтерлік есепті автоматтандыру әрбір шот-фактураға 12 000 таңбалауыш ережесін қосу болды; Күніне 5000 сұраныс. Кэшсіз енгізу күніне ~180 доллар тұрады. Олар ереже кітапшасын тұрақты түрде сақтап, оны кэштеді: бірінші сұраулар жазу сыйақысын төледі, кейінгі оқулар 0,1×. Енгізу құны тәулігіне ~90%-ға ~18 долларға дейін төмендеді.

2-жағдай — Жасырын күн жолының құны. Бір команда кэшті орнатты, бірақ хит алған жоқ; cache_read_input_tokens әрқашан нөлге тең болды. Себеп: Жүйе шақыруының бірінші жолында datetime.now() болды, префикс әрбір сұраумен өзгеріп отырды. Біз күнді пайдаланушы хабарламасына ауыстырған кезде, соққы жылдамдығы кенеттен 0% -дан 94% -ға дейін өсті.

3-жағдай – Кэштің орны дұрыс емес. Іздеу қолданбасы әр сұраумен мүлдем басқа қысқа сұрауларды жіберді; Олар кэш белгісін асыға қосты. Ешқандай ортақ префикссіз әрбір сұрау тек жазу сыйақысын төледі, оқуға болмайды — құнын арттырады. Олар белгіні алып тастады. Сабақ: кэш қайта пайдаланылатын үлкен және тұрақты префикс болған жағдайда ғана төлейді.

Жалпы қателер

  • Тұрақты және айнымалыны араластыру: айнымалы мазмұн префиксте болғанда, соққы қалпына келтіріледі.
  • Жүйе шақыруына кірістіру күні/идентификаторы: Ең көп таралған дыбыссыз бұзушы.
  • Соққыны өлшемеу: cache_read_input_tokens белгіленбесе, қалдықтар байқалмайды.
  • Жалпыға ортақ префикс болмаған кезде кэш қосу: тек жазу сыйақысын төлейсіз, құны артады.
  • Көлік құралының тізімін немесе үлгісін өзгерту: префикс басынан бастап бұзылған; бәрі қайта жазылады.
  • Кэштің минималды өлшемін ұмыту: өте қысқа кэштер (үлгіге байланысты ~1–4k таңбалауыштан төмен) кэшке үнсіз кірмейді.

Тереңірек: кэшті жұмыс жүктемесі түрі бойынша жобалау

Кэштеудің нақты төлемі сіздің жұмыс жүктемеңіздің сипатына байланысты өзгереді; сондықтан алдымен трафикті біліп алыңыз. Үш типтік үлгі және дұрыс орнату:

Жалпы жүйелік шақыру, әртүрлі сұрақтар. Ең көп тараған кәсіпорын үлгісі: пайдаланушының жүздеген әртүрлі сұрақтары бар үлкен жүйе шақыруы (рөл, ережелер, мүмкін анықтамалық құжат). Мұнда бекітілген бөлік (жүйе) бастапқыда кэштеледі; әрбір жаңа сұрақ тек өзінің шағын бөлігі үшін толық бағаны төлейді. Пайда өте жоғары, себебі үлкен бөлік бағаның оннан бір бөлігінде қайта-қайта оқылады.

Көп шеңберлі монолог. Әңгімелесу ұзаққа созылған сайын, әрбір жаңа раунд барлық алдыңғы тарихтың үстіне құрылады. Соңғы айналымның соңына кэш жалаушасын қойсаңыз, әрбір сұрау алдыңғы сөйлесу префиксін қайта пайдаланады; әңгімелесу өскен сайын хиттар жиналады. Бұл ұзақ ассистент сессияларының құнын айтарлықтай төмендетеді.

Ортақ префикс өзгертілетін соңғы бит. Бірнеше сұраулар бекітілген алдыңғылардың үлкен жинағын (үлгілер жинағы, нұсқаулар) бөліседі, бірақ соңында бір сұрақпен бөлінеді. Сіз кэш көрсеткішін ортақ бөліктің соңына қоясыз; Әйтпесе, әрбір сұрау өзінің жеке кэшін жазады және оның ешқайсысы оқылмайды.

Бір ескерту: кэш үлгіге және белгілі бір минималды өлшемге байланысты. Өте кішкентай префикстер (үлгіге байланысты бірнеше мың таңбалауыштан төмен) оларды жалаушамен белгілесеңіз де, кэшке үнсіз кірмейді — cache_creation_input_tokens нөл болып қалады. Сондай-ақ, сұхбат ортасында үлгіні өзгерту бүкіл кэшті жарамсыз етеді; Егер басқа тапсырма арзан үлгіні қажет етсе, негізгі ағынды бір үлгіде сақтаңыз және қосымша тапсырманы бөлек қоңырауға қойыңыз.

Қысқаша айтқанда

Шұғыл кэштеу префикс сәйкестігі болып табылады: бекітілген мазмұн басында, айнымалы мазмұн соңында болуы керек. Үлкен, қайта пайдаланылған мәтінмән үшін оқу құны толық бағаның оннан бір бөлігі болып табылады, шамамен екі сұрауда да бұзылады. Ең жиі кездесетін қате - айнымалы деректерді жүйе шақыруында ендіру арқылы префиксті бұзу; Сіз соққыны пайдалану өрісінде өлшеу арқылы тексересіз.

Қолданбалы тапсырма

Жұмыс жүктемесін таңдаңыз. (1) Мазмұнды екі бағанға бөліңіз: «ешқашан өзгермейді» және «әр сұраумен өзгереді». (2) Тұрақты бөлікті басына және айнымалы бөлігін соңына қойып, шақыру құрылымын қайта сызыңыз. (3) Бекітілген бөліктің таңбалауыш өлшемін бағалаңыз және айлық құнын кэшпен/кэшсіз салыстырыңыз. (4) Қай өрістен (cache_read_input_tokens) соққыны растайтыныңызды ескеріңіз.

бақылау парағы

  • [ ] Мен кэш префикс сәйкестігі және жалғыз өзгермейтін ереже екенін түсіндіре аламын.
  • [ ] Бекітілген мазмұнды басына және айнымалыны соңына қою арқылы дәлдікті арттыра аламын.
  • [ ] Мен жазу/оқу экономикасын және екі сұраныстың шығынсыздық нүктесін білемін.
  • [ ] Мен дыбыссыз бұзушыларды тани аламын (күн, ретсіз JSON, көлік тізімін өзгерту).
  • [ ] Мен соққыны usage.cache_read_input_tokens арқылы тексере аламын.