IA y LLMAplicaciones LLM

Gateway de LLM con caché

Apunta tu SDK de OpenAI o Anthropic a una URL y HotKV responde las solicitudes repetidas en lugar de que las pagues otra vez. Sin cambios de código.

línea de código que cambiar
1
binario estático
~6 MB
código abierto
Apache-2.0
Paso 1 de 5
Arranca el gateway

Un binario o contenedor delante del proveedor. Se reenvía la propia clave de API de quien llama, así que el gateway no necesita ninguna.

Sesión de ejemploplaying
# Arranca el gateway
$ 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)

Un recorrido animado con comandos reales de HotKV y respuestas de ejemplo. Haz clic en cualquier paso para saltar a él. Los comandos y las respuestas se quedan en inglés, tal como los escribes y los ves en HotKV.

El problema

La mayor parte del tráfico de LLM se repite. El mismo prompt de sistema y la misma pregunta llegan una y otra vez desde distintos usuarios, reintentos y ejecuciones de pruebas, y cada una se factura. Añadir una caché dentro de cada servicio, en cada lenguaje que usas, es lento y fácil de hacer mal.

Cómo lo resuelve HotKV

hotkv-gateway se sitúa entre tu aplicación y la API del LLM. Cambia la URL base del SDK y las solicitudes idénticas se sirven desde HotKV, las respuestas en streaming se reproducen como streams, las preguntas reformuladas pueden servirse por su significado y las solicitudes idénticas en curso comparten una sola llamada al proveedor. Si HotKV va lento o está caído, las solicitudes van directamente al proveedor.

Paso a paso

Qué ocurre, comando a comando

  1. 01

    Arranca el gateway

    Un binario o contenedor delante del proveedor. Se reenvía la propia clave de API de quien llama, así que el gateway no necesita ninguna.

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

    Primera solicitud, un fallo

    Todavía no hay nada en caché. La solicitud va al proveedor una vez y se guarda la respuesta 200 completa.

    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 misma solicitud, un acierto

    Una solicitud idéntica, incluso con las claves en otro orden, se responde desde HotKV y nunca llega al proveedor.

    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

    Una pregunta reformulada

    Con la caché semántica activada, una pregunta de un solo turno redactada de otra forma puede servirse con la respuesta a una similar.

    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

    Una ráfaga de solicitudes idénticas

    Llegan tres solicitudes idénticas mientras la primera sigue en curso. Comparten una sola llamada al proveedor.

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

Escenarios reales

Evaluaciones y ejecuciones de CI

Las suites de pruebas y las evaluaciones de prompts envían las mismas solicitudes en cada ejecución. Detrás del gateway, solo cuestan los prompts que cambian.

Plataformas políglotas

Un backend en Python, un worker en Node.js y un servicio en Go obtienen la misma caché cambiando una URL base, sin una librería en cada lenguaje.

Modelos autoalojados

Delante de vLLM u Ollama, el gateway ahorra tiempo de GPU en lugar de tarifas de API, porque los prompts repetidos nunca llegan al servidor del modelo.

Integrado

Qué obtienes

Caché exacta y semántica

Las solicitudes idénticas de chat, completion y embeddings se guardan en caché, y las preguntas de chat de un solo turno también pueden coincidir por significado (--semantic).

Repetición de streaming

Las respuestas en streaming se capturan y se reproducen como stream, así que los clientes se comportan exactamente igual que antes.

Seguro por defecto

Cada clave de API tiene su propia caché. Los errores y las respuestas filtradas nunca se guardan, y las solicitudes pueden saltarse la caché con una cabecera.

Nunca estorba

Si HotKV va lento o no está disponible, las solicitudes van directamente al proveedor. El gateway también publica sus métricas en /_hotkv/metrics.

El único cambio en tu código

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

Preguntas frecuentes

¿El gateway necesita una licencia de HotKV?

No. Funciona con cualquier servidor HotKV. Con una licencia que incluya la caché de prompts, las entradas viven en un namespace PCACHE y HotKV contabiliza los tokens ahorrados. La caché semántica siempre necesita licencia.

¿Pueden dos clientes ver las respuestas del otro?

No. La clave de caché incluye las credenciales de quien llama, así que cada clave de API tiene su propia caché, salvo que mantengas una sola clave del proveedor en el gateway o lo arranques con --scope global.

¿Con qué proveedores funciona?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM y cualquier otro que hable la API de OpenAI, además de la Messages API de Anthropic con la caché exacta.

Casos de uso relacionados

Pruébalo con tu propia carga de trabajo

HotKV habla el protocolo de Redis, así que puedes apuntar un cliente que ya usas hacia él y ejecutar estos mismos comandos.