Cachatio prompti
AUTOMATICAHosted open-weight models prompt prefixes repetitos automaticam cache conservant. Cum request incipit eodem system prompt, tool et nuntiis prioribus quam request recentior in eodem modello, illud prefix commune ex cache legitur et computatur ad 25% pretii input modelli. Nihil activandum est, et scriptura in cache gratuita est.
Quomodo operatur
- Prefix, in ordine — Prompt legitur in ordine: system prompt, definitiones tool, deinde nuntii. Cache concordat ab initio sequenti usque ad primum token quem differt.
- Quid computatur ut hit — Request cuius prompt incipit eodem contentu quam request recentior — typice conversatio praecedens cum novis nuntiis additis. Prefix concordans est input cached; omnia post id sunt input regularis.
- Granularitas — Cache promptum in blocis 1,568 tokenorum tenet, itaque promptum brevius quam circiter 1,500 tokens non cachatur. Numerus cached in responso est numerus inputi tui per partem cached prompti multiplicatus, deorsum rotundatus. Non necessario multiplum magnitudinis bloci est.
- Sine hit — Petitio cuius initium in cache non est mercede inputi regulari computatur. Nulla vita promptorum cachatorum publicatur et hit non spondetur:
usagelege ut videas quid petitio e cache sumpserit. - Nullus interruptor — Petitio non eligit, et nullus campus cachationem exstinguit.
- Quae modelli — Omne hosted open-weight id. GET /v1/models nuntiat capabilities.prompt_caching: true et pricing.cached_input_per_million_usd pro eis. Shannon models unum pretium fixum computant.
Cache hit in responso vide
Duas petitiones mitte quae ab eodem system prompt longo incipiunt et usum utriusque imprime. Primus numerus est input petitionis, secundus est pars eius e cache lecta.
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 Pretia
Cached input tokens computantur ad 25% pretii input modelli, rotundati ad $0.001 per 1M. Scriptura in cache nihil extra costat, et output computatur ut usuale. Pretium cached cuiusque id in tabula Models & pricing est. Modella et pretia
Input vocationis computatur ut (input − cached) × merces inputi + cached × merces cached. Numerus cached numquam maior est quam numerus inputi.
| Modellum | Input / 1M | Input cached / 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 |
Index usus input cached cuiusque vocationis enumerat. Tokens computati et sumptus eius mercedem cached iam includunt. Claves et usus
Campi usus
| Endpoint | Input cached | Ratiocinatio |
|---|---|---|
/v1/chat/completions | usage.prompt_tokens_details.cached_tokens — pars prompt_tokens | usage.completion_tokens_details.reasoning_tokens — pars completion_tokens |
/v1/responses | usage.input_tokens_details.cached_tokens — pars input_tokens | usage.output_tokens_details.reasoning_tokens — pars output_tokens |
/v1/messages | usage.cache_read_input_tokens — nuntiatum separatum: input_tokens est pars non-cached; cache_creation_input_tokens semper est 0 | cogitatio computatur 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
}
}
} {
"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
}
} Responsum per fluxum missum eosdem campos in usu finali fert. Eum petere non debes:
| Endpoint | Ubi usus adveniat |
|---|---|
/v1/chat/completions | usage in ultimo chunk ante data: [DONE]. In omni fluxu mittitur. |
/v1/responses | response.usage eventus response.completed. |
/v1/messages | usage eventus message_delta. usage eventus message_start nihila continet. |
Plures cache hits obtinendi
- System prompt et definitiones tool byte-for-byte stabiles serva inter vocationes. Valores per-call, ut timestamps vel request ids, pone in fine ultimi nuntii, non in system prompt.
- Tantum ad historiam addere. Editio, trimmatio vel summarium turnum prioris mutat prefix, et omnia post primam mutationem computantur ut input regularis.
- Noli reordinare tool, nuntios vel content blocks inter vocationes, et serialise JSON (tool schemas, tool arguments et results) eodem modo semper.
- In uno id modelli pro colloquio mane, et vocationem sequentem mox post praecedentem mitte.
API initium colloquii his casibus stabile servat:
- Nuntius
systemveldeveloperpostea in colloquio missus loco suo manet. Initium prompti non mutat, itaque vices ante eum cachatae manent. - Argumenta vocationum instrumentorum in vicibus assistentis prioribus per valorem comparantur. Ordo clavium et spatia illius JSON non refert.
- Tria endpoints colloquium eodem modo legunt. Colloquium in alio endpoint continuatum prefixum commune retinet cum contentum idem est.
Campi petitionis
prompt_cache_key (Chat Completions et Responses) et cache_control in content blocks nuntiorum acceptantur, ut codex clientis existens immutabilis maneat. Nullum ex his requiritur: caching automaticum est et eodem modo operatur sine his.
| Campus | Missum ad | Quid sit |
|---|---|---|
prompt_cache_key | /v1/chat/completions, /v1/responses | Clavis directionis cache API OpenAI. |
cache_control | /v1/messages | Punctum interruptionis cache in bloco contenti, bloco system vel nuntio API Anthropic. |
stream_options | /v1/chat/completions | include_usage ab API OpenAI usum in fluxu petit. Hic omnis fluxus cum usu finitur. |
Numeratio tokens
Duo endpoints gratuita, POST /v1/tokenize et POST /v1/messages/count_tokens, tokens textus vel totius petitionis pro modellis open-weight hospitatis computant antequam mittis. Paginam propriam habent: Computatio tokenum