AI สำหรับผู้เริ่มต้นคู่มือ
ข้อผิดพลาด "Not enough tokens": หมายความว่าอะไรและแก้ไขอย่างไร
ยอดคงเหลือเป็นศูนย์ ขีดจำกัดอัตรา คีย์ผิด พรอมต์ยาวเกินไป หรือคำตอบถูกตัด: จับคู่ข้อผิดพลาด API ของคุณกับหนึ่งในห้าสาเหตุ ตรวจสอบอย่างรวดเร็ว แล้วใช้วิธีแก้

ในหน้านี้
"Not enough tokens" ไม่ใช่ข้อผิดพลาดเดียว ผู้คนใช้คำนี้กับปัญหาที่แตกต่างกันห้าประการ: ยอดคงเหลือเป็นศูนย์ คำขอเข้ามาเร็วเกินไป คีย์ผิด พรอมต์ไม่พอดีกับหน้าต่างบริบทของโมเดล หรือคำตอบชนขีดจำกัดเอาต์พุตและหยุดกลางประโยค แต่ละปัญหามีวิธีแก้ของตัวเอง และวิธีที่เร็วที่สุดในการแยกแยะคือสถานะ HTTP และเนื้อหาข้อผิดพลาด ไม่ใช่ถ้อยคำของข้อความ
ค้นหาอาการของคุณในตาราง ดำเนินการตรวจสอบ แล้วใช้วิธีแก้
เลื่อนตารางไปทางขวา →
| สิ่งที่คุณเห็น | สาเหตุที่เป็นไปได้ | การตรวจสอบ | วิธีแก้ |
|---|---|---|---|
| คำขอถูกปฏิเสธ; ข้อความกล่าวถึงยอดคงเหลือ การเรียกเก็บเงิน หรือเครดิต | ยอดคงเหลือเป็นศูนย์ | เปิดบัญชีของคุณและดูยอดคงเหลือ | เติมยอดคงเหลือ แล้วลองใหม่ |
| ทำงานได้ แล้วล้มเหลวเป็นระยะ หายไปหลังจากหยุดพัก | ขีดจำกัดอัตรา: คำขอมากเกินไปในครั้งเดียวหรือต่อนาที | คำขอเดิมผ่านหลังจากรอหนึ่งนาทีหรือไม่? คุณส่งคำขอแบบขนานหรือไม่? | ชะลอความเร็ว ลองใหม่ด้วยการหน่วงเวลาที่เพิ่มขึ้น |
| ทุกคำขอล้มเหลวในทันที แม้แต่พรอมต์บรรทัดเดียว | คีย์ผิด หมดอายุ หรือพิมพ์ผิด หรือ base URL ผิด | เปรียบเทียบคีย์ในโค้ดของคุณกับคีย์ในบัญชีของคุณ; ตรวจสอบ URL | วางคีย์ใหม่ เก็บไว้ให้ห่างจากซอร์สโค้ด |
| พรอมต์สั้นทำงานได้ พรอมต์ยาวล้มเหลว | พรอมต์บวกประวัติมีขนาดใหญ่กว่าหน้าต่างบริบท | ประเมินขนาดของทุกอย่างที่คุณส่ง | ตัดหรือสรุปประวัติ แยกเอกสาร หรือเลือกโมเดลที่มีหน้าต่างใหญ่ขึ้น |
| ไม่มีข้อผิดพลาด แต่คำตอบจบกลางประโยค | คำตอบชนขีดจำกัดเอาต์พุต | finish_reason คือ "length" |
เพิ่ม max_tokens ขึ้นไปถึงขีดจำกัดของโมเดล ขอรูปแบบที่สั้นลง หรือขอให้ดำเนินการต่อ |
สามสิ่งที่ "โทเค็น" อาจหมายถึง#
คำในข้อความข้อผิดพลาดชี้ไปที่ปริมาณที่แตกต่างกันสามอย่าง
- ยอดคงเหลือ โทเค็นคือสิ่งที่คุณจ่ายเงิน ดังนั้น "โทเค็นหมด" มักหมายถึง "เงินหมด" บนบริการแบบเติมเงินล่วงหน้า นี่คือยอดคงเหลือ
- ขีดจำกัดต่อนาที ขีดจำกัดอาจนับเป็นคำขอหรือเป็นโทเค็นต่อนาที ชนอันใดอันหนึ่งและวิธีแก้คือรอและส่งน้อยลงในแต่ละครั้ง
- ขนาดหน้าต่าง หน้าต่างบริบทคือจำนวนโทเค็นที่โมเดลสามารถอ่านได้ในคำขอเดียว พรอมต์ของคุณและคำตอบรวมกัน
และหนึ่งสิ่งที่มันไม่เคยหมายถึง: API key ไม่ใช่สต็อกของโทเค็น คีย์ระบุบัญชีของคุณ สิ่งที่หมดคือยอดคงเหลือที่อยู่เบื้องหลัง หรือขีดจำกัดที่แนบมากับมัน หากคุณเพิ่งเริ่มรู้จักหน่วยนี้ เริ่มจาก What is a token in AI?
1. ยอดคงเหลือเป็นศูนย์#
เอกสาร API ของ DeepSeek อธิบาย HTTP 402 Insufficient Balance ว่า "You have run out of balance" API ของ Claude ใช้ 402 billing_error สำหรับปัญหาการเรียกเก็บเงินและการชำระเงิน ชื่อต่างกัน สถานการณ์เดียวกัน: เงินหมด
CheapTokens ทำงานในหลักการเดียวกัน: ยอดคงเหลือแบบเติมเงินล่วงหน้า จ่ายตามการใช้งาน ยอดคงเหลือเดียวสำหรับทุกโมเดล ดังนั้นเมื่อมีอะไรเสีย ให้ดูยอดคงเหลือก่อน เป็นการตรวจสอบสิบวินาทีและตัดสาเหตุที่พบบ่อยที่สุดออกไป
2. คุณชนขีดจำกัดอัตรา#
DeepSeek ระบุ HTTP 429 Rate Limit Reached ว่าคำขอเข้ามาเร็วเกินไป หรือเกินขีดจำกัด concurrence หรือ QPS วิธีแก้คือจัดจังหวะ: คำขอแบบขนานน้อยลง และการหน่วงเวลาลองใหม่ที่เพิ่มขึ้น (1 วินาที, 2 วินาที, 4 วินาที) แทนการกระหน่ำ endpoint
กับดักหนึ่งข้อ API ของ Claude ยังส่งคืน 429 rate_limit_error เมื่อคุณถึงเพดานการใช้จ่ายรายเดือนของระดับของคุณ และการตอบสนองนั้นไม่มีเฮดเดอร์ retry-after ดังนั้น 429 ที่ไม่หายไปหลังจากรออาจเกี่ยวกับเงิน ไม่ใช่ความเร็ว หากการรอไม่ช่วย ให้กลับไปที่สาเหตุที่ 1
3. คีย์ผิด#
HTTP 401 เป็นปัญหาคีย์ในเอกสารทั้งสอง: DeepSeek ระบุว่าเป็น API key ผิด Claude ระบุเป็น authentication_ สาเหตุทั่วไปคือช่องว่างหรือขึ้นบรรทัดใหม่ที่หลงเหลือติดมากับคีย์ คีย์ที่ถูกลบหรือสร้างใหม่ และคีย์ที่ส่งไปยังที่อยู่ผิด คีย์จากบริการหนึ่งไม่ทำงานที่ URL ของบริการอื่น สำหรับ CheapTokens base URL คือ https:/
สำหรับข้อผิดพลาดอื่นๆ ที่คุณอาจพบขณะเชื่อมต่อ ดู Common connection errors and how to fix them
4. พรอมต์ไม่พอดีกับหน้าต่างบริบท#
หน้าต่างบริบทนับทุกอย่างที่โมเดลอ่านในคำขอเดียว: system prompt ประวัติการสนทนาทั้งหมด ข้อความใหม่ของคุณ และพื้นที่สำหรับคำตอบ บน CheapTokens หน้าต่างของโมเดลในแคตตาล็อกของเราคือ:
เลื่อนตารางไปทางขวา →
| โมเดล | หน้าต่างบริบท | เอาต์พุตสูงสุดต่อคำตอบ |
|---|---|---|
| DeepSeek-V4-Flash | 380K | 32,768 โทเค็น |
| GLM-5.3-Flash | 390K | 8,192 โทเค็น |
| MiniMax-M2.7 | 200K | 8,192 โทเค็น |
แชทไม่มีความจำของตัวเอง ไคลเอนต์ส่งประวัติทั้งหมดอีกครั้งกับทุกคำขอ ดังนั้นแต่ละคำขอจึงใหญ่กว่าครั้งก่อน นี่คือแชทสมมติเพื่อแสดงการเติบโต (ตัวเลขกลมๆ เพื่อประกอบคำอธิบาย): system prompt 1,000 โทเค็น และแต่ละเทิร์นเพิ่มประมาณ 500 โทเค็นของคำถามและ 1,500 โทเค็นของคำตอบ รวม 2,000
1,000 + 30 × 2,000 = 61,000 โทเค็น
นั่นคือขนาดของประวัติหลังจาก 30 เทิร์น ทุกโทเค็นเหล่านั้นนับเป็นอินพุตอีกครั้งในคำขอถัดไป คำขอที่ 31 มีประวัติ 61,000 โทเค็นนั้นบวกกับคำถามใหม่ 500 โทเค็น ดังนั้นอินพุตของมันคือ 61,500 โทเค็น ด้วยคำตอบ 1,500 โทเค็นบน MiniMax-M2.7 มีค่าใช้จ่าย $0.0033 นี่คือทั้งสามโมเดลสำหรับคำขอเดียวกัน โดยมีราคา OpenRouter เพื่อเปรียบเทียบ:
| โมเดล | Input $/1M | Output $/1M | ค่าใช้จ่าย | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0013 | $0.0027 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0011 | $0.0032 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0033 | $0.0203 |
61,500 โทเค็นอินพุตและ 1,500 โทเค็นเอาต์พุตรวมทั้งหมด ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน
แชทเดียวกันเติมหน้าต่างที่เล็กที่สุดในประมาณหนึ่งร้อยเทิร์น:
(200,000 − 1,000) / 2,000 = 99.5
เมื่อล้น ผู้ให้บริการจะปฏิเสธคำขอ รหัสสถานะแตกต่างกันไปตามผู้ให้บริการ ดังนั้นอ่านเนื้อหาข้อผิดพลาด ตัวอย่างเช่น 413 request_ ของ Claude เกี่ยวกับขนาดคำขอเป็นไบต์ (32 MB สำหรับ Messages) ซึ่งเป็นขีดจำกัดที่แตกต่างจากหน้าต่างโทเค็น
สิ่งที่ต้องทำ:
- ตัดเทิร์นที่เก่าที่สุดออก หรือแทนที่ด้วยบทสรุปสั้นๆ
- อย่าวางเอกสารทั้งฉบับเมื่องานต้องการเพียงบทเดียว
- ย้ายไปยังโมเดลที่มีหน้าต่างใหญ่ขึ้นหากคุณต้องการข้อความเต็มจริงๆ
5. คำตอบถูกตัด#
ไม่มีข้อผิดพลาดตรงนี้ และนั่นคือสิ่งที่ทำให้ข้อนี้น่าสับสน โมเดลเพียงหยุดเพราะถึง max_tokens หรือขีดจำกัดเอาต์พุตของโมเดลเอง ในรูปแบบ Chat Completions สัญญาณคือ finish_ บน choice
บน CheapTokens DeepSeek-V4-Flash สามารถส่งคืนได้ถึง 32,768 โทเค็นต่อคำตอบ; GLM-5.3-Flash และ MiniMax-M2.7 ถึง 8,192 หาก max_tokens ของคุณต่ำกว่านั้น ให้เพิ่มขึ้น หากคุณถึงขีดจำกัดแล้ว ให้แบ่งงาน ("เขียนส่วนที่ 1 จาก 3") หรือขอให้โมเดลดำเนินการต่อจากประโยคสุดท้าย
เอาต์พุตของ MiniMax-M2.7 ราคา $0.15 ต่อ 1M โทเค็น และนั่นถูกกว่า OpenRouter ในด้านเอาต์พุต
ปัญหาเดียวกันภายใต้ชื่อที่ต่างกัน#
ผู้ให้บริการติดป้ายสาเหตุเดียวกันต่างกัน นี่คือสิ่งที่เอกสารของพวกเขาระบุ ณ วันที่ 20 ตุลาคม 2026:
เลื่อนตารางไปทางขวา →
| ปัญหา | DeepSeek API | Claude API |
|---|---|---|
| ยอดคงเหลือเป็นศูนย์ | 402 Insufficient Balance |
402 billing_error |
| ขีดจำกัดอัตรา | 429 Rate Limit Reached |
429 rate_limit_error (รวมถึงเพดานการใช้จ่ายรายเดือนของระดับ) |
| คีย์ไม่ดี | 401 | 401 authentication_ |
| คำขอใหญ่เกินไป | ไม่ได้ระบุเป็นรหัสแยก | 413 request_ (ไบต์ ไม่ใช่โทเค็น) |
| ขีดจำกัดการใช้จ่ายที่คุณตั้งเอง | ไม่ได้ระบุ | 400 invalid_ |
แหล่งที่มา: DeepSeek error codes, Claude API errors ทั้งสองหน้าไม่แสดงวันที่เผยแพร่ ดังนั้นวันที่ตรวจสอบเป็นของเรา
ข้อสรุป: อย่าเดาจากถ้อยคำ ข้อผิดพลาดส่งกลับมาเป็น JSON พร้อมออบเจกต์ error ที่มี type และ message จับคู่กับสถานะและประเภท เพราะข้อความเปลี่ยน
ดูสิ่งที่ส่งกลับมาจริงๆ#
สคริปต์นี้พิมพ์สถานะและเนื้อหาของคำขอที่ล้มเหลวและ finish_reason ของคำขอที่สำเร็จ เป็นโครงร่างการวินิจฉัย ไม่ใช่บันทึกการทดสอบ: รันด้วยคีย์ของคุณเองและอ่านสิ่งที่คุณได้รับ
# 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หากการตรวจสอบชี้ไปที่ยอดคงเหลือ#
เติมยอดคงเหลือและส่งคำขออีกครั้ง ราคาบน CheapTokens คงที่ต่อโมเดล ไม่มีชั่วโมงเร่งด่วน และยอดคงเหลือเดียวครอบคลุมทุกโมเดล ดังนั้นคุณไม่จำเป็นต้องเติมแยกสำหรับแต่ละโมเดล อัตราปัจจุบันอยู่ที่นี่:
| โมเดล | บริบท | Input $/1M | Output $/1M | OpenRouter เข้า | OpenRouter ออก |
|---|---|---|---|---|---|
| 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 |
ราคาเป็น USD ต่อ 1 ล้านโทเค็น ตัวเลขของ OpenRouter แสดงไว้เพื่อเปรียบเทียบและอาจมีการเปลี่ยนแปลง
ใส่ปริมาณของคุณเองลงในตารางต้นทุนก่อนเติมเงิน Top up your balance เมื่อตัวเลขดูเหมาะสม และหากคุณต้องการประเมินภาระงานที่ใหญ่ขึ้นก่อน ดู How to estimate the cost of an AI agent



