AI और LLMLLM एप्लिकेशन

Caching LLM गेटवे

अपने OpenAI या Anthropic SDK को एक URL पर पॉइंट करें, और दोहराए गए अनुरोधों का जवाब दोबारा भुगतान करने की जगह HotKV से मिलेगा। कोड में कोई बदलाव नहीं।

बदलने वाली कोड की लाइन
1
static binary
~6 MB
ओपन सोर्स
Apache-2.0
कदम 1 में से 5
गेटवे शुरू करें

provider के सामने एक binary या container। कॉलर की अपनी API key आगे भेजी जाती है, इसलिए गेटवे को कोई key नहीं चाहिए।

उदाहरण सेशनplaying
# गेटवे शुरू करें
$ hotkv-gateway --upstream https://api.openai.com --semantic --embedding-model text-embedding-3-small
(gateway listening on 127.0.0.1:8080, cache in HotKV)

असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।

समस्या

ज़्यादातर LLM ट्रैफ़िक खुद को दोहराता है। वही system prompt और वही सवाल अलग-अलग यूज़र, retries और टेस्ट रन से बार-बार आते हैं, और हर एक का बिल बनता है। हर सर्विस में, आपकी इस्तेमाल की हर भाषा में cache जोड़ना धीमा है और उसमें गलती होना आसान है।

HotKV इसे कैसे संभालता है

hotkv-gateway आपके एप्लिकेशन और LLM API के बीच बैठता है। SDK का base URL बदलें, और एक जैसे अनुरोध HotKV से मिलते हैं, streaming जवाब stream के रूप में ही replay होते हैं, दोबारा शब्द बदलकर पूछे गए सवाल अर्थ से परोसे जा सकते हैं, और एक साथ चल रहे एक जैसे अनुरोध एक ही upstream कॉल साझा करते हैं। अगर HotKV धीमा है या बंद है, तो अनुरोध सीधे provider के पास जाते हैं।

कदम दर कदम

क्या होता है, कमांड दर कमांड

  1. 01

    गेटवे शुरू करें

    provider के सामने एक binary या container। कॉलर की अपनी API key आगे भेजी जाती है, इसलिए गेटवे को कोई key नहीं चाहिए।

    hotkv-gateway --upstream https://api.openai.com --semantic --embedding-model text-embedding-3-small
  2. 02

    पहला अनुरोध, एक miss

    अभी कुछ cache नहीं है। अनुरोध एक बार upstream जाता है, और पूरा हुआ 200 जवाब सहेज लिया जाता है।

    curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d @question.json | grep -i x-hotkv-cache
  3. 03

    वही अनुरोध, एक hit

    एक जैसा अनुरोध, चाहे keys अलग क्रम में हों, HotKV से जवाब पाता है और provider तक कभी नहीं पहुँचता।

    curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d @question.json | grep -i x-hotkv-cache
  4. 04

    दोबारा शब्द बदलकर पूछा गया सवाल

    semantic cache चालू होने पर, अलग शब्दों में पूछे गए single-turn सवाल को किसी मिलते-जुलते सवाल के जवाब से परोसा जा सकता है।

    curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d @rephrased.json | grep -i x-hotkv-cache
  5. 05

    एक जैसे अनुरोधों की बौछार

    तीन एक जैसे अनुरोध तब आते हैं जब पहला अभी चल ही रहा होता है। वे एक upstream कॉल साझा करते हैं।

    for i in 1 2 3; do curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -d @new.json & done
कहां फ़िट बैठता है

असली परिदृश्य

Evaluation और CI रन

टेस्ट सूट और prompt evaluations हर रन में वही अनुरोध भेजते हैं। गेटवे के पीछे सिर्फ़ बदले हुए prompts की कीमत लगती है।

कई भाषाओं वाले प्लेटफ़ॉर्म

Python बैकएंड, Node.js worker और Go सर्विस, सबको एक base URL बदलकर वही cache मिल जाता है, हर भाषा में कोई लाइब्रेरी जोड़े बिना।

सेल्फ-होस्टेड मॉडल

vLLM या Ollama के सामने गेटवे API शुल्क की जगह GPU समय बचाता है, क्योंकि दोहराए गए prompts मॉडल सर्वर तक कभी पहुँचते ही नहीं।

अंतर्निहित

आपको क्या मिलता है

Exact और semantic cache

एक जैसे chat, completion और embeddings अनुरोध cache होते हैं, और single-turn चैट सवाल अर्थ से भी मिलाए जा सकते हैं (--semantic)।

Streaming replay

Streamed जवाब कैप्चर होते हैं और stream के रूप में ही replay होते हैं, इसलिए क्लाइंट बिल्कुल पहले जैसा व्यवहार करते हैं।

डिफ़ॉल्ट रूप से सुरक्षित

हर API key का अपना cache होता है। errors और filtered जवाब कभी सहेजे नहीं जाते, और अनुरोध एक header से cache को छोड़ सकते हैं।

कभी रास्ते में नहीं आता

अगर HotKV धीमा है या उपलब्ध नहीं है, तो अनुरोध सीधे provider के पास जाते हैं। गेटवे अपने आँकड़े /_hotkv/metrics पर भी बताता है।

आपके कोड में इकलौता बदलाव

python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1")   # the only change

# For Anthropic: start the gateway with --upstream https://api.anthropic.com
import anthropic
client = anthropic.Anthropic(base_url="http://localhost:8080")

आम सवाल

क्या गेटवे को HotKV लाइसेंस चाहिए?

नहीं। यह किसी भी HotKV सर्वर पर काम करता है। जिस लाइसेंस में prompt cache शामिल है, उसके साथ एंट्री PCACHE namespace में रहती हैं और HotKV बचाए गए tokens का हिसाब रखता है। semantic cache को हमेशा लाइसेंस चाहिए।

क्या दो ग्राहक एक-दूसरे के जवाब देख सकते हैं?

नहीं। cache key में कॉलर के credentials शामिल होते हैं, इसलिए हर API key का अपना cache होता है, जब तक आप गेटवे में एक ही upstream key न रखें या उसे --scope global के साथ शुरू न करें।

यह किन providers के साथ काम करता है?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM और हर वह चीज़ जो OpenAI API बोलती है, साथ ही exact cache के साथ Anthropic की Messages API।

संबंधित उपयोग के मामले

इसे अपने वर्कलोड पर आज़माएं

HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।