Slaan oor na inhoud
Prompt-kassing

Prompt-kassing

C-AUTOMATIES

Die hosted open-weight models kas herhaalde prompt-prefikse outomaties. Wanneer 'n versoek begin met dieselfde stelsel-prompt, gereedskap en vorige boodskappe as 'n onlangse versoek op dieselfde model, word daardie gedeelde prefiks vanaf die kas gelees en gefaktureer teen 25% van die model se inset-prys. Daar is niks om te aktiveer nie, en kas-skryfwerk is gratis.

Hoe dit werk

  • Prefiks, in volgorde — Die prompt word in volgorde gelees: stelsel-prompt, gereedskap-definisies, en dan die boodskappe. Die kas pas vanaf die begin van daardie volgorde tot by die eerste token wat verskil.
  • Wat tel as 'n 'hit' — 'n Versoek waarvan die prompt begin met dieselfde inhoud as 'n onlangse versoek — tipies die vorige beurt van dieselfde gesprek met nuwe boodskappe bygevoeg. Die ooreenstemmende prefiks is gekasde inset; alles daarna is gewone inset.
  • Granulariteit — Die kas hou 'n prompt in blokke van 1,568 tokens, so 'n prompt korter as ongeveer 1,500 tokens word nie gekas nie. Die gekasde telling in 'n antwoord is jou insettelling vermenigvuldig met die gekasde deel van die prompt, afgerond na onder. Dit is nie noodwendig 'n veelvoud van die blokgrootte nie.
  • Sonder 'n hit — 'n Versoek waarvan die begin nie in die kas is nie, word teen die gewone insettarief gefaktureer. Geen leeftyd word vir gekasde prompts gepubliseer nie en 'n hit is nie gewaarborg nie: lees usage om te sien wat 'n versoek uit die kas geneem het.
  • Geen skakelaar — 'n Versoek kies nie in nie, en geen veld skakel kassing af nie.
  • Watter models — Elke hosted open-weight id. GET /v1/models rapporteer capabilities.prompt_caching: true en pricing.cached_input_per_million_usd vir hulle. Shannon models faktureer teen een vaste tarief.

Sien 'n kas-hit in 'n antwoord

Stuur twee versoeke wat met dieselfde lang stelselprompt begin en druk die gebruik van elk. Die eerste getal is die inset van die versoek, die tweede is die deel daarvan wat uit die kas gelees is.

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

Beprysing

Gekasde inset-tokens word gefaktureer teen 25% van die model se inset-tarief, afgerond na $0.001 per 1M. Om na die kas te skryf kos niks ekstra nie, en uitsette word soos gewoonlik gefaktureer. Elke id se gekasde tarief is in die Models & pricing tabel. Modelle en pryse

Die inset van 'n oproep word gehef as (inset − gekas) × insettarief + gekas × kastarief. Die gekasde telling is nooit groter as die insettelling nie.

Model Inset / 1M Gekasde inset / 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

Die gebruikslog lys die gekasde inset van elke oproep. Sy gefaktureerde tokens en koste sluit reeds die kastarief in. Sleutels en gebruik

Gebruik-velde

Eindpunt Gekasde inset Redenering
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — deel van prompt_tokens usage.completion_tokens_details.reasoning_tokens — deel van completion_tokens
/v1/responses usage.input_tokens_details.cached_tokens — deel van input_tokens usage.output_tokens_details.reasoning_tokens — deel van output_tokens
/v1/messages usage.cache_read_input_tokens — apart gerapporteer: input_tokens is die ongekasde deel; cache_creation_input_tokens is altyd 0 denkproses word getel in output_tokens
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

'n Gestroomde antwoord dra dieselfde velde in sy finale gebruik. Jy hoef nie daarvoor te vra nie:

Eindpunt Waar die gebruik aankom
/v1/chat/completions usage op die laaste brokkie voor data: [DONE]. Dit word op elke stroom gestuur.
/v1/responses response.usage van die response.completed-gebeurtenis.
/v1/messages usage van die message_delta-gebeurtenis. Die usage van message_start bevat nulle.

Kry meer kas-hits

  • Hou die stelsel-prompt en gereedskap-definisies byte-vir-byte stabiel oor oproepe heen. Plaas per-oproep waardes soos tydstempels of versoek-ids aan die einde van die nuutste boodskap, nie in die stelsel-prompt nie.
  • Voeg slegs by die geskiedenis. Om vorige beurte te redigeer, te sny of op te som verander die prefiks, en alles na die eerste verandering word as gewone inset gefaktureer.
  • Moenie gereedskap, boodskappe of inhoud-blokke tussen oproepe herrangel nie, en serialiseer JSON (gereedskap-skemas, argumente en resultate) elke keer op dieselfde manier.
  • Bly by een model-id vir 'n gesprek, en stuur die opvolgoproep kort ná die een voor dit.

Die API hou die begin van 'n gesprek in hierdie gevalle stabiel:

  • 'n system- of developer-boodskap wat later in 'n gesprek gestuur word, bly op sy plek. Dit verander nie die begin van die prompt nie, so die beurte daarvoor bly gekas.
  • Die argumente van gereedskapoproepe in vroeëre assistent-beurte word volgens waarde vergelyk. Sleutelvolgorde en spasiëring van daardie JSON maak nie saak nie.
  • Die drie eindpunte lees 'n gesprek op dieselfde manier. 'n Gesprek wat op 'n ander eindpunt voortgesit word, behou sy gedeelde prefiks wanneer die inhoud dieselfde is.

Versoekvelde

prompt_cache_key (Chat Completions en Responses) en cache_control op Messages-inhoudblokke word aanvaar, sodat bestaande kliëntkode onveranderd bly. Nie een is verplig nie: caching is outomaties en werk dieselfde sonder hulle.

Veld Gestuur na Wat dit is
prompt_cache_key /v1/chat/completions, /v1/responses 'n Kas-roeteringsleutel van die OpenAI API.
cache_control /v1/messages 'n Kas-breekpunt op 'n inhoudblok, 'n system-blok of 'n boodskap van die Anthropic API.
stream_options /v1/chat/completions include_usage vra die OpenAI API vir gebruik op 'n stroom. Hier eindig elke stroom met gebruik.

Tel van tokens

Twee gratis eindpunte, POST /v1/tokenize en POST /v1/messages/count_tokens, tel die tokens van 'n teks of van 'n hele versoek vir die gehuisveste oopgewig-modelle voordat jy dit stuur. Hulle het hul eie bladsy: Tokens tel