Prompt-geymsla
SJÁLVIRKNINGHosted open-weight líkön cache-a endurteknar fyrirspurnarforskriftir sjálCvirkt. Þegar fyrirspurn byrjar á sömu kerfisboðum, tólum og fyrri skilaboðum og nýleg fyrirspurn á sama líkani, er sú sameiginlega forskrift laðin úr cache og reiknuð á 25% af inntaksverði líkansins. Það er ekkert að virkja, og cache-skráning er ókeypis.
Hvernig það virkar
- Forskrift, í röð — Fyrirspurn er laðin í röð: kerfisboð, tólskilgreiningar, og svo skilaboð. Cache-ið passar frá upphafi þessrar röðar framt til fyrsta tóna sem flýtur frá.
- Hvað telst sem 'hit' — Fyrirspurn þar sem prompt byrjar á sama efni og nýleg fyrirspurn — venjulega fyrri hluti sömu samtals þar sem ný skilaboð eru bætt við. Sameiginlega forskriftin er cache-inntak; allt eftir það er venjulegt inntak.
- Kornastig — Skyndiminnið geymir prompt í blokkum af 1,568 táknum, svo prompt sem er styttri en um 1,500 tákn er ekki geymdur. Talan úr skyndiminni í svari er inntakstalan þín margfölduð með hlutfalli prompts sem er í skyndiminni, rúnnuð niður. Hún er ekki endilega margfeldi af blokkastærðinni.
- Án treffs — Beiðni þar sem upphafið er ekki í skyndiminni er gjaldfærð á venjulegu inntaksverði. Enginn líftími er gefinn upp fyrir geymda prompta og treff er ekki tryggt: lestu
usagetil að sjá hvað beiðni tók úr skyndiminni. - Enginn rofi — Beiðni þarf ekki að velja skyndiminni, og enginn reitur slekkur á því.
- Hver líkön — Öll hosted open-weight auðkenning. GET /v1/models greinir capabilities.prompt_caching: true og pricing.cached_input_per_million_usd fyrir þau. Shannon líkön reikna eitt flátt gjald.
Sjá skyndiminnistreff í svari
Sendu tvær beiðnir sem byrja á sama langa system prompt og prentaðu notkun hvorrar. Fyrri talan er inntak beiðninnar, sú seinni er sá hluti þess sem var lesinn úr skyndiminni.
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 import { readFileSync } from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const handbook = readFileSync("handbook.txt", "utf8"); // a long text that stays the same
async function ask(question) {
const response = await client.chat.completions.create({
model: "Kimi-K3-3BIT-REAP",
messages: [
{ role: "system", content: handbook },
{ role: "user", content: question },
],
});
const usage = response.usage;
console.log(usage.prompt_tokens, usage.prompt_tokens_details.cached_tokens);
}
await ask("What is the refund policy?");
await ask("Who approves travel?"); // same start: read the second number # handbook.txt is a long text that stays the same. jq builds the JSON body from it
# and prints the usage object of the reply. Run it twice with different questions.
jq -Rs '{
model: "Kimi-K3-3BIT-REAP",
messages: [
{role: "system", content: .},
{role: "user", content: "What is the refund policy?"}
]
}' handbook.txt \
| curl -s https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d @- \
| jq .usage Verðsetning
Cache-inntakstónar eru reiknaðir á 25% af inntaksverði líkansins, rökðu að $0.001 per 1M. Skráning í cache kostar ekki extra, og útgangur er reiknaður eins og venjulega. Cache-gjald hvers ids er í Models & pricing töflunni. Líkön og verð
Inntak kalls er gjaldfært sem (inntak − úr skyndiminni) × inntaksverð + úr skyndiminni × verð skyndiminnis. Talan úr skyndiminni er aldrei stærri en inntakstalan.
| Líkan | Inntak / 1M | Inntak úr skyndiminni / 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 |
Notkunarskráin telur upp inntak úr skyndiminni fyrir hvert kall. Gjaldfærð tákn og kostnaður innihalda nú þegar verð skyndiminnis. Lyklar og notkun
Notkunarreiðir
| Endapunktur | Cache-inntak | Rökstuðningur |
|---|---|---|
/v1/chat/completions | usage.prompt_tokens_details.cached_tokens — hluti af prompt_tokens | usage.completion_tokens_details.reasoning_tokens — hluti af completion_tokens |
/v1/responses | usage.input_tokens_details.cached_tokens — hluti af input_tokens | usage.output_tokens_details.reasoning_tokens — hluti af output_tokens |
/v1/messages | usage.cache_read_input_tokens — greint apart: input_tokens er ó-cache-aðr hluti; cache_creation_input_tokens er alltaf 0 | hugsun er talð í output_tokens |
{
"usage": {
"prompt_tokens": 20000,
"completion_tokens": 812,
"total_tokens": 20812,
"prompt_tokens_details": {
"cached_tokens": 18000
},
"completion_tokens_details": {
"reasoning_tokens": 604
}
}
} {
"usage": {
"input_tokens": 20000,
"input_tokens_details": {
"cached_tokens": 18000
},
"output_tokens": 812,
"output_tokens_details": {
"reasoning_tokens": 604
},
"total_tokens": 20812
}
} {
"usage": {
"input_tokens": 2000,
"cache_read_input_tokens": 18000,
"cache_creation_input_tokens": 0,
"output_tokens": 812
}
} Streymt svar ber sömu reiti í lokanotkun sinni. Þú þarft ekki að biðja um það:
| Endapunktur | Hvar notkunin berst |
|---|---|
/v1/chat/completions | usage í síðasta bútnum á undan data: [DONE]. Það er sent á hverjum streymi. |
/v1/responses | response.usage í response.completed atburðinum. |
/v1/messages | usage í message_delta atburðinum. usage í message_start geymir núll. |
Aukning á cache hits
- Haltu kerfisboðum og tólskilgreiningum nákvæmlega óbreyttum milli kalla. Setjið breytur sem breytast við hvert kall, eins og tímastempel eða request ids, í lok síðasta skilaboðsins, ekki í kerfisboðin.
- Bætið aðeins við sögunni. Efni sem er breytt, stytt eða samantekt eftir fyrri samtöl breytir forskriftinni, og allt eftir fyrstu breytingu er reiknað sem venjulegt inntak.
- Ekki breytið röð tóla, skilaboða eða efnisblokkana á milli kalla, og sýnið JSON (tool schemas, tool arguments og niðurstöður) á sama hátt í hvert skipti.
- Haltu þig við eitt líkanauðkenni í samtali og sendu næsta kall fljótlega eftir það fyrra.
API heldur upphafi samtals stöðugu í þessum tilvikum:
systemeðadeveloperskilaboð sem send eru síðar í samtali haldast á sínum stað. Þau breyta ekki upphafi prompts, svo lotur á undan haldast í skyndiminni.- Röksemdir tólakalla í fyrri assistant-lotum eru bornar saman eftir gildi. Röð lykla og bil í því JSON skipta ekki máli.
- Endapunktarnir þrír lesa samtal á sama hátt. Samtal sem haldið er áfram á öðrum endapunkti heldur sameiginlegu upphafi sínu þegar efnið er hið sama.
Yðmiðar fyrir beiðni
prompt_cache_key (Chat Completions og Responses) og cache_control á efni blokkanna í Messages eru viðurkennd, svo núverandi forritskóði virkar óbreytt. Engu af þessu er nauðsynlegt: önnumat er sjálfvirkt og virkar eins án þeirra.
| Reitur | Sent til | Hvað það er |
|---|---|---|
prompt_cache_key | /v1/chat/completions, /v1/responses | Leiðarlykill skyndiminnis í OpenAI API. |
cache_control | /v1/messages | Skyndiminnismörk á efnisblokk, system blokk eða skilaboðum í Anthropic API. |
stream_options | /v1/chat/completions | include_usage biður OpenAI API um notkun á streymi. Hér endar hver straumur með notkun. |
Tölgun tokens
Tveir ókeypis endapunktar, POST /v1/tokenize og POST /v1/messages/count_tokens, telja tákn texta eða heillar beiðni fyrir hýst líkön með opnum þyngdum áður en þú sendir hana. Þau hafa sína eigin síðu: Tókatalning