IA e LLMApplicazioni LLM

Gateway LLM con cache

Punta il tuo SDK OpenAI o Anthropic a un solo URL e le richieste ripetute ricevono risposta da HotKV invece di essere pagate di nuovo. Nessuna modifica al codice.

riga di codice da cambiare
1
binario statico
~6 MB
open source
Apache-2.0
Passo 1 di 5
Avvia il gateway

Un solo binario o container davanti al provider. Viene inoltrata la chiave API del chiamante, quindi il gateway non ne ha bisogno.

Sessione di esempioplaying
# Avvia il 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)

Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.

Il problema

La maggior parte del traffico LLM si ripete. Lo stesso prompt di sistema e la stessa domanda arrivano ancora e ancora da utenti diversi, retry ed esecuzioni di test, e ognuno viene fatturato. Aggiungere una cache dentro ogni servizio, in ogni linguaggio che usi, è lento e facile da sbagliare.

Come lo gestisce HotKV

hotkv-gateway si colloca tra la tua applicazione e l'API LLM. Cambia il base URL dell'SDK e le richieste identiche vengono servite da HotKV, le risposte in streaming vengono riprodotte come stream, le domande riformulate possono essere servite per significato e le richieste identiche in corso condividono una sola chiamata upstream. Se HotKV è lento o non disponibile, le richieste vanno direttamente al provider.

Passo dopo passo

Cosa succede, comando per comando

  1. 01

    Avvia il gateway

    Un solo binario o container davanti al provider. Viene inoltrata la chiave API del chiamante, quindi il gateway non ne ha bisogno.

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

    Prima richiesta, un miss

    Ancora niente in cache. La richiesta va upstream una volta e la risposta 200 completa viene salvata.

    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 stessa richiesta, un hit

    Una richiesta identica, anche con le chiavi in un ordine diverso, riceve risposta da HotKV e non arriva mai al 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

    Una domanda riformulata

    Con la cache semantica attiva, una domanda a turno singolo formulata in modo diverso può essere servita con la risposta a una domanda simile.

    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 raffica di richieste identiche

    Tre richieste identiche arrivano mentre la prima è ancora in corso. Condividono una sola chiamata 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
Dove si usa

Scenari reali

Valutazioni ed esecuzioni CI

Le suite di test e le valutazioni dei prompt inviano le stesse richieste a ogni esecuzione. Dietro il gateway, costano qualcosa solo i prompt modificati.

Piattaforme poliglotte

Un backend Python, un worker Node.js e un servizio Go ottengono tutti la stessa cache cambiando un solo base URL, senza una libreria per ogni linguaggio.

Modelli self-hosted

Davanti a vLLM o Ollama il gateway fa risparmiare tempo di GPU invece di costi API, perché i prompt ripetuti non arrivano mai al server del modello.

Integrato

Cosa ottieni

Cache esatta e semantica

Le richieste identiche di chat, completion ed embedding vengono messe in cache, e le domande di chat a turno singolo possono anche corrispondere per significato (--semantic).

Replay dello streaming

Le risposte in streaming vengono catturate e riprodotte come stream, così i client si comportano esattamente come prima.

Sicuro per impostazione predefinita

Ogni chiave API ha la propria cache. Errori e risposte filtrate non vengono mai salvati, e le richieste possono saltare la cache con un header.

Mai d'intralcio

Se HotKV è lento o non disponibile, le richieste vanno direttamente al provider. Il gateway espone anche i suoi numeri su /_hotkv/metrics.

L'unica modifica al tuo codice

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

Domande frequenti

Il gateway richiede una licenza HotKV?

No. Funziona con qualsiasi server HotKV. Con una licenza che include la cache dei prompt, le voci vivono in un namespace PCACHE e HotKV tiene traccia dei token risparmiati. La cache semantica richiede sempre una licenza.

Due clienti possono vedere le risposte l'uno dell'altro?

No. La chiave di cache include le credenziali del chiamante, quindi ogni chiave API ha la propria cache, a meno che tu non tenga una sola chiave upstream nel gateway o lo avvii con --scope global.

Con quali provider funziona?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM e qualsiasi altro servizio che parli l'API OpenAI, più la Messages API di Anthropic con la cache esatta.

Casi d'uso correlati

Provalo sul tuo carico di lavoro

HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.