Input vs output tokens: ano ang sinisingil sa iyo ng AI API
Bakit hiwalay na binibilang ng AI API ang input at output tokens, saan makikita ang mga ito sa usage field, at paano kalkulahin ang gastos ng isang request.

Sa pahinang ito
Kung kakagawa mo lang ng iyong unang API call sa isang language model, malamang nakakita ka ng usage block sa response at nagtaka kung ano ang eksaktong binibilang nito. Ang maikling sagot: bawat request ay may dalawang metro. Ang isa ay binibilang ang mga token na ipinapadala mo (input), ang isa ay binibilang ang mga token na isinusulat pabalik ng modelo (output). Bawat metro ay may sariling presyo, at ang gastos ng isang request ay ang kabuuan ng dalawa.
Ipinapakita ng gabay na ito kung saan makikita ang mga numero, paano gawing dolyar ang mga ito, at ano ang maaari mong baguhin para mas makatipid. Kung malabo pa rin ang salitang "token", magsimula sa Ano ang token sa AI?.
Ano ang binibilang bilang input at ano ang output#
Input tokens ay lahat ng kailangang basahin ng modelo para sagutin ka:
- ang iyong pinakabagong mensahe;
- ang system prompt (mga tagubilin tulad ng "sagutin nang maikli, sa Tagalog");
- ang mga naunang mensahe ng usapan, kung ipapadala mo muli ang mga ito;
- mga dokumento, code o resulta ng paghahanap na iyong ipinapasok sa request.
Output tokens ay lahat ng nililikha ng modelo bilang tugon. Sa OpenAI-compatible na format, ito ang teksto sa choices[0].. Ang ilang modelo sa thinking mode ay gumagawa rin ng reasoning tokens bago ang huling sagot; tingnan ang pricing page ng modelo upang malaman kung ito ay sinisingil bilang output.
Ang mahalagang punto para sa mga baguhan: hindi natatandaan ng modelo ang iyong chat sa pagitan ng mga request. Ang isang chat app ay muling ipinapadala ang buong kasaysayan sa bawat pagkakataon, kaya lumalaki ang input ng isang mahabang usapan sa bawat turn, kahit na ang bago mong mensahe ay isang linya lang.
Saan makikita ang mga numero: ang usage block#
Bawat non-streaming na response mula sa OpenAI-compatible API ay nagtatapos sa isang usage object. Ito ay isang pang-edukasyong halimbawa ng hugis nito:
{
"choices": [
{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}I-scroll ang table pakanan →
| Field | Kahulugan | Sinisingil bilang |
|---|---|---|
prompt_tokens |
Mga token sa lahat ng ipinadala mo | Input |
completion_ |
Mga token na nilikha ng modelo | Output |
total_tokens |
prompt_tokens + completion_ |
Hindi hiwalay na presyo: kabuuan lamang ito |
Isang karaniwang pagkakamali ng baguhan ay ang i-multiply ang total_tokens sa isang presyo. Dahil magkaiba ang presyo ng input at output, kailangan mo ang dalawang numero nang hiwalay.
Ang ilang provider ay nagdadagdag ng karagdagang field. Halimbawa, ang sariling API ng DeepSeek ay hinahati rin ang prompt_tokens sa prompt_ at prompt_ at, sa thinking mode, nag-uulat ng reasoning_tokens (pinagmulan: DeepSeek API docs, sinuri noong 21 Oktubre 2026). Ang tatlong field sa talahanayan ang mga maaasahan mo sa anumang OpenAI-compatible na response.
Kapag nag-stream ka ng sagot, hindi alam ang usage sa simula. Sa sariling API ng DeepSeek, dumarating ito sa huling content chunk bago ang data: [DONE] (DeepSeek API docs, sinuri noong 21 Oktubre 2026); ang ibang API ay maaaring magpadala nito nang iba o kapag hiniling lamang, kaya tingnan kung ano ang natatanggap ng iyong client. Ang streaming mismo ay saklaw sa Streaming responses sa Python.
Bakit magkaiba ang presyo ng dalawang panig#
Ang pagbasa ng iyong prompt at pagsulat ng sagot ay magkaibang uri ng gawain. Pinoproseso ng modelo ang buong prompt sa isang pass, ngunit kailangan nitong gumawa ng sagot nang paisa-isang token, at ang bawat bagong token ay nakadepende sa mga nauna. Iyon ang dahilan kung bakit karaniwang mas mataas ang presyo ng output kaysa input, at bakit may dalawang numero bawat modelo sa anumang listahan ng presyo.
Ang modelong ginagamit namin bilang halimbawa sa ibaba, MiniMax-M2.7 (id minimax-m2.7), ay sumusunod sa pattern na ito. Ang kasalukuyang presyo kada 1M tokens ay $0.05 para sa input at $0.15 para sa output.
Ang formula#
Ang mga presyo ay nakasaad kada 1 milyong tokens, kaya ang gastos ng isang request ay:
cost = input_tokens × input_price ÷ 1,000,000
+ output_tokens × output_price ÷ 1,000,000Narito ito gamit ang gawa-gawang bilog na presyo, para lamang ipakita ang aritmetika (halimbawa, palitan ng kasalukuyang presyo mula sa talahanayan sa ibaba):
# example, substitute current prices from the table
price_in = 0.20 # USD per 1M input tokens
price_out = 0.80 # USD per 1M output tokens
prompt_tokens = 2000
completion_tokens = 500
cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USDIsang halimbawang may kalkulasyon gamit ang totoong modelo#
Kunin ang request mula sa usage na halimbawa sa itaas: 2,000 input tokens at 500 output tokens. Sa MiniMax-M2.7 sa pamamagitan ng CheapTokens, nagkakahalaga ito ng $0.00018. Ang numero ay kinakalkula mula sa kasalukuyang listahan ng presyo sa tuwing ipapakita ang pahina.
Napakaliit ng isang request, kaya makatutulong ang pag-scale up. Ang isang maliit na app na nagpapadala ng 10,000 request na ganito ang laki ay gumagamit ng 20,000,000 input tokens at 5,000,000 output tokens, na umaabot sa $1.75.
Ang parehong request sa iba pang modelo mula sa aming listahan:
| Modelo | Input $/1M | Output $/1M | Gastos | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.00012 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.00017 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.0012 |
2,000 input at 500 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.
Pansinin na ang output ay maliit na bahagi ng bilang ng token dito (500 sa 2,500) ngunit mas malaking bahagi ng bill kaysa sa bahagi nito sa mga token, dahil mas mataas ang presyo ng output tokens (tingnan ang talahanayan). Para sa modelong ito, ang panig ng output din ang kumpirmasyon ng tipid kumpara sa reference na presyo ng OpenRouter, na kapaki-pakinabang kung ang iyong app ay nagsusulat ng mahahabang sagot.
Paggamit sa code#
Mababasa mo ang usage mula sa opisyal na openai Python package sa pamamagitan ng pagturo nito sa base URL ng CheapTokens:
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)
usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)
# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")Kung hindi ka pa nakakapagpadala ng request, sundan muna ang Ang iyong unang API request gamit ang CheapTokens.
Paano gumastos ng mas kaunting token#
- Paikliin ang prompt. Bawasan ang system prompt at alisin ang mga tagubiling hindi kailangan ng modelo. Bawat token na ipinapadala mo ay sinisingil sa bawat request.
- Bawasan ang kasaysayan. Sa mahabang chat, panatilihin ang huling ilang turn o isang maikling buod sa halip na ang buong usapan.
- Ipadala lamang ang relevant na bahagi ng dokumento. Mas mura ang isang pahina ng teksto kaysa sa buong file.
- Humingi ng format na kailangan mo. Ang "Sagutin sa tatlong bullet point" ay gumagawa ng mas kaunting output tokens kaysa sa isang bukas na sanaysay.
- Itakda ang
max_tokensnang sadya. Limitado lamang nito ang output. Masyadong mababa at mapuputol ang sagot; ang mga detalye ay nasa Bakit napuputol ang sagot ng AI sa gitna ng pangungusap? Ang MiniMax-M2.7 sa CheapTokens ay nagpapahintulot ng hanggang 8,192 output tokens bawat sagot at may 180K context window.
Para sa pagtantya ng gastos ng mas malaking workflow, tingnan ang Paano tantiyahin ang gastos ng isang AI agent.
Mga dapat tandaan#
- Bawat request ay may input tokens (
prompt_tokens) at output tokens (completion_).tokens - May hiwalay silang presyo, kadalasan mas mataas ang output.
- Gastos = input tokens × presyo ng input + output tokens × presyo ng output, na may presyong kada 1M tokens.
- Basahin ang mga numero mula sa
usagesa response sa halip na manghula.
Sa CheapTokens, isang prepaid balance ang sumasaklaw sa lahat ng modelo, ang mga presyo bawat modelo ay fixed na walang peak-hour pricing, at ang API ay compatible sa OpenAI Chat Completions at Anthropic Messages. Para subukan ang halimbawa sa itaas, kumuha ng API key at magpadala ng iyong unang request.
Kasalukuyang presyo para sa bawat modelo: CheapTokens pricing.



