IA e LLMAplicações de LLM

Gateway de LLM com cache

Aponte seu SDK da OpenAI ou da Anthropic para uma URL e as requisições repetidas são respondidas pelo HotKV, em vez de serem pagas de novo. Sem mudanças no código.

linha de código para mudar
1
binário estático
~6 MB
open source
Apache-2.0
Etapa 1 de 5
Inicie o gateway

Um binário ou contêiner na frente do provedor. A própria chave de API de quem chama é repassada, então o gateway não precisa de nenhuma.

Sessão de exemploplaying
# Inicie o 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)

Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.

O problema

A maior parte do tráfego de LLM se repete. O mesmo prompt de sistema e a mesma pergunta chegam várias vezes, de usuários diferentes, de novas tentativas e de execuções de teste, e cada uma delas é cobrada. Adicionar um cache dentro de cada serviço, em cada linguagem que você usa, é lento e fácil de errar.

Como o HotKV resolve

O hotkv-gateway fica entre a sua aplicação e a API do LLM. Mude a URL base do SDK e as requisições idênticas são servidas pelo HotKV, as respostas em streaming são reproduzidas como streams, perguntas reformuladas podem ser atendidas pelo significado e requisições idênticas em andamento compartilham uma única chamada ao provedor. Se o HotKV estiver lento ou fora do ar, as requisições vão direto para o provedor.

Passo a passo

O que acontece, comando por comando

  1. 01

    Inicie o gateway

    Um binário ou contêiner na frente do provedor. A própria chave de API de quem chama é repassada, então o gateway não precisa de nenhuma.

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

    Primeira requisição, um miss

    Nada em cache ainda. A requisição vai ao provedor uma vez, e a resposta 200 completa é armazenada.

    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

    A mesma requisição, um acerto

    Uma requisição idêntica, mesmo com as chaves em outra ordem, é respondida pelo HotKV e nunca chega ao provedor.

    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

    Uma pergunta reformulada

    Com o cache semântico ativado, uma pergunta de turno único escrita de outro jeito pode ser atendida pela resposta a uma pergunta parecida.

    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

    Uma rajada de requisições idênticas

    Três requisições idênticas chegam enquanto a primeira ainda está em andamento. Elas compartilham uma única chamada ao provedor.

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

Cenários reais

Avaliações e execuções de CI

Suítes de teste e avaliações de prompts enviam as mesmas requisições a cada execução. Atrás do gateway, só os prompts alterados custam alguma coisa.

Plataformas poliglotas

Um backend em Python, um worker em Node.js e um serviço em Go recebem o mesmo cache mudando uma URL base, sem uma biblioteca em cada linguagem.

Modelos auto-hospedados

Na frente do vLLM ou do Ollama, o gateway economiza tempo de GPU em vez de tarifas de API, porque os prompts repetidos nunca chegam ao servidor do modelo.

Integrado

O que você ganha

Cache exato e semântico

Requisições idênticas de chat, completion e embeddings ficam em cache, e perguntas de chat de turno único também podem ser reconhecidas pelo significado (--semantic).

Replay de streaming

As respostas em streaming são capturadas e reproduzidas como stream, então os clientes se comportam exatamente como antes.

Seguro por padrão

Cada chave de API tem o próprio cache. Erros e respostas filtradas nunca são armazenados, e as requisições podem ignorar o cache com um header.

Nunca atrapalha

Se o HotKV estiver lento ou indisponível, as requisições vão direto para o provedor. O gateway também publica os seus números em /_hotkv/metrics.

A única mudança no seu 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")

Perguntas frequentes

O gateway precisa de uma licença do HotKV?

Não. Ele funciona com qualquer servidor HotKV. Com uma licença que inclua o cache de prompts, as entradas ficam em um namespace PCACHE e o HotKV registra os tokens economizados. O cache semântico sempre exige uma licença.

Dois clientes podem ver as respostas um do outro?

Não. A chave do cache inclui as credenciais de quem chama, então cada chave de API tem o próprio cache, a menos que você mantenha uma única chave do provedor no gateway ou o inicie com --scope global.

Com quais provedores ele funciona?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM e qualquer outro que fale a API da OpenAI, além da Messages API da Anthropic com o cache exato.

Casos de uso relacionados

Experimente com a sua própria carga de trabalho

O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.