Məzmuna keç
Prompt keşləmə

Prompt keşləmə

AVTOMATİK

Hosted open-weight modelləri təkrar prompt prefikslərini avtomatik keşləyir. Sorğu eyni modeldəki son sorğu ilə eyni sistem promptu, alətlər və əvvəlki mesajlarla başlayanda, həmin ortaq prefiks keşdən oxunur və modelin giriş qiymətinin 25%-i ilə hesablanır. Aktivləşdirməyə ehtiyac yoxdur və keş yazmaları pulsuzdur.

Necə işləyir

  • Ardıcıllıqla prefiks — Prompt ardıcıllıqla oxunur: sistem promptu, alət təyinatları, sonra isə mesajlar. Keş, həmin ardıcıllığın başlanğıcından ilk fərqli tokenə qədər uyğunlaşır.
  • Nə hit sayılır — Promptu son sorğu ilə eyni məzmunla başlayan sorğu — adətən yeni mesajlar əlavə edilmiş eyni söhbətin əvvəlki növbəsi. Uyğun gələn prefiks keşlənmiş girişdir; ondan sonrakı hər şey adi girişdir.
  • Kəmiyyət (Granularity) — Keş promptu 1,568 tokenlik bloklarla saxlayır, buna görə təxminən 1,500 tokendən qısa prompt keşlənmir. Cavabdakı keşlənmiş say sizin giriş sayınızın promptun keşlənmiş payına vurulub aşağı yuvarlaqlaşdırılmış dəyəridir. O, mütləq blok ölçüsünün misli deyil.
  • Hit olmadıqda — Başlanğıcı keşdə olmayan sorğu adi giriş tarifi ilə hesablanır. Keşlənmiş promptlar üçün ömür müddəti dərc olunmur və hit zəmanət verilmir: sorğunun keşdən nə götürdüyünü görmək üçün usage sahəsini oxuyun.
  • Açar yoxdur — Sorğu qoşulmur və heç bir sahə keşləməni söndürmür.
  • Hansı modellər — Hər bir hosted open-weight id. GET /v1/models onlarda capabilities.prompt_caching: true və pricing.cached_input_per_million_usd göstəricilərini qaytarır. Shannon modelləri isə vahid tariflə hesablanır.

Cavabda keş hit-ini görmək

Eyni uzun system prompt ilə başlayan iki sorğu göndərin və hər birinin istifadə məlumatını çap edin. Birinci rəqəm sorğunun girişi, ikincisi onun keşdən oxunan hissəsidir.

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

Qiymətləndirmə

Keşlənmiş giriş tokenləri modelin giriş tarifinin 25%-i ilə, 1M üçün $0.001-ə yuvarlaqlaşdırılaraq hesablanır. Keşə yazmaq əlavə xərc tələb etmir və çıxış adi qaydada hesablanır. Hər bir id-nin keş tarifi 'Modellər və qiymətləndirmə' cədvəlindədir. Modellər və qiymətlər

Çağırışın girişi (giriş − keşlənmiş) × giriş tarifi + keşlənmiş × keşlənmiş tarif kimi hesablanır. Keşlənmiş say heç vaxt giriş sayından böyük olmur.

Model Giriş / 1M Keşlənmiş 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

İstifadə jurnalı hər çağırışın keşlənmiş girişini göstərir. Onun hesablanmış tokenləri və xərci keşlənmiş tarifi artıq özündə ehtiva edir. Keys & usage

İstifadə sahələri

Endpoint Keşlənmiş giriş Məntiq (Reasoning)
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — prompt_tokens-un hissəsi usage.completion_tokens_details.reasoning_tokens — completion_tokens-un hissəsi
/v1/responses usage.input_tokens_details.cached_tokens — input_tokens-un hissəsi usage.output_tokens_details.reasoning_tokens — output_tokens-un hissəsi
/v1/messages usage.cache_read_input_tokens — ayrıca bildirilir: input_tokens keşlənməmiş hissədir; cache_creation_input_tokens həmişə 0-dır düşünmə (thinking) output_tokens-da 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
    }
  }
}

Axınla gələn cavab eyni sahələri yekun istifadə məlumatında daşıyır. Bunu istəməyə ehtiyac yoxdur:

Endpoint İstifadə məlumatının gəldiyi yer
/v1/chat/completions data: [DONE] xəttindən əvvəlki son chunk-da usage. Hər axında göndərilir.
/v1/responses response.completed hadisəsinin response.usage sahəsi.
/v1/messages message_delta hadisəsinin usage sahəsi. message_start hadisəsinin usage sahəsində sıfırlar olur.

Daha çox keş hit-ləri əldə etmək

  • Sistem promptunu və alət təyinatlarını çağırışlar boyunca bayt-bayt sabit saxlayın. Zaman möhürləri və ya sorğu id-ləri kimi hər çağırışa aid dəyərləri sistem promptuna deyil, son mesajın sonuna yerləşdirin.
  • Tarixçəyə yalnız əlavə etmə (append) aparın. Əvvəlki növbələri redaktə etmək, kəsmək və ya xülasə etmək prefiksi dəyişir və ilk dəyişiklikdən sonrakı hər şey adi giriş kimi hesablanır.
  • Çağırışlar arasında alətlərin, mesajların və ya məzmun bloklarının sırasını dəyişməyin və JSON-u (alət sxemaları, alət arqumentləri və nəticələri) hər dəfə eyni şəkildə seriyallaşdırın.
  • Söhbət boyu bir model id-sində qalın və növbəti çağırışı əvvəlkindən az sonra göndərin.

API söhbətin başlanğıcını bu hallarda sabit saxlayır:

  • Söhbətdə sonradan göndərilən system və ya developer mesajı öz yerində qalır. O, promptun başlanğıcını dəyişmir, buna görə ondan əvvəlki növbələr keşlənmiş qalır.
  • Əvvəlki assistant növbələrindəki alət çağırışlarının arqumentləri dəyərə görə müqayisə olunur. Həmin JSON-un açar sırası və boşluqları əhəmiyyət daşımır.
  • Üç endpoint söhbəti eyni cür oxuyur. Başqa endpoint-də davam etdirilən söhbət məzmun eyni olduqda ümumi prefiksini saxlayır.

Sorğu sahələri

prompt_cache_key (Chat Completions və Responses) və Messages kontent bloklarında cache_control qəbul edilir, beləliklə mövcud klient kodu dəyişmədən işləyir. Heç biri tələb olunmur: keşləmə avtomatikdir və onlar olmadan da eyni şəkildə işləyir.

Sahə Göndərilən yer Nə olduğu
prompt_cache_key /v1/chat/completions, /v1/responses OpenAI API-nin keş marşrutlaşdırma açarı.
cache_control /v1/messages Anthropic API-nin məzmun blokunda, system blokunda və ya mesajda keş kəsmə nöqtəsi.
stream_options /v1/chat/completions include_usage OpenAI API-dən axında istifadə məlumatını istəyir. Burada hər axın istifadə məlumatı ilə bitir.

Tokenlərin sayılması

İki pulsuz endpoint, POST /v1/tokenize və POST /v1/messages/count_tokens, host edilmiş açıq çəkili modellər üçün mətnin və ya bütöv sorğunun tokenlərini onu göndərməzdən əvvəl sayır. Onların ayrıca səhifəsi var: Tokenlərin sayılması