તમારું AI બિલ રાતોરાત ત્રણ ગણું વધી ગયું. મોડેલ, ટ્રાફિક વોલ્યુમ અને પ્રોમ્પ્ટનું લખાણ પણ સમાન હતું; દોષી કોડની એક એવી લાઇન હતી જેણે OpenAI ના પ્રોમ્પ્ટ કેશ (prompt cache) ને તોડી નાખ્યું હતું.

કેશ (cache) શા માટે મહત્વનું છે

પ્રોવાઈડરનું પ્રોમ્પ્ટ કેશ તમને પૈસા બચાવે છે કારણ કે તે કોઈપણ એવા રિક્વેસ્ટના પુનઃ-પ્રોસેસિંગને ટાળે છે જે બાઇટ-ફોર્-બાઇટ સમાન પ્રીફિક્સ (prefix) થી શરૂ થાય છે. જો પ્રથમ ટોકન્સ અગાઉના કોલ સાથે મેળ ખાય, તો પ્રોવાઈડર તે ટોકન્સના પહેલેથી જ કમ્પ્યુટેડ રિપ્રેઝન્ટેશનનો ફરીથી ઉપયોગ કરે છે અને માત્ર નવા સફિક્સ (suffix) માટે જ ચાર્જ કરે છે. આ નિયમ કડક છે: મેચ ચોક્કસ હોવું જોઈએ, માત્ર સમાન નહીં. શરૂઆતમાં એક અલગ ટોકન પણ આખા કેશ હિટને નષ્ટ કરી દે છે.

હિટ રેટ (hit rate) ઘટાડી દેનારી ભૂલ

અમારા એજન્ટમાં, મોડેલને "હાલની સ્થિતિ" નો અહેસાસ કરાવવા માટે અમે સિસ્ટમ પ્રોમ્પ્ટના સૌથી ઉપર વર્તમાન ટાઇમસ્ટેમ્પ (timestamp) મૂક્યો હતો. કારણ કે ટાઇમસ્ટેમ્પ દર સેકન્ડે બદલાય છે, તેથી દરેક રિક્વેસ્ટ માટે પ્રથમ ટોકન સિક્વન્સ અનન્ય (unique) હતી. કેશને ક્યારેય કોઈ મેચ મળ્યો નહીં, તેથી દરેક કોલ માટે ત્યારબાદ આવતા 18,000 સ્ટેટિક ટોકન્સ—જેમ કે ટૂલ સ્કીમા (tool schemas), ડોક્યુમેન્ટેશન સ્નિપેટ્સ, ફ્યુ-શોટ ઉદાહરણો (few-shot examples) અને નિશ્ચિત સૂચનાઓ—માટે પૂરેપૂરી કિંમત ચૂકવવી પડી. પરિણામે કેશ હિટ રેટ 0% રહ્યો અને બિલ ત્રણ ગણું વધી ગયું.

કેશેબિલિટી (cacheability) માટે ફરીથી ગોઠવણી

ઉકેલ સરળ છે: જે વસ્તુ ક્યારેય બદલાતી નથી તેને પ્રોમ્પ્ટની આગળ રાખો અને કોઈપણ અસ્થિર (volatile) ડેટાને પાછળ ધકેલી દો.

સ્ટેટિક પ્રીફિક્સ (કેશેબલ)

  • ટૂલ ડેફિનેશન્સ (Tool definitions)
  • રિટ્રીવલ ડોક્યુમેન્ટ્સ (Retrieval documents)
  • ફ્યુ-શોટ ઉદાહરણો (Few-shot examples)
  • નિશ્ચિત સિસ્ટમ સૂચનાઓ (Fixed system instructions)

વોલેટાઇલ સફિક્સ (નોન-કેશેબલ)

  • વર્તમાન સમય (Current time)
  • સેશન આઈડેન્ટિફાયર્સ (Session identifiers)
  • યુઝર મેસેજ (User messages)
  • લાઈવ કોન્ટેક્સ્ટ (Live context)

જો મોડેલને સમયની જરૂર હોય, તો તેને પ્રોમ્પ્ટની શરૂઆતમાં મૂકવાને બદલે સ્ટેટિક બ્લોક પછી ઉમેરો. આ રીતે કેશ ભારે સ્ટેટિક ભાગનો ફરીથી ઉપયોગ કરી શકશે જ્યારે તમે અંતમાં તાજો કોન્ટેક્સ્ટ (context) પૂરો પાડી શકશો.

સ્ટેકમાં છુપાયેલા જોખમો

જ્યારે ટેમ્પલેટ સાચું દેખાતું હોય, ત્યારે પણ મિડલવેર અથવા SDKs પેલોડ API સુધી પહોંચે તે પહેલાં