Salti al la enhavo
Prompt-kaŝado

Prompt-kaŝado

C-AUTOMATA

La gastigitaj malferma-pezaj modeloj aŭtomate kaŝas ripetitajn promptajn prefiksajn partojn. Kiam requesto komenciĝas per la sama sistem-prompto, iloj kaj antaŭaj mesaĝoj kielj dejara requesto en la sama modelo, tiu komuna prefikso estas legata el la kaŝo kaj fakturata je 25% de la eniga prezo de la modelo. aĉu nenion aktivi, kaj kaŝ-skribadoj estas senpaga.

Kiel ĝi funkcias

  • Prefikso, laŭ ordo — La prompto estas legata laŭ ordo: sistem-prompto, definioj de iloj, poste la mesaĝoj. La kaŝo kongruas de la komenco de tiu sekvenco ĝis la unua tokeno, kiu differencas.
  • Kio kalkulatas kiel trafo (hit) — Requesto, kies prompto komenciĝas per la sama enhavo kielj plej recenta requesto — kutime la antaŭa turno de la sama konversacio kun novaj mesaĝoj aldonitaj. La kongrua prefikso estas kashita enigo; ĉio post ĝi estas regula enigo.
  • Granulariteco — La kaŝmemoro tenas prompton en blokoj de 1,568 tokenoj, do prompto pli mallonga ol ĉirkaŭ 1,500 tokenoj ne estas kaŝmemorata. La kaŝmemorita nombro en respondo estas via enira nombro multiplikita per la kaŝmemorita parto de la prompto, rondigita malsupren. Ĝi ne nepre estas oblo de la bloka grandeco.
  • Sen trafo — Peto, kies komenco ne estas en la kaŝmemoro, estas fakturata laŭ la regula enira prezo. Neniu daŭro de vivo estas publikigita por kaŝmemoritaj promptoj kaj trafo ne estas garantiita: legu usage por vidi, kion peto prenis el la kaŝmemoro.
  • Neniu ŝaltilo — Peto ne aliĝas, kaj neniu kampo malŝaltas la kaŝmemoradon.
  • Kiuj modeloj — Ĉiu gastigita malferma-peza id-o. GET /v1/models raportas capabilities.prompt_caching: true kaj pricing.cached_input_per_million_usd por ili. Shannon-modeloj fakturas unu fiksan tarifon.

Vidi kaŝmemor-trafon en respondo

Sendu du petojn, kiuj komenciĝas per la sama longa system prompt, kaj presu la uzadon de ĉiu. La unua nombro estas la enigo de la peto, la dua estas la parto de ĝi legita el la kaŝmemoro.

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

Prezado

Kashitaj enig-tokenoj estas fakturataj je 25% de la eniga tarifo de la modelo, ĉirkaŭitaj al $0.001 per 1M. Skribado al la kaŝo kostas nenion plian, kaj eligo estas fakturata kiel kutime. La kashita tarifo de ĉiu id-o estas en la tablo Modeloj & prezado. Modeloj kaj prezoj

La enigo de voko estas kalkulata kiel (enigo − kaŝmemorita) × enira prezo + kaŝmemorita × kaŝmemorita prezo. La kaŝmemorita nombro neniam estas pli granda ol la enira nombro.

Modelo Enigo / 1M Kaŝmemorita enigo / 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

La uzada protokolo listigas la kaŝmemoritan enigon de ĉiu voko. Ĝiaj fakturitaj tokenoj kaj kosto jam inkluzivas la kaŝmemoritan prezon. Ŝlosiloj kaj uzado

Kampoj de uzado

Ĉuĵuŝpunkto Kashita enigo Raciumado
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — parto de prompt_tokens usage.completion_tokens_details.reasoning_tokens — parto de completion_tokens
/v1/responses usage.input_tokens_details.cached_tokens — parto de input_tokens usage.output_tokens_details.reasoning_tokens — parto de output_tokens
/v1/messages usage.cache_read_input_tokens — raportata aparte: input_tokens estas la ne-kashita parto; cache_creation_input_tokens ĉiam estas 0 pensado estas kalkulita en output_tokens
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

Fluata respondo portas la samajn kampojn en sia fina uzado. Vi ne devas peti ĝin:

Ĉuĵuŝpunkto Kie alvenas la uzado
/v1/chat/completions usage en la lasta peco antaŭ data: [DONE]. Ĝi estas sendata ĉe ĉiu fluo.
/v1/responses response.usage de la evento response.completed.
/v1/messages usage de la evento message_delta. La usage de message_start enhavas nulojn.

Kiel ricevi pli da kash-trafaj (hits)

  • Tenu la sistem-prompton kaj definiojn de iloj byte-por-byte stabilaj inter vokoj. Metu per-vokajn valorojn kiel tempo-stampojn aŭ request-id-ojn al la fino de la plej nova mesaĝo, ne en la sistem-prompto.
  • Nur aldonu al la historio. Redaktado, trogigado aŭ resumado de antaŭaj turnoj ŝanĝas la prefikson, kaj ĉio post la unua ŝanĝo estas fakturata kiel regula enigo.
  • Ne reordonu ilojn, mesaĝojn aŭ enhav-blokojn inter vokoj, kaj serializu JSON (ŝemoj de iloj, argumentoj de iloj kaj rezultoj) la saman manieron ĉajunfoje.
  • Restu ĉe unu modelo-id dum konversacio, kaj sendu la sekvan vokon baldaŭ post la antaŭa.

La API tenas la komencon de konversacio stabila en ĉi tiuj kazoj:

  • Mesaĝo system aŭ developer sendita pli poste en konversacio restas en sia loko. Ĝi ne ŝanĝas la komencon de la prompto, do la antaŭaj turnoj restas kaŝmemoritaj.
  • La argumentoj de ilovokoj en pli fruaj turnoj de assistant estas komparataj laŭ valoro. Ordo de ŝlosiloj kaj spacoj de tiu JSON ne gravas.
  • La tri endpoints legas konversacion same. Konversacio daŭrigita ĉe alia endpoint konservas sian komunan prefikson, se la enhavo estas la sama.

Kampoj de peto

prompt_cache_key (Chat Completions kaj Responses) kaj cache_control ĉe Messages enhavblokoj estas akceptataj, do ekzistanta klienta kodo funkcias sen ŝanĝoj. Neniu el ili estas necesa: kashigo estas aŭtomata kaj funkcias tielsame sen ili.

Kampo Sendita al Kio ĝi estas
prompt_cache_key /v1/chat/completions, /v1/responses Kaŝmemora vojiga ŝlosilo de la OpenAI API.
cache_control /v1/messages Kaŝmemora haltpunkto sur enhava bloko, bloko system aŭ mesaĝo de la Anthropic API.
stream_options /v1/chat/completions include_usage petas de la OpenAI API uzadon en fluo. Ĉi tie ĉiu fluo finiĝas per uzado.

Kalkumado de tokens

Du senpagaj endpoints, POST /v1/tokenize kaj POST /v1/messages/count_tokens, kalkulas la tokenojn de teksto aŭ de tuta peto por la gastigitaj malfermpezaj modeloj antaŭ ol vi sendas ĝin. Ili havas sian propran paĝon: Kalkulado de tokenoj