Bumalik sa blog

AI para sa mga baguhanGabay

Bakit mas mahal ang isang mahabang AI chat: muling ipinapadala ng API ang kasaysayan

Ang bawat bagong mensahe sa isang AI chat ay muling nagpapadala ng buong kasaysayan, kaya lumalaki ang input sa bawat turn. Tingnan ang aritmetika at 3 paraan upang mapanatiling mababa ang gastos.

Ni CheapTokens TeamNai-publish noong Na-update noong 6 min na pagbabasa

Cover: “Bakit mas mahal ang isang mahabang chat sa bawat mensahe” — muling ipinapadala ng API ang buong kasaysayan sa bawat turn
Sa pahinang ito
  1. Ang maikling sagot
  2. Isang halimbawang may gawa-gawang numero
  3. Magkano ito sa live na presyo
  4. Tatlong paraan upang mapanatiling mababa
  5. 1. Magsimula ng bagong chat kapag nagbago ang paksa
  6. 2. Bawasan ang kasaysayan
  7. 3. Palitan ang mga lumang turn ng isang buod
  8. Tingnan ito sa iyong sariling code
  9. Saan magpapatakbo ng mahahabang chat

Ang mga unang mensahe ng isang chat ay mura. Ang ikalimampung mensahe ay kapansin-pansing mas mahal kaysa sa ikasampung mensahe, kahit na pareho ang dami ng iyong na-type. Walang sira: ganito talaga gumagana ang mga chat API.

Ang maikling sagot#

Hindi natatandaan ng modelo ang iyong mga nakaraang kahilingan. Dokumentasyon ng OpenAI ay direktang nagsasaad: "bawat kahilingan sa pagbuo ng teksto ay independyente at walang estado", at para sa isang multi-turn na pag-uusap, isinasama mo ang mga naunang mensahe at ang nakaraang sagot ng modelo sa susunod na kahilingan. Ang Messages API ng Anthropic ay naglalarawan ng parehong pattern: walang estadong multi-turn na pag-uusap, kung saan ang mga naunang turn ay ipinapasa sa messages parameter.

Kaya ang chat window na nakikita mo sa isang app ay isang ilusyon na ginawa ng app. Sa likod nito, ang bawat bagong mensahe ay isang sariwang kahilingan na nagdadala ng buong pag-uusap hanggang sa ngayon. Nagbabayad ka para sa input tokens sa bawat kahilingan, at ang kasaysayan ay bahagi ng input na iyon. Kung bago ka sa mga termino, basahin muna ang What is a token at Input vs output tokens.

Malinaw na sinasabi ng OpenAI ang bahagi ng pagsingil para sa mga response chain nito: lahat ng naunang input tokens sa chain ay sinisingil bilang input tokens. Ang parehong prinsipyo ay umiiral para sa anumang API kung saan ikaw mismo ang nagpapadala ng kasaysayan: kung ano ang ipinadala mo ay siyang binibilang.

Isang halimbawang may gawa-gawang numero#

Ang mga numero sa ibaba ay isang halimbawa para sa pagtuturo, hindi isang pagsukat. Ipagpalagay na ang bawat mensahe mo ay humigit-kumulang 200 tokens at ang bawat sagot ay humigit-kumulang 300 tokens. Ang isang natapos na palitan ay nagdaragdag ng 500 tokens sa kasaysayan.

Turn Naunang kasaysayan na muling ipinadala Bagong mensahe Input ng kahilingang ito Output
1 0 200 200 300
5 500 × 4 = 2,000 200 2,200 300
10 500 × 9 = 4,500 200 4,700 300
20 500 × 19 = 9,500 200 9,700 300

Ang sagot ay nananatiling pareho ang haba, ngunit ang input ng turn 20 ay halos limampung beses ang input ng turn 1. Hindi lumalaki ang output; ang input ang lumalaki.

Ngayon ang kabuuan para sa isang 20-turn na chat. Ang kasaysayan ay muling ipinapadala ng 0, 1, 2 ... 19 na beses ng maraming palitan, na isang simpleng suma:

  • Mga lumang palitan na muling ipinadala: 500 × 190 = 95,000 tokens (ang 190 ay 0 + 1 + 2 + ... + 19).
  • Mga bagong mensahe: 200 × 20 = 4,000 tokens.
  • Kabuuang input para sa chat: 95,000 + 4,000 = 99,000 tokens.
  • Kabuuang output: 300 × 20 = 6,000 tokens.

Kung natatandaan ng modelo ang lahat nang libre, ang input ay 200 × 20 = 4,000 tokens lamang. Ang natitira ay ang kasaysayan na muling ipinapadala. Ang pagdodoble ng bilang ng mga turn ay hindi nagdodoble sa gastos ng kasaysayan, ito ay humigit-kumulang nagpaparami ng apat, dahil ang suma ay lumalaki kasabay ng parisukat ng bilang ng turn.

Magkano ito sa live na presyo#

Narito ang parehong 20-turn na chat (99,000 input, 6,000 output) sa kasalukuyang mga presyo. Ang talahanayan ay live at nag-a-update kapag nagbago ang mga taripa; ang huling column ay ang reference na presyo ng OpenRouter para sa paghahambing.

Modelo Gastos OpenRouter
GLM-5.3-Flash $0.0022 $0.0045
DeepSeek-V4-Flash $0.0021 $0.0056
MiniMax-M2.7 $0.0059 $0.0369

99,000 input at 6,000 output na token sa kabuuan. Ang mga presyo kada 1M token ay kasalukuyan at nagbabago kasabay ng aming mga taripa; ang column ng OpenRouter ay nagpapakita ng reference na presyo para sa parehong workload.

Para sa mabilisang pagsusuri sa teksto: sa MiniMax-M2.7 ang buong pag-uusap na ito ay nagkakahalaga ng $0.0059. Para sa isang chat na tulad nito, kung saan nangingibabaw ang input, ang presyo ng input ang pinakamahalaga: sa MiniMax-M2.7 ito ay mas mura kaysa sa reference na presyo ng OpenRouter. Bawat 1M tokens, ang MiniMax-M2.7 ay $0.05 para sa input at $0.15 para sa output.

Tatlong paraan upang mapanatiling mababa#

1. Magsimula ng bagong chat kapag nagbago ang paksa#

Ang pinakamurang kasaysayan ay ang walang laman. Kung natapos mo nang i-debug ang isang function at gusto mo na ngayong ng isang recipe, ang isang bagong chat ay nagpapadala ng 200 tokens sa halip na 9,700. Sa isang app ito ay isang button; sa code ito ay history = []. Gawin ito sa tuwing hindi na nakakatulong ang naunang konteksto sa susunod na tanong.

2. Bawasan ang kasaysayan#

Panatilihin lamang ang huling ilang mensahe at itapon ang iba. Ipagpalagay na pinapanatili mo ang huling tatlong palitan, kaya ang kasaysayan ay hindi lalampas sa 500 × 3 = 1,500 tokens:

  • Ang mga turn 1-3 ay lumalaki nang normal: 0 + 500 + 1,000 = 1,500 tokens ng kasaysayan.
  • Ang mga turn 4-20 ay bawat isa ay may naka-cap na 1,500: 1,500 × 17 = 25,500 tokens.
  • Kabuuang kasaysayan: 1,500 + 25,500 = 27,000 tokens, kasama ang 4,000 ng mga bagong mensahe = 31,000 tokens ng input.

Iyon ay 31,000 sa halip na 99,000 para sa parehong 20 turn, at sa MiniMax-M2.7 ito ay nagkakahalaga ng $0.0025. Ang kapalit ng pagbabawas ay nakakalimutan ng modelo ang unang bahagi ng chat, kaya panatilihin ang system prompt at anumang mga katotohanan na hindi dapat mawala sa labas ng binawasan na bahagi.

3. Palitan ang mga lumang turn ng isang buod#

Kapag humaba na ang kasaysayan, hilingin sa modelo nang isang beses na ibuod ito, pagkatapos ay magpatuloy gamit ang buod sa halip na ang buong teksto. Sa halimbawa sa itaas, ang siyam na palitan ay 4,500 tokens; ang isang buod na humigit-kumulang 300 tokens ay nagdadala ng mga pangunahing punto. Nagbabayad ka para sa isang karagdagang kahilingan upang isulat ang buod, at ang bawat kasunod na kahilingan ay mas magaan. Mas maraming kahulugan ang napanatili kaysa sa simpleng pagbabawas, sa kapalit ng kaunting detalye.

Ang context window ay isang hiwalay na limitasyon: ito ang nagtatakda kung gaano karaming tokens ang maaaring taglayin ng isang kahilingan, kasama ang sagot. Ang kasaysayan ay tiyak na makakaabot sa kisame na iyon; ipinapaliwanag ito ng Why does an AI answer stop mid-sentence?.

Tingnan ito sa iyong sariling code#

Ang tugon ay naglalaman ng usage object, kaya maaari mong subaybayan ang paglaki nito. Ito ay isang halimbawa: palitan ang key at kunin ang model id mula sa dokumentasyon ng CheapTokens, dahil nagkakaiba ang mga id sa pagitan ng mga provider.

python
from openai import OpenAI

client = OpenAI(base_url='https://api.cheaptokens.dev/v1', api_key='YOUR_KEY')

system = {'role': 'system', 'content': 'You are a helpful assistant.'}
history = []
KEEP = 7  # new message + last 3 exchanges (6 messages); None keeps everything

def ask(text):
    history.append({'role': 'user', 'content': text})
    r = client.chat.completions.create(
        model='MODEL_ID_FROM_DOCS',
        messages=[system] + (history[-KEEP:] if KEEP else history),
    )
    answer = r.choices[0].message.content
    history.append({'role': 'assistant', 'content': answer})
    print(r.usage.prompt_tokens, r.usage.completion_tokens)
    return answer

Tawagin ang ask() nang maraming beses nang sunud-sunod at i-print ang prompt_tokens: sa KEEP = None ito ay umaakyat sa bawat turn, sa KEEP = 7 ito ay nagpapantay. Para sa mga agent na umiikot sa maraming hakbang, ang parehong epekto ay nalalapat sa bawat hakbang; ipinapakita ng How to estimate the cost of an AI agent kung paano mag-budget para dito.

Saan magpapatakbo ng mahahabang chat#

Ang mahahabang diyalogo at agent loop ay eksaktong mga workload kung saan nangingibabaw ang dami ng input, kaya mahalaga ang parehong malaking context window at espasyo para sa mahahabang sagot:

  • MiniMax-M2.7: 180K context, hanggang 8,192 tokens bawat sagot, parehong mas mura ang input at output kaysa sa reference na presyo ng OpenRouter.
  • DeepSeek-V4-Flash: 380K context, hanggang 32,768 tokens bawat sagot, mas mura ang output kaysa sa reference na presyo ng OpenRouter.

Ang CheapTokens ay may isang balanse para sa lahat ng modelo, isang fixed na presyo bawat modelo na walang peak hours, at isang API na compatible sa OpenAI Chat Completions at Anthropic Messages, kaya gumagana ang code sa itaas sa pamamagitan ng pagpapalit ng base URL. Mag-top up ng balanse at ipadala ang iyong unang kahilingan sa pamamagitan ng pagsunod sa Your first API request with CheapTokens.