AI en LLMLLM-toepassingen

Cachende LLM-gateway

Richt je OpenAI- of Anthropic-SDK op één URL en herhaalde verzoeken worden uit HotKV beantwoord in plaats van opnieuw betaald. Geen codewijzigingen.

regel code om te wijzigen
1
statische binary
~6 MB
open source
Apache-2.0
Stap 1 van 5
De gateway starten

Eén binary of container voor de provider. De eigen API-sleutel van de aanroeper wordt doorgestuurd, dus de gateway heeft er geen nodig.

Voorbeeldsessieplaying
# De gateway starten
$ 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)

Een geanimeerde walkthrough met echte HotKV-commando's en voorbeeldantwoorden. Klik op een stap om ernaartoe te springen. Commando's en antwoorden blijven Engels, precies zoals je ze in HotKV typt en ziet.

Het probleem

Het meeste LLM-verkeer herhaalt zichzelf. Dezelfde systeemprompt en vraag komen steeds opnieuw binnen van verschillende gebruikers, retries en testruns, en elk daarvan wordt in rekening gebracht. Een cache toevoegen in elke service, in elke taal die je gebruikt, is traag en makkelijk fout te doen.

Hoe HotKV het aanpakt

hotkv-gateway staat tussen je applicatie en de LLM-API. Wijzig de basis-URL van de SDK en identieke verzoeken worden uit HotKV geserveerd, streamingantwoorden worden als streams opnieuw afgespeeld, herformuleerde vragen kunnen op betekenis worden bediend en identieke verzoeken die onderweg zijn delen één upstream-aanroep. Als HotKV traag of onbereikbaar is, gaan verzoeken rechtstreeks naar de provider.

Stap voor stap

Wat er gebeurt, commando voor commando

  1. 01

    De gateway starten

    Eén binary of container voor de provider. De eigen API-sleutel van de aanroeper wordt doorgestuurd, dus de gateway heeft er geen nodig.

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

    Eerste verzoek, een miss

    Nog niets gecachet. Het verzoek gaat één keer upstream en het voltooide 200-antwoord wordt opgeslagen.

    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

    Hetzelfde verzoek, een hit

    Een identiek verzoek, zelfs met sleutels in een andere volgorde, wordt uit HotKV beantwoord en bereikt de provider nooit.

    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

    Een herformuleerde vraag

    Met de semantische cache aan kan een anders geformuleerde vraag van één beurt worden bediend met het antwoord op een vergelijkbare vraag.

    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

    Een burst van identieke verzoeken

    Drie identieke verzoeken komen binnen terwijl het eerste nog onderweg is. Ze delen één upstream-aanroep.

    for i in 1 2 3; do curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -d @new.json & done
Waar het past

Praktijkscenario's

Evaluatie- en CI-runs

Testsuites en promptevaluaties sturen bij elke run dezelfde verzoeken. Achter de gateway kost alleen een gewijzigde prompt iets.

Polyglotte platforms

Een Python-backend, een Node.js-worker en een Go-service krijgen dezelfde cache door één basis-URL te wijzigen, zonder bibliotheek in elke taal.

Zelfgehoste modellen

Voor vLLM of Ollama bespaart de gateway GPU-tijd in plaats van API-kosten, omdat herhaalde prompts de modelserver nooit bereiken.

Ingebouwd

Wat je krijgt

Exacte en semantische cache

Identieke chat-, completion- en embeddingverzoeken worden gecachet, en chatvragen van één beurt kunnen ook op betekenis matchen (--semantic).

Replay van streams

Gestreamde antwoorden worden vastgelegd en als stream opnieuw afgespeeld, zodat clients zich precies zo gedragen als voorheen.

Standaard veilig

Elke API-sleutel heeft een eigen cache. Fouten en gefilterde antwoorden worden nooit opgeslagen, en verzoeken kunnen de cache overslaan met een header.

Nooit in de weg

Als HotKV traag of niet beschikbaar is, gaan verzoeken rechtstreeks naar de provider. De gateway rapporteert zijn cijfers ook op /_hotkv/metrics.

De enige wijziging in je code

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")

Veelgestelde vragen

Heeft de gateway een HotKV-licentie nodig?

Nee. Hij werkt op elke HotKV-server. Met een licentie die de promptcache bevat, staan items in een PCACHE-namespace en houdt HotKV bespaarde tokens bij. De semantische cache vereist altijd een licentie.

Kunnen twee klanten elkaars antwoorden zien?

Nee. De cachesleutel bevat de inloggegevens van de aanroeper, dus elke API-sleutel heeft een eigen cache, tenzij je één upstream-sleutel in de gateway bewaart of hem start met --scope global.

Met welke providers werkt hij?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM en al het andere dat de OpenAI-API spreekt, plus de Messages-API van Anthropic met de exacte cache.

Verwante use cases

Probeer het op je eigen workload

HotKV spreekt het Redis-protocol, dus je kunt een bestaande client erop richten en dezelfde commando's uitvoeren.