評価とCIの実行
テストスイートやプロンプト評価は、実行のたびに同じリクエストを送ります。ゲートウェイを通せば、費用がかかるのは変更したプロンプトだけです。
OpenAIやAnthropicのSDKを1つのURLに向けるだけで、繰り返しのリクエストには再び料金を払う代わりにHotKVから応答します。コードの変更は不要です。
プロバイダーの前に置くバイナリまたはコンテナは1つだけです。呼び出し元のAPIキーがそのまま転送されるため、ゲートウェイ自体にキーは不要です。
実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。
LLMのトラフィックの多くは繰り返しです。同じシステムプロンプトと質問が、さまざまなユーザー、リトライ、テスト実行から何度も届き、そのすべてに料金がかかります。使っているすべての言語で、すべてのサービスにキャッシュを組み込むのは時間がかかり、間違いも起きやすい作業です。
hotkv-gatewayは、アプリケーションとLLM APIの間に入ります。SDKのベースURLを変えるだけで、同一のリクエストはHotKVから応答され、ストリーミングの応答はストリームとして再生され、言い換えた質問には意味で応答でき、処理中の同一リクエストは1回の上流呼び出しを共有します。HotKVが遅いか停止している場合、リクエストはそのままプロバイダーに送られます。
プロバイダーの前に置くバイナリまたはコンテナは1つだけです。呼び出し元のAPIキーがそのまま転送されるため、ゲートウェイ自体にキーは不要です。
hotkv-gateway --upstream https://api.openai.com --semantic --embedding-model text-embedding-3-smallまだ何もキャッシュされていません。リクエストは一度だけ上流に送られ、完了した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同一のリクエストは、キーの順序が違っていても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セマンティックキャッシュを有効にすると、言い回しの異なる単発の質問にも、似た質問への回答で応答できます。
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最初のリクエストがまだ処理中のうちに、同一のリクエストが3件届きます。これらは1回の上流呼び出しを共有します。
for i in 1 2 3; do curl -si localhost:8080/v1/chat/completions -H "Authorization: Bearer $OPENAI_API_KEY" -d @new.json & doneテストスイートやプロンプト評価は、実行のたびに同じリクエストを送ります。ゲートウェイを通せば、費用がかかるのは変更したプロンプトだけです。
PythonのバックエンドもNode.jsのワーカーもGoのサービスも、ベースURLを1つ変えるだけで同じキャッシュを使えます。言語ごとのライブラリは不要です。
vLLMやOllamaの前に置けば、繰り返しのプロンプトがモデルサーバーに届かないため、APIの料金ではなくGPU時間を節約できます。
同一のchat、completion、embeddingsリクエストをキャッシュし、単発のチャットの質問は意味でも照合できます(--semantic)。
ストリーミングの応答を取り込んでストリームとして再生するため、クライアントはこれまでとまったく同じように動作します。
APIキーごとに独自のキャッシュを持ちます。エラーやフィルターされた回答は保存されず、ヘッダーでキャッシュを迂回することもできます。
HotKVが遅いか利用できない場合、リクエストはそのままプロバイダーに送られます。ゲートウェイは自身の数値を/_hotkv/metricsでも報告します。
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サーバーでも動作します。プロンプトキャッシュを含むライセンスがあれば、エントリーはPCACHEネームスペースに保存され、HotKVが節約したトークンを追跡します。セマンティックキャッシュには常にライセンスが必要です。
いいえ。キャッシュキーには呼び出し元の認証情報が含まれるため、APIキーごとに独自のキャッシュを持ちます。ただし、ゲートウェイで上流キーを1つだけ使う場合や、--scope globalで起動した場合は除きます。
OpenAI、Azure OpenAI、OpenRouter、vLLM、Ollama、LiteLLMなど、OpenAI APIに対応するものすべてに加え、完全一致キャッシュではAnthropicのMessages APIにも対応します。
HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。