Pereiti prie turinio
Užklausų kešavimas

Užklausų kešavimas

AUTOMATINIŠKAS

Hostingai open-weight modeliai automatiškai kešuoja pakartojamus užklausų prefiksus. Kai užklausa prasideda tuo patiu sisteminiu promptu, įrankiais ir ankstesnėmis žinutėmis kaip neseniai atlikta užklausa tame pačiame modeliui, šis bendras prefiksas skaitomas iš kešo ir apmokestinamas kaip 25% iš modelio įvesties kainos. Nereikia nieko įjungti, o įrašymas į kešą yra nemokamas.

Kaip tai veikia

  • Prefiksas, tvarkytai — Užklausa skaitoma tvarka: sisteminis promptas, įrankių apibrėžimai, tada žinutės. Kešas sutampa nuo šios sekvencijos pradžios iki pirmo skirto tokeno.
  • Kas laikoma „hit“ (atradimu) — Užklausa, kurios promptas prasideda tuo pačiu turiniu kaip neseniai atlikta užklausa — paprastai tai yra ankstesnė tos pačios konversacijos dalis, prie kurios pridėtos naujos žinutės. Sutapęs prefiksas yra kešuota įvestis; viskas po jo yra įprasta įvestis.
  • Granuliuotumas — Kešas laiko prompt 1,568 tokenų blokais, todėl trumpesnis nei maždaug 1,500 tokenų prompt nekešuojamas. Kešuotų tokenų skaičius atsakyme yra jūsų įvesties skaičius, padaugintas iš kešuotos prompt dalies ir suapvalintas žemyn. Jis nebūtinai dalijasi iš bloko dydžio.
  • Be pataikymo — Užklausa, kurios pradžios kešė nėra, apmokestinama įprastu įvesties įkainiu. Kešuotų prompt gyvavimo trukmė neskelbiama ir pataikymas negarantuojamas: skaitykite usage, kad pamatytumėte, ką užklausa paėmė iš kešo.
  • Jungiklio nėra — Užklausa nesirenka kešavimo ir joks laukas kešavimo neišjungia.
  • Kuriems modeliams — Kiekvienam hostingo open-weight id. GET /v1/models praneša capabilities.prompt_caching: true ir pricing.cached_input_per_million_usd. Shannon modeliai taiko vieną fiksuotą tarifą.

Kaip atsakyme matyti kešo pataikymą

Išsiųskite dvi užklausas, prasidedančias tuo pačiu ilgu sistemos nurodymu, ir išspausdinkite kiekvienos naudojimo duomenis. Pirmasis skaičius yra užklausos įvestis, antrasis yra jos dalis, nuskaityta iš kešo.

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

Kaina

Kešuoti įvesties tokenai apmokestinami kaip 25% iš modelio įvesties tarifο, suapvalintam iki $0.001 per 1M. Įrašymas į kešą nieko papildomai nekainuoja, o išvestis apmokestinama kaip įprasta. Kiekvieno id kešavimo tarifas nurodytas „Modeliai ir kainos“ lentelių. Modeliai ir kainos

Kreipinio įvestis apmokestinama pagal (įvestis − kešuota) × įvesties įkainis + kešuota × kešo įkainis. Kešuotų tokenų skaičius niekada nėra didesnis už įvesties skaičių.

Modelis Įvestis / 1M Kešuota įvestis / 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

Naudojimo žurnale nurodyta kiekvieno kreipinio kešuota įvestis. Jo apmokestinti tokenai ir kaina jau apima kešo įkainį. Raktai ir naudojimas

Naudojimo laukai

Galutinis taškas Kešuota įvestis Mąstymas
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — prompt_tokens dalis usage.completion_tokens_details.reasoning_tokens — completion_tokens dalis
/v1/responses usage.input_tokens_details.cached_tokens — input_tokens dalis usage.output_tokens_details.reasoning_tokens — output_tokens dalis
/v1/messages usage.cache_read_input_tokens — pranešama atskirai: input_tokens yra nekešuota dalis; cache_creation_input_tokens visada yra 0 mąstymas skaičiuojamas output_tokens
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

Srautu siunčiamas atsakymas tuos pačius laukus turi galutiniuose naudojimo duomenyse. Jų prašyti nereikia:

Galutinis taškas Kur ateina naudojimo duomenys
/v1/chat/completions usage paskutiniame gabale prieš data: [DONE]. Jis siunčiamas kiekviename sraute.
/v1/responses response.completed įvykio response.usage.
/v1/messages message_delta įvykio usage. message_start usage yra nuliai.

Kaip gauti daugiau kešavimo hitų

  • Saugokite, kad sisteminis promptas ir įrankių apibrėžimai būtų identiški (ikio byteArray) tarp užklausų. Kintamus reikšnius, pavyzdžiui, laiko žymas ar užklausų id, dėkite paskutinės žinutės pabaigai, o ne sisteminiame prompte.
  • Tik pridėkite duomenis prie istorijos. Redaguojant, trumpinant ar apibendrinant ankstesnes dalis keičiate prefiksą, ir viskas po pirmųjų pakeitimų apmokestinama kaip įprasta įvestis.
  • Nepakeikite įrankių, žinučių ar turinio blokų tvarkos tarp užklausų ir visada serializuokite JSON (įrankių schemų, argumentų ir rezultatų) vienodai.
  • Pokalbiui naudokite vieną modelio id ir tolesnį kreipinį siųskite netrukus po ankstesnio.

API išlaiko stabilią pokalbio pradžią šiais atvejais:

  • Vėliau pokalbyje išsiųsta system ar developer žinutė lieka savo vietoje. Ji nekeičia prompt pradžios, todėl prieš ją esantys ėjimai lieka kešuoti.
  • Ankstesnių assistant ėjimų įrankių kreipinių argumentai lyginami pagal reikšmę. To JSON raktų tvarka ir tarpai nesvarbūs.
  • Trys galiniai taškai pokalbį skaito vienodai. Pokalbis, tęsiamas kitame galiniame taške, išsaugo bendrą prefiksą, jei turinys tas pats.

Užklauso laukai

Priimami prompt_cache_key (Chat Completions ir Responses) bei cache_control Messages turinio blokuose, todėl esamasis kliento kodas veikia be pakeitimų. Nėra būtina naudoti abu: gredavimas yra automatinis ir veikia taip pat ir be jų.

Laukas Siunčiama į Kas tai
prompt_cache_key /v1/chat/completions, /v1/responses OpenAI API kešo maršrutizavimo raktas.
cache_control /v1/messages Anthropic API kešo lūžio taškas turinio bloke, system bloke ar žinutėje.
stream_options /v1/chat/completions include_usage prašo OpenAI API pateikti naudojimo duomenis srautui. Čia kiekvienas srautas baigiasi naudojimo duomenimis.

Tokenų skaičiavimas

Du nemokami galiniai taškai, POST /v1/tokenize ir POST /v1/messages/count_tokens, prieš siunčiant suskaičiuoja teksto ar visos užklausos tokenus talpinamiems atvirų svorių modeliams. Jie turi savo puslapį: Tokenų skaičiavimas