IA et LLMApplications LLM

Passerelle LLM avec cache

Pointez votre SDK OpenAI ou Anthropic vers une seule URL, et les requêtes répétées sont servies par HotKV au lieu d'être payées une nouvelle fois. Aucune modification de code.

ligne de code à modifier
1
binaire statique
~6 MB
open source
Apache-2.0
Étape 1 sur 5
Démarrer la passerelle

Un binaire ou un conteneur devant le fournisseur. La clé d'API de l'appelant est transmise, la passerelle n'en a donc besoin d'aucune.

Session d’exempleplaying
# Démarrer la passerelle
$ 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)

Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.

Le problème

La plupart du trafic LLM se répète. Le même prompt système et la même question reviennent sans cesse, de la part d'utilisateurs différents, de nouvelles tentatives et d'exécutions de tests, et chacun est facturé. Ajouter un cache dans chaque service, dans chaque langage que vous utilisez, est long et facile à mal faire.

Comment HotKV s'en charge

hotkv-gateway se place entre votre application et l'API LLM. Changez l'URL de base du SDK, et les requêtes identiques sont servies par HotKV, les réponses en streaming sont rejouées en streaming, les questions reformulées peuvent être servies par leur sens et les requêtes identiques en cours partagent un seul appel en amont. Si HotKV est lent ou indisponible, les requêtes vont directement au fournisseur.

Étape par étape

Ce qui se passe, commande par commande

  1. 01

    Démarrer la passerelle

    Un binaire ou un conteneur devant le fournisseur. La clé d'API de l'appelant est transmise, la passerelle n'en a donc besoin d'aucune.

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

    Première requête, un échec

    Rien n'est encore en cache. La requête part une fois en amont, et la réponse 200 complète est enregistrée.

    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

    La même requête, un succès

    Une requête identique, même avec des clés dans un ordre différent, reçoit sa réponse de HotKV et n'atteint jamais le fournisseur.

    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

    Une question reformulée

    Avec le cache sémantique activé, une question à un seul tour formulée autrement peut être servie par la réponse à une question proche.

    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

    Une rafale de requêtes identiques

    Trois requêtes identiques arrivent pendant que la première est encore en cours. Elles partagent un seul appel en amont.

    for i in 1 2 3; do curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -d @new.json & done
Où cela s'applique

Scénarios concrets

Évaluations et CI

Les suites de tests et les évaluations de prompts envoient les mêmes requêtes à chaque exécution. Derrière la passerelle, seuls les prompts modifiés coûtent quelque chose.

Plateformes polyglottes

Un backend Python, un worker Node.js et un service Go profitent tous du même cache en changeant une seule URL de base, sans bibliothèque dans chaque langage.

Modèles auto-hébergés

Devant vLLM ou Ollama, la passerelle économise du temps GPU plutôt que des frais d'API, car les prompts répétés n'atteignent jamais le serveur de modèles.

Intégré

Ce que vous obtenez

Cache exact et sémantique

Les requêtes de chat, de complétion et d'embeddings identiques sont mises en cache, et les questions de chat à un seul tour peuvent aussi correspondre par leur sens (--semantic).

Rejeu des streams

Les réponses en streaming sont capturées et rejouées en streaming, si bien que les clients se comportent exactement comme avant.

Sûre par défaut

Chaque clé d'API a son propre cache. Les erreurs et les réponses filtrées ne sont jamais enregistrées, et une requête peut contourner le cache grâce à un en-tête.

Jamais un obstacle

Si HotKV est lent ou indisponible, les requêtes vont directement au fournisseur. La passerelle publie aussi ses chiffres sur /_hotkv/metrics.

La seule modification dans votre 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")

Questions fréquentes

La passerelle a-t-elle besoin d'une licence HotKV ?

Non. Elle fonctionne avec n'importe quel serveur HotKV. Avec une licence qui inclut le cache de prompts, les entrées vivent dans un namespace PCACHE et HotKV suit les tokens économisés. Le cache sémantique nécessite toujours une licence.

Deux clients peuvent-ils voir les réponses l'un de l'autre ?

Non. La clé de cache inclut les identifiants de l'appelant, chaque clé d'API a donc son propre cache, sauf si vous conservez une seule clé amont dans la passerelle ou si vous la démarrez avec --scope global.

Avec quels fournisseurs fonctionne-t-elle ?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM et tout ce qui parle l'API OpenAI, ainsi que l'API Messages d'Anthropic avec le cache exact.

Cas d'usage associés

Essayez-le sur votre propre charge de travail

HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.