Bumalik sa blog

AI para sa mga baguhanGabay

Error na "Not enough tokens": ano ang ibig sabihin at paano ito ayusin

Walang laman na balanse, rate limit, maling key, masyadong mahabang prompt o naputol na sagot: i-match ang iyong API error sa isa sa limang dahilan, magsagawa ng mabilis na check, ilapat ang solusyon.

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

Cover na may mga salitang "Not enough tokens?" sa itaas ng limang label: balance, rate, key, context, output
Sa pahinang ito
  1. Tatlong bagay na maaaring ibig sabihin ng "tokens"
  2. 1. Walang laman ang balanse
  3. 2. Naabot mo ang rate limit
  4. 3. Mali ang key
  5. 4. Hindi kasya ang prompt sa context window
  6. 5. Naputol ang sagot
  7. Ang parehong problema sa iba't ibang pangalan
  8. Tingnan kung ano talaga ang bumabalik
  9. Kung ang check ay tumuturo sa balanse

"Not enough tokens" ay hindi isang error lang. Ginagamit ng mga tao ang pariralang ito para sa limang magkakaibang problema: walang laman ang balanse, masyadong mabilis ang mga request, mali ang key, hindi kasya ang prompt sa context window ng modelo, o naabot ng sagot ang output limit at huminto sa gitna ng pangungusap. Bawat isa ay may sariling solusyon, at ang pinakamabilis na paraan para makilala sila ay ang HTTP status at ang error body, hindi ang pananalita ng mensahe.

Hanapin ang iyong sintomas sa talahanayan, patakbuhin ang check, ilapat ang solusyon.

Ang nakikita mo Malamang na dahilan Check Solusyon
Tinanggihan ang request; binabanggit ng mensahe ang balance, billing o credit Walang laman ang balanse Buksan ang iyong account at tingnan ang balanse Mag-top up ng balanse, subukang muli
Gumagana, tapos pumapalya nang pira-piraso, nawawala pagkatapos ng pahinga Rate limit: masyadong maraming request nang sabay o kada minuto Dumadaan ba ang parehong request pagkatapos mong maghintay ng isang minuto? Nagpapadala ka ba ng mga request nang parallel? Bagalan, subukang muli na may lumalaking delay
Bawat request ay pumapalya agad, kahit isang linyang prompt Mali, nag-expire o maling na-type na key, o maling base URL Ihambing ang key sa iyong code sa nasa iyong account; tingnan ang URL I-paste ang bagong key, huwag itong ilagay sa source code
Gumagana ang maiikling prompt, pumapalya ang mahahaba Ang prompt kasama ang history ay mas malaki kaysa sa context window Tantiyahin ang laki ng lahat ng ipinapadala mo Bawasan o i-summarize ang history, hatiin ang dokumento, o pumili ng modelong may mas malaking window
Walang error, pero humihinto ang sagot sa gitna ng pangungusap Naabot ng sagot ang output limit finish_reason ay "length" Taasan ang max_tokens hanggang sa limit ng modelo, humingi ng mas maikling format, o hilingin itong magpatuloy

Tatlong bagay na maaaring ibig sabihin ng "tokens"#

Ang salita sa error message ay tumutukoy sa tatlong magkakaibang dami.

  • Balanse. Ang tokens ang binabayaran mo, kaya ang "out of tokens" ay madalas na "out of money". Sa prepaid na serbisyo, ito ang balanse.
  • Limitasyon kada minuto. Maaaring bilangin ang mga limitasyon sa requests o sa tokens kada minuto. Kapag naabot ang isa, ang solusyon ay maghintay at magpadala ng mas kaunti nang sabay.
  • Laki ng window. Ang context window ay kung ilang token ang kayang basahin ng modelo sa isang request, ang iyong prompt at ang sagot nito nang magkasama.

At isang bagay na hindi nito kailanman ibig sabihin: ang API key ay hindi imbakan ng tokens. Kinikilala ng key ang iyong account. Ang nauubos ay ang balanse sa likod nito, o isang limitasyong nakakabit dito. Kung bago ka pa lang sa unit mismo, magsimula sa What is a token in AI?.

1. Walang laman ang balanse#

Inilalarawan ng dokumentasyon ng DeepSeek API ang HTTP 402 Insufficient Balance bilang "You have run out of balance". Ginagamit ng Claude API ang 402 billing_error para sa mga problema sa billing at pagbabayad. Iba't ibang pangalan, parehong sitwasyon: wala nang pera.

Ganoon din ang prinsipyo ng CheapTokens: prepaid na balanse, pay as you go, isang balanse para sa lahat ng modelo. Kaya kapag may nasira, tingnan muna ang balanse. Sampung segundong check ito at inaalis nito ang pinakakaraniwang dahilan.

2. Naabot mo ang rate limit#

Itinatala ng DeepSeek ang HTTP 429 Rate Limit Reached bilang masyadong mabilis na pagdating ng mga request, o nalampasan ang concurrency o QPS limit. Ang solusyon ay i-pace sila: mas kaunting parallel na request, at retry delay na lumalaki (1 s, 2 s, 4 s) sa halip na bombahin ang endpoint.

Isang patibong. Nagbabalik din ang Claude API ng 429 rate_limit_error kapag naabot mo ang monthly spend cap ng iyong tier, at walang retry-after header ang response na iyon. Kaya ang 429 na hindi nawawala kahit maghintay ay maaaring tungkol sa pera, hindi sa bilis. Kung hindi nakakatulong ang paghihintay, bumalik sa dahilan 1.

3. Mali ang key#

Ang HTTP 401 ay problema sa key sa parehong docs: inililista ito ng DeepSeek bilang maling API key, ng Claude bilang authentication_error. Ang karaniwang dahilan ay stray space o newline na nakopya kasama ng key, key na na-delete o na-regenerate, at key na ipinadala sa maling address. Hindi gumagana ang key mula sa isang serbisyo sa URL ng ibang serbisyo. Para sa CheapTokens, ang base URL ay https://api.cheaptokens.dev/v1.

Para sa iba pang error na maaari mong maranasan habang kumokonekta, tingnan ang Common connection errors and how to fix them.

4. Hindi kasya ang prompt sa context window#

Binibilang ng context window ang lahat ng binabasa ng modelo sa isang request: ang system prompt, ang buong history ng usapan, ang bago mong mensahe, at espasyo para sa sagot. Sa CheapTokens, ang mga window ng mga modelo sa aming catalog ay:

Modelo Context window Max output kada sagot
DeepSeek-V4-Flash 380K 32,768 tokens
GLM-5.3-Flash 390K 8,192 tokens
MiniMax-M2.7 200K 8,192 tokens

Walang sariling memorya ang isang chat. Ipinapadala muli ng client ang buong history sa bawat request, kaya mas malaki ang bawat request kaysa sa nauna. Narito ang isang gawa-gawang chat para ipakita ang paglaki (round numbers, para sa ilustrasyon): system prompt na 1,000 tokens, at bawat turn ay nagdadagdag ng mga 500 tokens na tanong at 1,500 tokens na sagot, 2,000 sa kabuuan.

1,000 + 30 × 2,000 = 61,000 tokens

Iyan ang laki ng history pagkatapos ng 30 turn. Bawat isa sa mga token na iyon ay binibilang muli bilang input sa susunod na request. Dala ng ika-31 request ang 61,000-token na history na iyon kasama ang bagong 500-token na tanong, kaya 61,500 tokens ang input nito. Sa 1,500-token na sagot sa MiniMax-M2.7, nagkakahalaga ito ng $0.0033. Narito ang lahat ng tatlong modelo para sa parehong request, kasama ang presyo ng OpenRouter para sa paghahambing:

Modelo Gastos OpenRouter
GLM-5.3-Flash $0.0013 $0.0027
DeepSeek-V4-Flash $0.0011 $0.0032
MiniMax-M2.7 $0.0033 $0.0203

61,500 input at 1,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.

Napupuno ng parehong chat ang pinakamaliit na window sa mga isandaang turn:

(200,000 − 1,000) / 2,000 = 99.5

Kapag umapaw ito, tinatanggihan ng provider ang request. Nag-iiba ang status code depende sa provider, kaya basahin ang error body. Ang 413 request_too_large ng Claude, halimbawa, ay tungkol sa laki ng request sa bytes (32 MB para sa Messages), ibang limitasyon kaysa sa token window.

Ano ang gagawin:

  • Alisin ang pinakalumang mga turn, o palitan ang mga ito ng maikling summary.
  • Huwag i-paste ang buong dokumento kung isang kabanata lang ang kailangan ng gawain.
  • Lumipat sa modelong may mas malaking window kung talagang kailangan mo ang buong teksto.

5. Naputol ang sagot#

Walang error dito, at iyon ang dahilan kung bakit nakakalito ang isang ito. Huminto lang ang modelo dahil naabot nito ang max_tokens o ang sariling output limit ng modelo. Sa format ng Chat Completions, ang senyales ay finish_reason: "length" sa choice.

Sa CheapTokens, makakapagbalik ang DeepSeek-V4-Flash ng hanggang 32,768 tokens kada sagot; ang GLM-5.3-Flash at MiniMax-M2.7 hanggang 8,192. Kung mas mababa ang max_tokens mo kaysa doon, taasan ito. Kung nasa limit ka na, hatiin ang gawain ("write part 1 of 3") o hilingin sa modelo na magpatuloy mula sa huling pangungusap.

Ang output ng MiniMax-M2.7 ay naka-presyo sa $0.15 kada 1M tokens, at mas mura iyon kaysa sa OpenRouter sa output.

Ang parehong problema sa iba't ibang pangalan#

Iba-iba ang label ng mga provider sa parehong dahilan. Ito ang sinasabi ng kanilang dokumentasyon noong 20 Oktubre 2026:

Problema DeepSeek API Claude API
Walang laman ang balanse 402 Insufficient Balance 402 billing_error
Rate limit 429 Rate Limit Reached 429 rate_limit_error (pati ang monthly spend cap ng tier)
Mali ang key 401 401 authentication_error
Masyadong malaki ang request hindi nakalista bilang hiwalay na code 413 request_too_large (bytes, hindi tokens)
Spend limit na ikaw mismo ang nagtakda hindi nakalista 400 invalid_request_error

Mga pinagmulan: DeepSeek error codes, Claude API errors. Walang petsa ng publikasyon ang alinman sa pahina, kaya ang petsa ng check ay sa amin.

Ang mahalagang aral: huwag manghula mula sa pananalita. Bumabalik ang mga error bilang JSON na may error object na naglalaman ng type at message. I-match sa status at type, dahil nagbabago ang teksto ng mensahe.

Tingnan kung ano talaga ang bumabalik#

Ipinapakita ng snippet na ito ang status at ang body ng isang bigong request at ang finish_reason ng isang matagumpay. Ito ay diagnostic sketch, hindi test log: patakbuhin ito gamit ang sarili mong key at basahin ang makukuha mo.

python
# Placeholders: YOUR_API_KEY, MODEL_ID (a model id you have access to)
from openai import OpenAI, APIStatusError

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

try:
    r = client.chat.completions.create(
        model="MODEL_ID",
        messages=[{"role": "user", "content": "Write a long checklist."}],
        max_tokens=1000,
    )
except APIStatusError as e:
    # Read the status and the body, not the wording of the message
    print("status:", e.status_code)
    print("body:", e.body)
else:
    print("finish_reason:", r.choices[0].finish_reason)  # "length" = cut off
    print("usage:", r.usage)  # prompt_tokens and completion_tokens

Kung ang check ay tumuturo sa balanse#

Mag-top up ng balanse at ipadala muli ang request. Ang mga presyo sa CheapTokens ay fixed kada modelo, walang peak hours, at isang balanse ang sumasaklaw sa lahat ng modelo, kaya hindi mo kailangan ng hiwalay na top-up para sa bawat isa. Narito ang mga kasalukuyang rate:

Modelo Context Input $/1M Output $/1M OpenRouter in OpenRouter out
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

Mga presyo sa USD bawat 1M token. Ang mga figure ng OpenRouter ay ipinapakita para sa paghahambing at maaaring magbago.

Isaksak ang sarili mong volume sa cost table bago ka mag-top up. Top up your balance kapag tama na ang mga numero, at kung gusto mong tantiyahin muna ang mas malaking workload, tingnan ang How to estimate the cost of an AI agent.