మీ AI బిల్లు రాత్రికి రాత్రే మూడు రెట్లు పెరిగింది. మోడల్, ట్రాఫిక్ వాల్యూమ్ మరియు ప్రాంప్ట్‌ల టెక్స్ట్ కూడా మారలేదు; దానికి కారణం OpenAI యొక్క ప్రాంప్ట్ క్యాష్‌ను (prompt cache) దెబ్బతీసిన ఒకే ఒక కోడ్ లైన్.

క్యాష్ ఎందుకు ముఖ్యమో తెలుసుకోండి

ప్రొవైడర్ యొక్క ప్రాంప్ట్ క్యాష్, బైట్-టు-బైట్ (byte-for-byte) ఒకేలా ఉండే ప్రిఫిక్స్‌తో (prefix) ప్రారంభమయ్యే ఏ రిక్వెస్ట్‌నైనా మళ్ళీ ప్రాసెస్ చేయకుండా ఉండటం ద్వారా మీ డబ్బును ఆదా చేస్తుంది. మొదటి టోకెన్లు మునుపటి కాల్‌తో సరిపోలితే, ప్రొవైడర్ ఇప్పటికే కంప్యూట్ చేసిన ఆ టోకెన్ల రిప్రజెంటేషన్‌ను తిరిగి ఉపయోగిస్తుంది మరియు కేవలం కొత్త సఫిక్స్ (suffix) కోసం మాత్రమే ఛార్జ్ చేస్తుంది. దీని నియమం చాలా కఠినమైనది: మ్యాచ్ ఖచ్చితంగా ఉండాలి, కేవలం పోలిక ఉంటే సరిపోదు. ప్రారంభంలో ఒక టోకెన్ మారినా, మొత్తం క్యాష్ హిట్ (cache hit) దెబ్బతింటుంది.

హిట్ రేట్‌ను దెబ్బతీసిన తప్పు

మా ఏజెంట్‌లో, మోడల్‌కు "ప్రస్తుత సమయం" గురించి అవగాహన కల్పించడానికి సిస్టమ్ ప్రాంప్ట్ (system prompt) యొక్క একেবারে పైన ప్రస్తుత టైమ్‌స్టాంప్‌ను (timestamp) ఉంచాము. టైమ్‌స్టాంప్ ప్రతి సెకనుకు మారుతూ ఉండటం వల్ల, ప్రతి రిక్వెస్ట్‌కు మొదటి టోకెన్ సీక్వెన్స్ విభిన్నంగా ఉంది. క్యాష్ ఎప్పుడూ మ్యాచ్‌ను కనుగొనలేకపోయింది, కాబట్టి ప్రతి కాల్ తర్వాత వచ్చే 18,000 స్టాటిక్ టోకెన్ల కోసం (tool schemas, documentation snippets, few-shot examples మరియు fixed instructions) పూర్తి ధర చెల్లించాల్సి వచ్చింది. దీని ఫలితంగా 0% క్యాష్ హిట్ రేట్ మరియు మూడు రెట్లు పెరిగిన బిల్లు ఎదురయ్యింది.

క్యాచబిలిటీ (cacheability) కోసం పునర్వ్యవస్థీకరణ

దీని పరిష్కారం చాలా సులభం: ఎప్పుడూ మారని అంశాలన్నింటినీ ప్రాంప్ట్ ముందు భాగంలో ఉంచండి మరియు మారుతూ ఉండే (volatile) డేటాను వెనుకకు నెట్టండి.

స్టాటిక్ ప్రిఫిక్స్ (cacheable)

  • Tool definitions
  • Retrieval documents
  • Few-shot examples
  • Fixed system instructions

వొలటైల్ సఫిక్స్ (non-cacheable)

  • Current time
  • Session identifiers
  • User messages
  • Live context

మోడల్‌కు సమయం కావాలంటే, దానిని ముందుగా చేర్చడానికి (prepending) బదులుగా, స్టాటిక్ బ్లాక్ తర్వాత జోడించండి (append). అప్పుడు మీరు చివరలో తాజా కాంటెక్స్ట్‌ను అందిస్తున్నప్పటికీ, క్యాష్ ఆ భారీ స్టాటిక్ భాగాన్ని తిరిగి ఉపయోగించుకోగలదు.

స్టాక్‌లో దాగి ఉన్న ప్రమాదాలు

టెంప్లేట్ సరిగ్గా ఉన్నట్లు అనిపించినప్పటికీ, మిడిల్‌వేర్ (middleware) లేదా SDKలు పేలోడ్ (payload) APIకి చేరుకోవడానికి ముందే రిక్వెస్ట్ ఐడిలు, టైమ్‌స్టాంప్‌లు లేదా ఇతర హెడర్‌ల వంటి మెటాడేటాను నిశ్శబ్దంగా ముందు చేర్చవచ్చు. కొన్ని డిప్లాయ్‌మెంట్ పైప్‌లైన్‌లు కూడా ప్రతి రోల్‌అవుట్‌లో టూల్ డెఫినిషన్స్‌ను మారుస్తుంటాయి. ఈ అదృశ్య మార్పులు బైట్ సీక్వెన్స్‌ను మారుస్తాయి మరియు మీ ప్రాంప్ట్ బిల్డర్‌లో ఎటువంటి కోడ్ మార్పు లేకపోయినా క్యాష్‌ను దెబ్బతీస్తాయి.

క్యాష్ హిట్ రేట్‌ను గమనించండి

ఏ AI ఏజెంట్‌కైనా క్యాష్ హిట్ రేట్‌ను ప్రాథమిక హెల్త్ మెట్రిక్‌గా పరిగణించండి. అకస్మాత్తుగా తగ్గుదల కనిపిస్తే, రిక్వెస్ట్ యొక్క ప్రారంభ బైట్లలో ఏదో ఒకటి మారుతూ ఉందని అర్థం. హిట్ శాతాన్ని చూపే మానిటరింగ్ టూల్స్, ఖర్చులో అసాధారణ మార్పులు (cost anomalies) పెరగకముందే వాటిని గుర్తించడానికి మీకు సహాయపడతాయి.

ముగింపు

ప్రాంప్ట్ క్యాషింగ్ అనేది మార్చలేని ప్రిఫిక్స్ (immutable prefix) పై ఆధారపడి ఉంటుంది. ప్రతి రిక్వెస్ట్ ప్రారంభంలో మారే ఏ అంశం అయినా—ఒక చిన్న టైమ్‌స్టాంప్ కూడా—క్యాష్‌ను నిలిపివేస్తుంది మరియు మీ బిల్లును మూడు రెట్లు పెంచుతుంది. స్టాటిక్ కంటెంట్‌ను ముందుగా, వొలటైల్ కంటెంట్‌ను చివరగా ఉంచండి, దాగి ఉన్న ప్రిపెండర్ల (prependers) కోసం మీ టూల్‌చైన్‌ను తనిఖీ చేయండి మరియు క్యాష్ హిట్ రేట్‌లను గమనించండి. క్రమబద్ధమైన ప్రాంప్ట్ లేఅవుట్ పనితీరును మరియు లాభాలను రెండింటినీ కాపాడుతుంది.