ШІ та LLMLLM-застосунки

Кешувальний шлюз LLM

Вкажіть своєму SDK OpenAI або Anthropic один URL, і повторні запити обслуговуватиме HotKV, а не оплачуватимуться знову. Без змін у коді.

рядок коду для зміни
1
статичний виконуваний файл
~6 MB
відкритий код
Apache-2.0
Крок 1 з 5
Запустіть шлюз

Один виконуваний файл або контейнер перед провайдером. Власний API-ключ викликальника пересилається далі, тож шлюзу ключ не потрібен.

Приклад сесіїplaying
# Запустіть шлюз
$ 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)

Анімований покроковий розбір з реальними командами HotKV і прикладами відповідей. Натисніть будь-який крок, щоб перейти до нього. Команди та відповіді залишаються англійською, так само, як ви вводите й бачите їх у HotKV.

Проблема

Більшість трафіку LLM повторюється. Той самий системний промпт і те саме запитання надходять знову і знову від різних користувачів, повторних спроб і тестових запусків, і кожен із них тарифікується. Додавати кеш у кожен сервіс, у кожній використовуваній вами мові, повільно й легко зробити неправильно.

Як це вирішує HotKV

hotkv-gateway стоїть між вашим застосунком і API LLM. Змініть базовий URL SDK, і однакові запити віддаватиме HotKV, потокові відповіді відтворюватимуться як потоки, переформульовані запитання можна обслуговувати за змістом, а однакові запити, що виконуються одночасно, ділитимуть один виклик до провайдера. Якщо HotKV повільний або недоступний, запити йдуть прямо до провайдера.

Крок за кроком

Що відбувається, команда за командою

  1. 01

    Запустіть шлюз

    Один виконуваний файл або контейнер перед провайдером. Власний API-ключ викликальника пересилається далі, тож шлюзу ключ не потрібен.

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

    Перший запит, промах

    Нічого ще не закешовано. Запит іде до провайдера один раз, а завершена відповідь 200 зберігається.

    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

    Той самий запит, влучання

    Однаковий запит, навіть із ключами в іншому порядку, обслуговується з HotKV і ніколи не доходить до провайдера.

    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

    Переформульоване запитання

    З увімкненим семантичним кешем запитання з іншим формулюванням в один хід може бути обслужене відповіддю на схоже.

    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

    Сплеск однакових запитів

    Три однакові запити надходять, поки перший ще виконується. Вони ділять один виклик до провайдера.

    for i in 1 2 3; do curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -d @new.json & done
Де це доречно

Реальні сценарії

Запуски оцінювання та CI

Набори тестів і оцінювання промптів надсилають ті самі запити під час кожного запуску. За шлюзом коштують лише змінені промпти.

Багатомовні платформи

Бекенд на Python, воркер на Node.js і сервіс на Go отримують один і той самий кеш, змінивши один базовий URL, без бібліотеки в кожній мові.

Моделі на власних серверах

Перед vLLM або Ollama шлюз заощаджує час GPU замість оплати API, бо повторні промпти ніколи не доходять до сервера моделі.

Вбудовано

Що ви отримуєте

Точний і семантичний кеш

Однакові запити чату, завершення та ембедингів кешуються, а запитання чату в один хід також можуть збігатися за змістом (--semantic).

Відтворення потоку

Потокові відповіді перехоплюються й відтворюються як потік, тож клієнти поводяться так само, як і раніше.

Безпечно за замовчуванням

Кожен ключ API має власний кеш. Помилки й відфільтровані відповіді ніколи не зберігаються, а запити можуть оминати кеш через заголовок.

Ніколи не заважає

Якщо HotKV повільний або недоступний, запити йдуть прямо до провайдера. Шлюз також віддає свої числа на /_hotkv/metrics.

Єдина зміна у вашому коді

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

Поширені запитання

Чи потрібна шлюзу ліцензія HotKV?

Ні. Він працює на будь-якому сервері HotKV. З ліцензією, що включає кеш промптів, записи зберігаються в просторі імен PCACHE, а HotKV відстежує заощаджені токени. Семантичний кеш завжди потребує ліцензії.

Чи можуть двоє клієнтів бачити відповіді один одного?

Ні. Ключ кешу включає облікові дані викликальника, тож кожен ключ API має власний кеш, якщо тільки ви не тримаєте в шлюзі один ключ провайдера або не запускаєте його з --scope global.

З якими провайдерами це працює?

OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM та будь-який інший, що розмовляє API OpenAI, а також Messages API від Anthropic з точним кешем.

Пов'язані сценарії використання

Спробуйте на власному навантаженні

HotKV розмовляє протоколом Redis, тож ви можете направити на нього наявний клієнт і виконувати ті самі команди.