İçeriğe geç
İstem önbelleğe alma

İstem önbelleğe alma

OTOMATİK

Barındırılan açık ağırlıklı modeller, tekrarlanan istem önköklerini otomatik olarak önbelleğe alır. Bir istek, aynı modeldeki yakın tarihli bir istekle aynı sistem istemi, araçlar ve önceki mesajlarla başladığında, bu paylaşılan önkök önbellekten okunur ve modelin giriş fiyatının %25'i üzerinden faturalandırılır. Etkinleştirilecek bir şey yoktur ve önbellek yazımları ücretsizdir.

Nasıl çalışır

  • Sıralı önkök — İstem sırayla okunur: sistem istemi, araç tanımları ve ardından mesajlar. Önbellek, bu dizinin başından farklı olan ilk token'a kadar eşleşir.
  • Ne hit sayılır — İstemi, yakın tarihli bir istekle aynı içerikle başlayan bir istek — genellikle yeni mesajlar eklenmiş aynı konuşmanın önceki turu. Eşleşen önkök önbelleğe alınmış giriştir; sonrasındaki her şey normal giriştir.
  • Granülarite — Önbellek bir istemi 1,568 token'lık bloklar halinde tutar, bu yüzden yaklaşık 1,500 token'dan kısa bir istem önbelleğe alınmaz. Bir yanıttaki önbellek sayısı, giriş sayınızın istemin önbellekteki payıyla çarpılıp aşağı yuvarlanmasıdır. Blok boyutunun katı olması gerekmez.
  • Hit olmadan — Başlangıcı önbellekte olmayan bir istek normal giriş fiyatıyla faturalandırılır. Önbelleğe alınmış istemler için bir ömür yayımlanmaz ve hit garanti edilmez: bir isteğin önbellekten ne aldığını görmek için usage alanını okuyun.
  • Anahtar yok — Bir istek bu özelliğe katılmaz ve hiçbir alan önbelleğe almayı kapatmaz.
  • Hangi modeller — Her barındırılan açık ağırlıklı ID. GET /v1/models, onlar için capabilities.prompt_caching: true ve pricing.cached_input_per_million_usd değerlerini bildirir. Shannon modelleri tek bir sabit oranla faturalandırılır.

Bir yanıtta önbellek hiti görün

Aynı uzun sistem istemiyle başlayan iki istek gönderin ve her birinin kullanım bilgisini yazdırın. İlk sayı isteğin girdisidir, ikincisi bunun önbellekten okunan kısmıdır.

from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")

handbook = open("handbook.txt").read()  # a long text that stays the same


def ask(question):
    response = client.chat.completions.create(
        model="Kimi-K3-3BIT-REAP",
        messages=[
            {"role": "system", "content": handbook},
            {"role": "user", "content": question},
        ],
    )
    usage = response.usage
    print(usage.prompt_tokens, usage.prompt_tokens_details.cached_tokens)


ask("What is the refund policy?")
ask("Who approves travel?")  # same start: read the second number

Fiyatlandırma

Önbelleğe alınmış giriş tokenları, modelin giriş oranının %25'i üzerinden, 1M başına $0.001'e yuvarlanarak faturalandırılır. Önbelleğe yazmak ekstra bir maliyet getirmez ve çıkış her zamanki gibi faturalandırılır. Her ID'nin önbellek oranı Modeller ve fiyatlandırma tablosundadır. Modeller ve fiyatlandırma

Bir çağrının girdisi (giriş − önbellek) × giriş fiyatı + önbellek × önbellek fiyatı olarak ücretlendirilir. Önbellek sayısı hiçbir zaman giriş sayısından büyük olmaz.

Model Giriş / 1M Önbelleğe alınmış giriş / 1M
DeepSeek-V4-Pro-0813-3BIT-REAP $1.95 $0.488
GLM-5.2-3BIT-REAP $0.73 $0.183
Kimi-K3-3BIT-REAP $3.83 $0.958
Nemotron3Ultra-3BIT-REAP $0.75 $0.188
MiniMax-M3-3BIT-REAP $0.50 $0.125
DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP $0.50 $0.125
Kimi-K2.6-W4A16-AUTOROUND-REAP $0.78 $0.195
Laguna-S-2.1-W4A16-AUTOROUND-REAP $0.50 $0.125
inkling-W4A16-AUTOROUND-REAP $1.42 $0.355
MiMo-V2.5-Pro-W8A16 $0.50 $0.125
MiMo-V2.5-W8A16 $0.50 $0.125
Hy3-W8A16 $0.50 $0.125

Kullanım günlüğü her çağrının önbelleğe alınmış girdisini listeler. Faturalandırılan token'lar ve maliyet önbellek fiyatını zaten içerir. Keys & usage

Kullanım alanları

Uç nokta Önbelleğe alınmış giriş Akıl yürütme
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — prompt_tokens'ın bir parçası usage.completion_tokens_details.reasoning_tokens — completion_tokens'ın bir parçası
/v1/responses usage.input_tokens_details.cached_tokens — input_tokens'ın bir parçası usage.output_tokens_details.reasoning_tokens — output_tokens'ın bir parçası
/v1/messages usage.cache_read_input_tokens — ayrı bildirilir: input_tokens önbelleğe alınmamış kısımdır; cache_creation_input_tokens her zaman 0'dır düşünme süreci output_tokens içinde sayılır
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

Akışlı bir yanıt son kullanım bilgisinde aynı alanları taşır. Bunu istemeniz gerekmez:

Uç nokta Kullanımın geldiği yer
/v1/chat/completions data: [DONE] öncesindeki son parçada usage. Her akışta gönderilir.
/v1/responses response.completed olayının response.usage alanı.
/v1/messages message_delta olayının usage alanı. message_start olayının usage alanı sıfırlardan oluşur.

Daha fazla önbellek hiti alma

  • Sistem istemini ve araç tanımlarını çağrılar arasında bayt düzeyinde sabit tutun. Zaman damgaları veya istek ID'leri gibi çağrıya özel değerleri sistem istemine değil, en son mesajın sonuna ekleyin.
  • Geçmişe yalnızca ekleme yapın. Önceki turları düzenlemek, kırpmak veya özetlemek önkökü değiştirir ve ilk değişiklikten sonraki her şey normal giriş olarak faturalandırılır.
  • Çağrılar arasında araçların, mesajların veya içerik bloklarının sırasını değiştirmeyin ve JSON'ı (araç şemaları, araç bağımsız değişkenleri ve sonuçları) her seferinde aynı şekilde serileştirin.
  • Bir konuşma boyunca tek bir model kimliğinde kalın ve devam çağrısını bir öncekinden hemen sonra gönderin.

API, bir konuşmanın başlangıcını şu durumlarda kararlı tutar:

  • Bir konuşmada sonradan gönderilen system veya developer mesajı yerinde kalır. İstemin başlangıcını değiştirmez, bu yüzden ondan önceki turlar önbellekte kalır.
  • Önceki assistant turlarındaki araç çağrılarının bağımsız değişkenleri değere göre karşılaştırılır. O JSON'ın anahtar sırası ve boşlukları önemli değildir.
  • Üç uç nokta bir konuşmayı aynı şekilde okur. Başka bir uç noktada sürdürülen konuşma, içerik aynıysa ortak önekini korur.

İstek alanları

prompt_cache_key (Chat Completions ve Responses) ve Messages içerik bloklarındaki cache_control kabul edilir, böylece mevcut istemci kodu değişmeden çalışır. Hiçbiri zorunlu değildir: önbelleğe alma otomatiktir ve onlar olmadan da aynı şekilde çalışır.

Alan Gönderildiği yer Ne olduğu
prompt_cache_key /v1/chat/completions, /v1/responses OpenAI API'sinin bir önbellek yönlendirme anahtarı.
cache_control /v1/messages Anthropic API'sinin bir içerik bloğundaki, bir system bloğundaki veya bir mesajdaki önbellek kesme noktası.
stream_options /v1/chat/completions include_usage, OpenAI API'sinden bir akışta kullanım bilgisi ister. Burada her akış kullanım bilgisiyle biter.

Token sayımı

İki ücretsiz uç nokta, POST /v1/tokenize ve POST /v1/messages/count_tokens, bir metnin veya tüm bir isteğin token sayısını göndermeden önce host edilen açık ağırlıklı modeller için sayar. Bunların kendi sayfası var: Token sayma