AI และ LLMแอปพลิเคชัน LLM

เกตเวย์ 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 ส่วนใหญ่ซ้ำกันเอง system prompt และคำถามเดิมเข้ามาซ้ำแล้วซ้ำเล่าจากผู้ใช้ต่างคน การลองใหม่ และการรันทดสอบ และทุกครั้งถูกเรียกเก็บเงิน การใส่แคชในทุกเซอร์วิสและทุกภาษาที่คุณใช้นั้นช้าและพลาดง่าย

HotKV จัดการอย่างไร

hotkv-gateway อยู่ระหว่างแอปพลิเคชันของคุณกับ API ของ LLM เปลี่ยน base 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

    คำถามที่เรียบเรียงใหม่

    เมื่อเปิด 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
  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 เพราะพรอมต์ที่ซ้ำไม่ไปถึงเซิร์ฟเวอร์โมเดลเลย

อยู่ในตัว

สิ่งที่คุณได้รับ

แคชแบบตรงกันทุกตัวอักษรและแบบเชิงความหมาย

คำขอ chat, completion และ embeddings ที่เหมือนกันถูกแคช และคำถามแชตเทิร์นเดียวยังจับคู่ด้วยความหมายได้ด้วย (--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-gateway on GitHubPCACHE.STATS

คำถามที่พบบ่อย

เกตเวย์ต้องใช้ไลเซนส์ HotKV ไหม

ไม่ต้อง ใช้ได้กับเซิร์ฟเวอร์ 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 แล้วรันคำสั่งเดียวกันนี้ได้