Անցնել բովանդակությանը
Հարցման քեշավորում

Հարցման քեշավորում

ԱՎՏՈՄԱՏԻԿ

Hosted open-weight մոդելները ավտոմատ կերպով քեշավորում են կրկնվող հարցման նախշարքերը: Երբ հարցումը սկսվում է նույն համակարգային հարցումով, գործիքներով և նախորդ հաղորդագրություններով, ինչ նախորդ հարցումը նույն մոդելի վրա, այդ ընդհանուր նախշարքը կարդացվում է քեշից և հաշվարկվում է մոդելի մուտքի գնի 25%-ով: Չկա ոչ մի լրացուցիչ ակտիվացման Perl, իսկ քեշի գրիչները անվճար են:

Ինչպես է այն աշխատում

  • Նախշարքը՝ ըստ հերթականության — Հարցումը կարդացվում է ըստ հերթականության՝ համակարգային հարցում, գործիքների սահմանումներ, ապա հաղորդագրություններ: Քեշը համընկնում է այդ հաջորդականության սկզբից մինչև առաջին տարբերվող թոքենը:
  • Ի՞նչն է համարվում hit — Հարցում, որի նախշարքը սկսվում է նույն բովանդակությամբ, ինչ վերջին հարցումը — սովորաբար նույն զրույցի նախորդ փուլն է, որին կցվել են նոր հաղորդագրություններ: Համընկնող նախշարքը քեշավորված մուտք է; դրանից հետո ամեն ինչ սովորական մուտք է:
  • Մանրամասնություն — Cache-ը պահում է prompt-ը 1,568 թոքենանոց բլոկներով, ուստի մոտ 1,500 թոքենից կարճ prompt-ը չի cache-վում։ Պատասխանում cache-ված քանակը ձեր մուտքի քանակն է՝ բազմապատկած prompt-ի cache-ված բաժնով և կլորացված ներքև։ Այն պարտադիր չէ, որ բլոկի չափի բազմապատիկ լինի։
  • Առանց hit-ի — Հարցումը, որի սկիզբը cache-ում չէ, հաշվարկվում է սովորական մուտքի գնով։ Cache-ված prompt-ների կյանքի տևողություն չի հրապարակվում, և hit-ը երաշխավորված չէ. կարդացեք usage-ը՝ տեսնելու համար, թե հարցումը ինչ է վերցրել cache-ից։
  • Անջատիչ չկա — Հարցումը չի միացնում cache-ը, և ոչ մի դաշտ չի անջատում այն։
  • Ո՞ր մոդելները — Յուրաքանչյուր hosted open-weight id: GET /v1/models-ը հայտնում է capabilities.prompt_caching: true և pricing.cached_input_per_million_usd դրանց համար: Shannon մոդելները հաշվարկում են մեկ հաստատուն սակագնով:

Տեսնել cache hit-ը պատասխանում

Ուղարկեք երկու հարցում, որոնք սկսվում են նույն երկար system prompt-ով, և տպեք յուրաքանչյուրի usage-ը։ Առաջին թիվը հարցման մուտքն է, երկրորդը՝ դրա այն մասը, որը կարդացվել է cache-ից։

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

Գնագծում

Քեշավորված մուտքի թոքենները հաշվարկվում են մոդելի մուտքի սակագնի 25%-ով, կլորացված մինչև $0.001 per 1M: Քեշի գրումը լրացուցիչ ծախսեր չունի, իսկ ելքը հաշվարկվում է սովորական կերպով: Յուրաքանչյուր id-ի քեշավորված սակագնը նշված է Models & pricing աղյուսակում: Մոդելներ և գներ

Կանչի մուտքը գանձվում է (մուտք − cache-ված) × մուտքի գին + cache-ված × cache-ի գին։ Cache-ված քանակը երբեք մեծ չէ մուտքի քանակից։

Մոդել Մուտք / 1M Cache-ված մուտք / 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

Օգտագործման մատյանը ցույց է տալիս յուրաքանչյուր կանչի cache-ված մուտքը։ Դրա հաշվարկված թոքենները և արժեքն արդեն ներառում են cache-ի գինը։ Բանալիներ և օգտագործում

Օգտագործման դաշտեր

Էնդփոյնթ Քեշավորված մուտք Տրամաբանություն (Reasoning)
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — prompt_tokens-ի մաս usage.completion_tokens_details.reasoning_tokens — completion_tokens-ի մաս
/v1/responses usage.input_tokens_details.cached_tokens — input_tokens-ի մաս usage.output_tokens_details.reasoning_tokens — output_tokens-ի մաս
/v1/messages usage.cache_read_input_tokens — հայտնվում է առանձին. input_tokens-ը չքեշավորված մասն է; cache_creation_input_tokens-ը միշտ 0 է մտորումները (thinking) հաշվարկվում են 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-ում։ Այն պահանջել պետք չէ.

Էնդփոյնթ Որտեղ է հասնում usage-ը
/v1/chat/completions usage՝ data: [DONE]-ից առաջ վերջին chunk-ում։ Այն ուղարկվում է յուրաքանչյուր հոսքում։
/v1/responses response.completed իրադարձության response.usage-ը։
/v1/messages message_delta իրադարձության usage-ը։ message_start-ի usage-ը զրոներ է պարունակում։

Ինչպես ավտոմատացնել cache hit-երը

  • Պահպանեք համակարգային հարցումը և գործիքների սահմանումները բայթ-բայթ կայուն կոչումների միջև: Յուրաքանչյուր կոչման արժեքները, ինչպիսիք են ժամանակի նշումները կամ հարցումների id-ները, տեղադրեք վերջին հաղորդագրության մեջ, ոչ թե համակարգային հարցման:
  • Միայն կցեք (append) պատմությանը: Նախորդ փուլերի խմբագրումը, կրճատումը կամ ամփոփումը փոխում է նախշարքը, և առաջին փոփոխությունից հետո ամեն ինչ հաշվարկվում է որպես սովորական մուտք:
  • Մի փոխեք գործիքների, հաղորդագրությունների կամ բովանդակության բլոկների հերթականությունը կոչումների միջև, և ամեն անգամ նույն ձևով սերիալիզացրեք JSON-ը (գործիքների սխեմաները, արգումենտները և արդյունքները):
  • Զրույցի ընթացքում մնացեք մեկ մոդելի id-ի վրա և հաջորդ կանչն ուղարկեք նախորդից անմիջապես հետո։

API-ն զրույցի սկիզբը կայուն է պահում հետևյալ դեպքերում.

  • Զրույցի ավելի ուշ ուղարկված system կամ developer հաղորդագրությունը մնում է իր տեղում։ Այն չի փոխում prompt-ի սկիզբը, ուստի դրանից առաջ եղած փուլերը մնում են cache-ում։
  • Նախորդ assistant փուլերում գործիքների կանչերի արգումենտները համեմատվում են ըստ արժեքի։ Այդ JSON-ի բանալիների հերթականությունը և բացատները նշանակություն չունեն։
  • Երեք endpoint-ները զրույցը կարդում են նույն ձևով։ Մեկ այլ endpoint-ում շարունակված զրույցը պահում է իր ընդհանուր նախածանցը, երբ բովանդակությունը նույնն է։

Հարցման դաշթեր

Ընդունվում են prompt_cache_key (Chat Completions և Responses) և cache_control դաշթերը Messages բովանդակության բլոկների համար, ուստի գոյություն ունեցող կլիենտային կոդը աշխատում է անփոփոխ: Ոչինչ պարտադիր չէ. քեշավորումն ավտոմատ է և աշխատում է նույն կերպ նրանց առանց:

Դաշտ Ուղարկվում է Ինչ է դա
prompt_cache_key /v1/chat/completions, /v1/responses OpenAI API-ի՝ cache-ի երթուղավորման բանալի։
cache_control /v1/messages Cache breakpoint՝ բովանդակության բլոկի, system բլոկի կամ Anthropic API-ի հաղորդագրության վրա։
stream_options /v1/chat/completions include_usage-ը OpenAI API-ից պահանջում է usage հոսքի վրա։ Այստեղ յուրաքանչյուր հոսք ավարտվում է usage-ով։

Թոքենների հաշվարկ

Երկու անվճար endpoint, POST /v1/tokenize և POST /v1/messages/count_tokens, hosted open-weight մոդելների համար հաշվում են տեքստի կամ ամբողջ հարցման թոքենները մինչև ուղարկելը։ Դրանք ունեն իրենց էջը. Թոքենների հաշվարկ