การรันประเมินผลและ CI
ชุดทดสอบและการประเมินพรอมต์ส่งคำขอเดิมทุกครั้งที่รัน เมื่ออยู่หลังเกตเวย์ มีเพียงพรอมต์ที่เปลี่ยนเท่านั้นที่มีค่าใช้จ่าย
ชี้ SDK ของ OpenAI หรือ Anthropic ไปที่ URL เดียว แล้วคำขอที่ซ้ำจะถูกตอบจาก HotKV แทนการจ่ายซ้ำ ไม่ต้องแก้โค้ด
ไบนารีหรือคอนเทนเนอร์หนึ่งตัวหน้าผู้ให้บริการ คีย์ API ของผู้เรียกถูกส่งต่อไป เกตเวย์จึงไม่ต้องใช้คีย์ของตัวเอง
ตัวอย่างแบบแอนิเมชันพร้อมคำสั่ง HotKV จริงและคำตอบตัวอย่าง คลิกขั้นตอนใดก็ได้เพื่อข้ามไปยังขั้นนั้น คำสั่งและคำตอบยังคงเป็นภาษาอังกฤษ ตรงตามที่คุณพิมพ์และเห็นใน HotKV
ทราฟฟิก LLM ส่วนใหญ่ซ้ำกันเอง system prompt และคำถามเดิมเข้ามาซ้ำแล้วซ้ำเล่าจากผู้ใช้ต่างคน การลองใหม่ และการรันทดสอบ และทุกครั้งถูกเรียกเก็บเงิน การใส่แคชในทุกเซอร์วิสและทุกภาษาที่คุณใช้นั้นช้าและพลาดง่าย
hotkv-gateway อยู่ระหว่างแอปพลิเคชันของคุณกับ API ของ LLM เปลี่ยน base URL ของ SDK แล้วคำขอที่เหมือนกันจะถูกเสิร์ฟจาก HotKV คำตอบแบบสตรีมถูกเล่นซ้ำเป็นสตรีม คำถามที่เรียบเรียงใหม่ตอบได้ด้วยความหมาย และคำขอที่เหมือนกันซึ่งกำลังประมวลผลอยู่จะใช้การเรียกต้นทางร่วมกันหนึ่งครั้ง หาก HotKV ช้าหรือล่ม คำขอจะไปที่ผู้ให้บริการโดยตรง
ไบนารีหรือคอนเทนเนอร์หนึ่งตัวหน้าผู้ให้บริการ คีย์ 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เมื่อเปิด semantic 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คำขอที่เหมือนกันสามคำขอเข้ามาขณะที่คำขอแรกยังประมวลผลอยู่ ทั้งหมดใช้การเรียกต้นทางร่วมกันหนึ่งครั้ง
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 ได้แคชเดียวกันทั้งหมดเพียงเปลี่ยน base URL เดียว โดยไม่ต้องมีไลบรารีในแต่ละภาษา
เมื่ออยู่หน้า vLLM หรือ Ollama เกตเวย์ประหยัดเวลา GPU แทนค่า API เพราะพรอมต์ที่ซ้ำไม่ไปถึงเซิร์ฟเวอร์โมเดลเลย
คำขอ 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 ใดก็ได้ หากมีไลเซนส์ที่รวม prompt cache รายการจะอยู่ใน namespace PCACHE และ HotKV ติดตามโทเค็นที่ประหยัดได้ ส่วน semantic cache ต้องใช้ไลเซนส์เสมอ
ไม่ได้ คีย์แคชรวมข้อมูลรับรองของผู้เรียก คีย์ API แต่ละตัวจึงมีแคชของตัวเอง เว้นแต่คุณเก็บคีย์ต้นทางเพียงตัวเดียวไว้ในเกตเวย์หรือเริ่มด้วย --scope global
OpenAI, Azure OpenAI, OpenRouter, vLLM, Ollama, LiteLLM และทุกอย่างที่ใช้ API ของ OpenAI รวมถึง Messages API ของ Anthropic พร้อมแคชแบบตรงกันทุกตัวอักษร
HotKV ใช้โปรโตคอลของ Redis คุณจึงชี้ไคลเอนต์ที่มีอยู่มาที่ HotKV แล้วรันคำสั่งเดียวกันนี้ได้