AI 與 LLMLLM 應用程式

快取式 LLM 閘道

將您的 OpenAI 或 Anthropic SDK 指向同一個 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 位於您的應用程式與 LLM API 之間。只要更改 SDK 的 base URL,相同的請求就會由 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 服務,只要更改一個 base 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 會追蹤節省的 Token。語意快取則一律需要授權。

兩位客戶會看到彼此的回答嗎?

不會。快取鍵包含呼叫者的憑證,因此每個 API 金鑰都有自己的快取,除非您在閘道中只保留單一上游金鑰,或以 --scope global 啟動它。

它支援哪些供應商?

OpenAI、Azure OpenAI、OpenRouter、vLLM、Ollama、LiteLLM,以及任何支援 OpenAI API 的服務,另外也支援 Anthropic 的 Messages API(搭配精確快取)。

相關使用情境

在您自己的工作負載上試試看

HotKV 支援 Redis 協定,因此您可以將現有的用戶端指向它,並執行這些相同的指令。