กลับไปที่บล็อก

AI สำหรับผู้เริ่มต้นคู่มือ

ข้อผิดพลาด "Not enough tokens": หมายความว่าอะไรและแก้ไขอย่างไร

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

โดย CheapTokens Teamเผยแพร่เมื่อ อัปเดตเมื่อ ใช้เวลาอ่าน 7 นาที

ภาพปกพร้อมคำว่า "Not enough tokens?" เหนือป้ายห้าอัน: ยอดคงเหลือ อัตรา คีย์ บริบท เอาต์พุต
ในหน้านี้
  1. สามสิ่งที่ "โทเค็น" อาจหมายถึง
  2. 1. ยอดคงเหลือเป็นศูนย์
  3. 2. คุณชนขีดจำกัดอัตรา
  4. 3. คีย์ผิด
  5. 4. พรอมต์ไม่พอดีกับหน้าต่างบริบท
  6. 5. คำตอบถูกตัด
  7. ปัญหาเดียวกันภายใต้ชื่อที่ต่างกัน
  8. ดูสิ่งที่ส่งกลับมาจริงๆ
  9. หากการตรวจสอบชี้ไปที่ยอดคงเหลือ

"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_error สาเหตุทั่วไปคือช่องว่างหรือขึ้นบรรทัดใหม่ที่หลงเหลือติดมากับคีย์ คีย์ที่ถูกลบหรือสร้างใหม่ และคีย์ที่ส่งไปยังที่อยู่ผิด คีย์จากบริการหนึ่งไม่ทำงานที่ URL ของบริการอื่น สำหรับ CheapTokens base URL คือ https://api.cheaptokens.dev/v1

สำหรับข้อผิดพลาดอื่นๆ ที่คุณอาจพบขณะเชื่อมต่อ ดู 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 เพื่อเปรียบเทียบ:

โมเดล ค่าใช้จ่าย 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 โทเค็นอินพุตและ 1,500 โทเค็นเอาต์พุตรวมทั้งหมด ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน

แชทเดียวกันเติมหน้าต่างที่เล็กที่สุดในประมาณหนึ่งร้อยเทิร์น:

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

เมื่อล้น ผู้ให้บริการจะปฏิเสธคำขอ รหัสสถานะแตกต่างกันไปตามผู้ให้บริการ ดังนั้นอ่านเนื้อหาข้อผิดพลาด ตัวอย่างเช่น 413 request_too_large ของ Claude เกี่ยวกับขนาดคำขอเป็นไบต์ (32 MB สำหรับ Messages) ซึ่งเป็นขีดจำกัดที่แตกต่างจากหน้าต่างโทเค็น

สิ่งที่ต้องทำ:

  • ตัดเทิร์นที่เก่าที่สุดออก หรือแทนที่ด้วยบทสรุปสั้นๆ
  • อย่าวางเอกสารทั้งฉบับเมื่องานต้องการเพียงบทเดียว
  • ย้ายไปยังโมเดลที่มีหน้าต่างใหญ่ขึ้นหากคุณต้องการข้อความเต็มจริงๆ

5. คำตอบถูกตัด#

ไม่มีข้อผิดพลาดตรงนี้ และนั่นคือสิ่งที่ทำให้ข้อนี้น่าสับสน โมเดลเพียงหยุดเพราะถึง max_tokens หรือขีดจำกัดเอาต์พุตของโมเดลเอง ในรูปแบบ Chat Completions สัญญาณคือ finish_reason: "length" บน 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_error
คำขอใหญ่เกินไป ไม่ได้ระบุเป็นรหัสแยก 413 request_too_large (ไบต์ ไม่ใช่โทเค็น)
ขีดจำกัดการใช้จ่ายที่คุณตั้งเอง ไม่ได้ระบุ 400 invalid_request_error

แหล่งที่มา: DeepSeek error codes, Claude API errors ทั้งสองหน้าไม่แสดงวันที่เผยแพร่ ดังนั้นวันที่ตรวจสอบเป็นของเรา

ข้อสรุป: อย่าเดาจากถ้อยคำ ข้อผิดพลาดส่งกลับมาเป็น JSON พร้อมออบเจกต์ error ที่มี type และ message จับคู่กับสถานะและประเภท เพราะข้อความเปลี่ยน

ดูสิ่งที่ส่งกลับมาจริงๆ#

สคริปต์นี้พิมพ์สถานะและเนื้อหาของคำขอที่ล้มเหลวและ finish_reason ของคำขอที่สำเร็จ เป็นโครงร่างการวินิจฉัย ไม่ใช่บันทึกการทดสอบ: รันด้วยคีย์ของคุณเองและอ่านสิ่งที่คุณได้รับ

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

หากการตรวจสอบชี้ไปที่ยอดคงเหลือ#

เติมยอดคงเหลือและส่งคำขออีกครั้ง ราคาบน 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