Contact
Line : comsiam
Contact
Line : comsiam

Gemini API Error 429 หมายถึงระบบไม่สามารถรับ Request เพิ่มได้ในขณะนั้น เนื่องจาก Application ใช้ทรัพยากรหรือโควตาเกินเงื่อนไขที่กำหนด เช่น ส่ง Request ต่อนาทีมากเกินไป ใช้ Input Tokens ต่อนาทีสูงเกิน Limit ใช้ Daily Quota หมด หรือชน Spend-based Rate Limit
Error ที่พบมักมีลักษณะ เช่น
429 Too Many Requests
หรือ
429 RESOURCE_EXHAUSTED
สิ่งสำคัญคือ อย่าเห็น 429 แล้วสร้าง API Key ใหม่ทันที เพราะ Gemini API Rate Limit ถูกบังคับใช้ในระดับ Project ไม่ใช่ต่อ API Key การสร้าง Key เพิ่มใน Project เดิมจึงไม่ได้ทำให้ Quota เพิ่มขึ้นโดยอัตโนมัติ
วิธีแก้ที่ถูกต้องคือ อ่านข้อความ Error → ตรวจ Rate Limits ใน Google AI Studio → ตรวจ RPM/TPM/RPD → ตรวจ Billing และ Credit → ลด Request Rate → ใช้ Exponential Backoff → ปรับ Context/Output → Upgrade Tier หรือขอเพิ่ม Rate Limit หากจำเป็น
HTTP Status
429
มีความหมายว่า
Too Many Requests
สำหรับ Gemini API ปัจจุบัน Google แยก Error ที่เกี่ยวข้องกับ 429 ได้หลายลักษณะ เช่น
rate_limit_exceeded
quota_exceeded
too_many_requests
แม้ทั้งหมดอาจคืน HTTP Status 429 เหมือนกัน แต่สาเหตุและวิธีแก้ไม่จำเป็นต้องเหมือนกัน
จึงควรดู
error code
+
error message
+
project usage
พร้อมกัน
rate_limit_exceeded คืออะไรGoogle ระบุว่า rate_limit_exceeded หมายถึง Application ใช้ Request หรือ Token Rate ต่อช่วงเวลาสูงเกิน Limit
เช่น
RPM เต็ม
หรือ
TPM เต็ม
แนวทางแก้คือ
รอ
↓
Retry
↓
ใช้ Exponential Backoff
พร้อมลด Traffic หากเกิดซ้ำบ่อย
quota_exceeded คืออะไรquota_exceeded หมายถึง Quota ที่กำหนดถูกใช้หมดแล้ว
ตัวอย่างที่สำคัญคือ
RPD
=
Requests Per Day
ถ้า Daily Quota หมด การ Retry ทุก 1–2 วินาทีแทบไม่มีประโยชน์
ต้องรอให้ Quota Reset หรือเพิ่ม Capacity/Tier ตามสิทธิ์ของ Project
Google ระบุว่า RPD ของ Gemini API รีเซ็ตที่
เที่ยงคืนตาม Pacific Time
ไม่ใช่เวลาเที่ยงคืนประเทศไทย
too_many_requests คืออะไรหมายถึงมี Request เข้ามามากเกินไปในช่วงเวลาสั้น
อาจเกิดจาก
ตัวอย่าง
Normal:
20 requests/minute
เกิด Bug:
2,000 requests ในไม่กี่วินาที
แม้ Total Daily Usage จะยังต่ำก็สามารถเกิด 429 ได้
โดยทั่วไปควรตรวจอย่างน้อย 7 สาเหตุ
Requests per Minute สูงเกิน Limit
Input Tokens per Minute สูงเกิน Limit
Requests per Day ถูกใช้หมด
ค่าใช้จ่ายเพิ่มเร็วเกิน Limit ใน Rolling Window
Model มีข้อจำกัดเฉพาะ
มี Rate Limit เข้มงวดกว่า
Paid Project มีปัญหาด้าน Billing หรือ Credit
ต้องตรวจให้รู้ว่าเป็นข้อใดก่อนแก้
RPM คือ
Requests Per Minute
สมมติ Limit ของ Project/Model คือ
20 RPM
หากส่ง
21 Requests
ภายในหนึ่งนาที
สามารถเกิด 429 ได้แม้ Token Usage ยังต่ำ
ดังนั้นให้ตรวจ Application Metrics เช่น
12:00 = 10 requests
12:01 = 18 requests
12:02 = 27 requests
ถ้า Error เริ่มที่ช่วง Traffic พุ่ง มีโอกาสสูงว่า RPM เป็น Bottleneck
TPM คือ
Input Tokens Per Minute
นี่เป็นสาเหตุที่ Developer มักมองข้าม
สมมติ
RPM Limit
ยังเหลือ
แต่ Application ส่ง PDF หรือ Context ขนาดใหญ่
เช่น
10 Requests
×
100,000 Input Tokens
=
1,000,000 Input Tokens
อาจชน TPM ก่อน RPM
ดังนั้นการดูเพียง
จำนวน Request
ไม่พอ
ต้องดู
Input Tokens
ด้วย
Application วิเคราะห์เอกสารอาจส่ง Input ใหญ่กว่าการ Chat ปกติมาก
เช่น
Chat:
1,500 tokens/request
เทียบกับ
PDF:
50,000–100,000+ tokens/request
ตามเอกสารจริงและวิธีประมวลผล
หากส่ง PDF หลายไฟล์พร้อมกัน TPM สามารถเต็มได้อย่างรวดเร็ว
แนวทางแก้คือ
Chatbot มักมีปัญหาเมื่อ Conversation ยาวขึ้น
ตัวอย่าง
Turn 1
ใช้ Context เล็ก
แต่เมื่อถึง
Turn 100
Application อาจส่ง History จำนวนมากกลับไปทุก Request
ส่งผลให้ Input Token เพิ่มต่อเนื่อง
ควรพิจารณา
ตาม Use Case
RPD คือ
Requests Per Day
ถ้าใช้ Daily Quota หมดแล้ว
การ Retry แบบ
retry
retry
retry
retry
จะไม่แก้ Root Cause
ควรตรวจ Usage และรอ Quota Reset หรือเพิ่ม Tier/Quota เมื่อเหมาะสม
อย่าลืมว่า Reset ใช้ Pacific Time
Gemini API ปัจจุบันมี Spend-based Rate Limit สำหรับ Paid Tier บางบัญชี
ระบบตรวจค่าใช้จ่ายใน
Rolling 10-minute window
ตัวเลขปัจจุบันคือ
| Tier | Spend Rate Limit |
|---|---|
| Tier 1 | $10 / 10 นาที |
| Tier 2 | $200 / 10 นาที |
| Tier 3 | $200 / 10 นาที |
หากชน Limit นี้ Google ระบุว่าจะคืน
429 RESOURCE_EXHAUSTED
แม้ RPM หรือ TPM อาจดูยังไม่เต็มก็ตาม
Request บางประเภทมีต้นทุนสูง เช่น
สมมติเปิด Feature ใหม่แล้ว Request แพงขึ้นหลายเท่า
Traffic จำนวนเดิมก็สามารถชน Spend Rate Limit ได้
จึงควรดู
Cost per request
ด้วย
ถ้า Error Message ระบุเกี่ยวกับ
prepayment credits
หรือ Credit Balance
ให้เข้า AI Studio ตรวจ Billing โดยตรง
สำหรับบัญชี Prepay ปัจจุบัน Google ระบุว่า Gemini API จะให้บริการ Paid Request ได้เมื่อมี Positive Prepay Credit Balance
เมื่อ Balance เหลือ
$0
Gemini API ของ Project ที่ใช้ Billing Account นั้นสามารถหยุดให้บริการได้
ทางแก้คือเติม Credit และรอให้ Billing Status อัปเดต
เข้า Google AI Studio
ตรวจ
Billing
หรือ
Projects
หากขึ้นสถานะ เช่น
No credits
หรือ
Set up Prepay
ให้ทำตาม Billing Workflow ที่ระบบแสดง
Prepay ปัจจุบันมี Minimum Purchase ที่ Google ระบุไว้ที่
$10
สำหรับ Workflow ที่เกี่ยวข้อง
เงื่อนไขสามารถเปลี่ยนได้ในอนาคต
สำหรับ Production Project แบบ Prepay สามารถตั้ง
Auto-reload
เพื่อเติม Credit เมื่อ Balance ต่ำกว่าระดับที่กำหนด
ตัวอย่างแนวคิด
Balance ต่ำกว่า $30
↓
เติม $100
ช่วยลด Service Interruption เพราะ Credit หมด
แต่ต้องตั้ง Monthly Auto-charge Limit และ Monitoring ให้เหมาะกับ Budget
ปัจจุบัน Gemini API มีระบบ Prepay/Postpay ของตัวเองตาม Billing Account
และ Google ระบุว่า Google Cloud Welcome Credit บางประเภทไม่สามารถนำมาใช้กับ Gemini API ได้
ดังนั้นถ้าเห็น Credit ใน Google Cloud ไม่ควรสรุปว่า
Gemini API Balance พร้อมใช้งานแน่นอน
ให้ตรวจหน้า Billing ของ AI Studio โดยตรง
เมื่อเกิด Error ให้ทำตามลำดับนี้
อย่าดูเพียง HTTP 429
ดู
code
message
status
API Key อยู่ Project ไหน
ดู Active Limit ของ Model
Request ต่อนาที
Input Token ต่อนาที
Daily Usage
Paid Tier อาจชน Spend Rate
Credit และ Account Status
Preview หรือ Stable
วิธีนี้แม่นกว่าการสุ่มเปลี่ยน API Key หรือ Model
โดยทั่วไป ไม่ได้ หาก Root Cause คือ Rate Limit ของ Project
เพราะ Google ระบุว่า Gemini API Rate Limit ถูกใช้ในระดับ
Project
ไม่ใช่
API Key
สมมติมี
Key A
Key B
Key C
อยู่ Project เดียวกัน
ทั้งสาม Key ยังใช้ Capacity เดียวกัน
การสร้าง Project จำนวนมากเพียงเพื่อหลีกข้อจำกัดของบริการไม่ใช่ Architecture ที่ควรใช้
สำหรับ Production ที่ต้องการ Capacity สูงควรใช้
ตาม Workflow ที่ Google รองรับ
ถ้าเป็น Rate Limit ระยะสั้น วิธีพื้นฐานคือ
รอ
↓
Retry
แต่ไม่ควร Retry ทันทีทุก Request
Google แนะนำ
Exponential Backoff
สำหรับ Error Rate Limit
แนวคิดคือเพิ่มเวลารอทุกครั้งที่ Retry
ตัวอย่าง
Request
↓
429
รอประมาณ 1 วินาที
↓
Retry
429
↓
รอประมาณ 2 วินาที
Retry
↓
429
รอประมาณ 4 วินาที
จนถึง Maximum Attempts
ไม่ควร Retry ไปเรื่อย ๆ ไม่มีที่สิ้นสุด
ระบบที่มี Worker จำนวนมากควรเพิ่มเวลาสุ่มเล็กน้อย
แทน
ทุก Worker รอ 2 วินาที
แล้วกลับมายิงพร้อมกัน
ใช้แนวคิด
Worker A = 1.8s
Worker B = 2.3s
Worker C = 2.7s
ช่วยลด Retry Storm
ตัวอย่างแนวคิด
import random
import time
def backoff_delay(attempt):
base = 2 ** attempt
jitter = random.uniform(0, 1)
return base + jitter
for attempt in range(5):
try:
result = call_gemini()
break
except RateLimitError:
if attempt == 4:
raise
time.sleep(
backoff_delay(attempt)
)
call_gemini() และ RateLimitError เป็นชื่อสมมติเพื่ออธิบายหลักการ
เมื่อเขียน Code จริงให้ใช้ Exception Type ของ SDK/API Version ที่กำลังใช้งาน
อย่าใช้ Backoff กับ Error ทุกชนิดโดยอัตโนมัติ
ตัวอย่าง
400 Bad Request
มักต้องแก้ Request
Retry 10 ครั้งด้วย Payload เดิมก็ยังผิด
แต่
429 Too Many Requests
เหมาะกับการรอและ Retry ในหลายกรณี
ดังนั้นต้องแยก Error Type
while True:
try:
call_gemini()
except Exception:
continue
Code แบบนี้อันตรายเพราะ
Production ต้องมี
Maximum Retries
+
Backoff
+
Logging
สมมติ Application ทำ
Promise.all(
10,000 Gemini Requests
)
หรือเปิด Thread/Worker จำนวนมากพร้อมกัน
Rate Limit สามารถเต็มทันที
ควรใช้
Bounded Concurrency
เช่น จำกัดจำนวนงานพร้อมกัน
5
10
20
ตาม Rate Limit และ Workload จริง
ตัวเลขต้องคำนวณจาก Project Capacity
สำหรับงานที่ไม่จำเป็นต้องตอบทันที
ใช้
Request
↓
Queue
↓
Workers
↓
Gemini API
แทนการส่งทุกงานทันที
Worker สามารถควบคุม Request Rate
เช่น
สูงสุด X requests/minute
ช่วยป้องกัน Burst
ถ้าต้องวิเคราะห์
100,000 records
ไม่ควรส่ง Interactive Request 100,000 ครั้งพร้อมกัน
Gemini Batch API มี Rate Limit แยกจาก Non-batch Calls
เหมาะกับ
และยังสามารถมี Pricing ต่ำกว่า Standard Processing ใน Model ที่รองรับ
ถ้า TPM หรือ Spend Rate เต็ม
ควรตรวจว่า Request ส่ง Context ใหญ่เกินจำเป็นหรือไม่
จาก
System Prompt
+
500 Messages
+
Full Document
+
User Prompt
อาจลดเป็น
System Prompt
+
Relevant Context
+
Recent History
+
User Prompt
โดยต้องรักษาข้อมูลที่จำเป็นต่อคุณภาพคำตอบ
ถ้า Prompt ต้องการเพียง
positive
neutral
negative
อย่าปล่อย Model สร้างคำอธิบาย 2,000 Tokens
ใช้
เพื่อควบคุม Response
ช่วยทั้ง
ตัวอย่างต้องการ
{
"category": "technical"
}
ใช้ Structured Output แทนให้ Gemini สร้าง
จากการวิเคราะห์โดยละเอียดแล้ว ผมคิดว่า...
ช่วยลด Output ที่ไม่จำเป็นและทำให้ Program Parse ง่ายขึ้น
ไม่ควรส่งทุก Task ไป Model ที่ใช้ทรัพยากรสูงที่สุด
ตัวอย่าง
Classification
→ Model ที่เน้น Speed/Cost
และ
Complex Reasoning
→ Model ที่เหมาะกับงานยาก
Model Routing ช่วยลด Spend Rate และ Capacity Pressure ได้
แต่ต้อง Benchmark Quality จริง
Google ระบุว่า
Preview และ Experimental Models มี Rate Limit เข้มงวดกว่า
ดังนั้นถ้า Production ใช้ Preview Model แล้วเกิด 429 บ่อย
ควรตรวจว่า Stable Model ที่ตอบโจทย์งานมีหรือไม่
อย่าคิดว่า Preview Model มี Capacity เท่ากับ Stable Model
อาจช่วยในบางกรณีหากปัญหาเป็น Model-specific Capacity หรือ Limit
แต่ไม่ควรทำแบบสุ่ม
ให้ตรวจ
Rate Limit ของ Model A
vs
Rate Limit ของ Model B
รวมทั้ง
ก่อนเปลี่ยน
เพราะ Model ใหม่อาจมี Limit ต่างกัน
เป็นไปได้
Google ระบุว่า Rate Limits ที่เผยแพร่
ไม่ได้รับประกัน Capacity
และ Actual Capacity สามารถแตกต่างได้
ดังนั้นบางช่วงอาจเกิด 429 แม้ Dashboard ดูไม่ถึง Limit สูงสุด
แนวทางคือ
หากเกิดต่อเนื่องผิดปกติควรรวบรวม Request ID, Timestamp, Model และ Error Detail ไว้สำหรับ Troubleshooting
เก็บ
timestamp
project
model
API
HTTP status
error code
error message
request ID
RPM
TPM
retry count
อย่าโพสต์
API Key
ลง Forum หรือ Support Ticket
ข้อมูลเหล่านี้ช่วยแยกได้ว่าเป็น
ให้ทดสอบอย่างเป็นระบบ
Text Request สั้น
ไฟล์ขนาดเล็ก
ไฟล์เดิมผ่าน Input Method อื่นที่เอกสารรองรับ
Model อื่นที่รองรับ Use Case
หาก Text ผ่านแต่ File Path ใด Path หนึ่งล้มเหลวซ้ำ
อาจเป็นปัญหาเฉพาะ File Processing Pipeline มากกว่าค่า RPM ธรรมดา
อย่าเพิ่ม Retry จำนวนมากโดยยังไม่รู้ Root Cause
เมื่อ Error ซับซ้อน ให้ลด Request เหลือ
1 Model
1 Prompt
1 API Call
ตัดออก
ก่อน
ถ้า Request พื้นฐานผ่าน ให้ค่อยเพิ่ม Feature กลับทีละอย่าง
นี่เป็นวิธี Debug ที่เร็วมาก
มีโอกาสเป็น
RPM
มีโอกาสเป็น
TPM
ตรวจ
RPD
ตรวจ
Spend Rate
นี่เป็น Shortcut สำหรับเริ่มวิเคราะห์
ตรวจ
Active หรือไม่
Prepay หรือ Postpay
เหลือหรือไม่
ถูกต้องหรือไม่
เต็มหรือไม่
อย่าคิดว่าเปิด Billing แล้วหมายถึง Quota Unlimited
ควรติดตาม
RPM
TPM
RPD
429 count
latency
cost
retry count
และตั้ง Alert ก่อนถึง Capacity Target
ตัวอย่าง
60%
75%
90%
ตาม Requirement
ไม่ควรรอให้ 429 เกิดกับ User ก่อนจึงรู้ว่า Traffic เพิ่ม
สร้าง Rate Limiter ของเราเองก่อน Request ถึง Gemini
ตัวอย่าง
User
↓
Application Rate Limiter
↓
Queue
↓
Gemini API
ช่วยให้ Traffic ถูกควบคุม
ดีกว่า
User
↓
Gemini
↓
429
แล้วค่อยแก้ทีหลัง
ตัวอย่าง
Free User
10 requests/day
Pro User
100 requests/day
ตาม Business Model
ช่วยป้องกันผู้ใช้คนเดียวใช้ Project Quota ทั้งหมด
ระบบของ comsiam หากเปิด AI Feature ให้ผู้ใช้ทั่วไป ควรมี Application-level Quota แยกจาก Gemini API Rate Limit เพื่อป้องกันทั้ง Abuse และค่าใช้จ่ายผิดปกติ
Public Endpoint เช่น
/api/generate
ถ้าไม่มี
Bot สามารถยิง Request ต่อเนื่อง
ผลคือ
429
+
ค่าใช้จ่ายเพิ่ม
Security และ Rate Limit จึงเกี่ยวข้องกันโดยตรง
หาก Key ถูกขโมย
Traffic อาจมาจากระบบอื่นโดยที่เราไม่รู้
สัญญาณ เช่น
ควร
ทันที
ถ้าปัญหาเกิดจาก Capacity ของ Free Tier และ Application มี Traffic จริง
การเปิด Paid Tier หรือขึ้น Usage Tier สามารถเพิ่ม Rate Limits ตามเงื่อนไขของ Google
แต่ Tier ที่สูงขึ้นยังไม่ใช่ Unlimited
ควรคำนวณ
Required RPM
Required TPM
Required RPD
ก่อน Upgrade
Paid Tier สามารถส่งคำขอ Rate Limit Increase ได้
แต่ Google ระบุว่า
ไม่รับประกันว่าจะอนุมัติ
ดังนั้นอย่า Launch ระบบที่ต้องใช้ Capacity สูงกว่าปัจจุบันโดยหวังว่าจะได้รับการอนุมัติภายหลังแน่นอน
ควรได้รับ Capacity ที่ต้องการก่อนเปิด Traffic จริง
สมมติ
Peak Users = 1,000
แต่ละคนส่งเฉลี่ย
1 Request / 2 นาที
Required RPM ประมาณ
500 RPM
ถ้า Input เฉลี่ย
4,000 Tokens
Required TPM คือ
500 × 4,000
=
2,000,000 TPM
Project ต้องรองรับทั้งสอง Metric
ทั้งวันอาจเฉลี่ย
100 RPM
แต่ช่วง 20:00 น.
1,000 RPM
Rate Limit เกิดจากช่วง Peak
ไม่ใช่ค่าเฉลี่ยทั้งวัน
ดังนั้นต้องเก็บ
Peak RPM
Peak TPM
Frontend ควร Disable ปุ่มเมื่อ Request กำลังทำงาน
ตัวอย่าง
กด Generate
↓
Button Disabled
↓
API Request
↓
Response
↓
Button Enabled
ช่วยป้องกัน User กด
Generate
Generate
Generate
Generate
จนเกิด Request ซ้ำ
ถ้า Input เหมือนกันภายในช่วงเวลาสั้น
Application บางประเภทสามารถ Cache Result หรือรวม Request ได้
เช่น
User A: FAQ เดียวกัน
User B: FAQ เดียวกัน
User C: FAQ เดียวกัน
ถ้า Business Logic อนุญาต อาจไม่ต้องเรียก Gemini ใหม่ทุกครั้ง
ช่วยลด
ข้อมูล Static เช่น
คำอธิบายสินค้าเดิม
ไม่จำเป็นต้อง Generate ใหม่ทุก Page View
สามารถสร้างครั้งเดียว
Gemini
↓
Database/Cache
↓
Reuse
ต่างจากข้อมูลสดที่ต้องสร้างใหม่
ถ้ามี Context ใหญ่ที่ใช้ซ้ำ Context Caching สามารถช่วยเรื่อง Cost และ Processing Efficiency ตาม Model/API
แต่ไม่ควรคิดว่า Caching เป็นวิธีหลบ Rate Limit ทุกประเภท
ต้องตรวจ TPM และ Metric ที่เกี่ยวข้องจริง
แก้ตาม Root Cause เท่านั้น
อ่านแล้ว
ถูก Project
รู้ว่าใช้ Model ไหน
ตรวจแล้ว
ตรวจแล้ว
ตรวจแล้ว
ตรวจแล้ว
Credit ปกติ
มี Backoff
ไม่สูงเกิน
ไม่ได้ส่งจำนวนมากพร้อมกัน
ไม่มี Traffic ผิดปกติ
มีข้อมูลประกอบ
ถ้ายังไม่พบสาเหตุจึงค่อยพิจารณาปัญหาด้าน Service Capacity หรือ Integration Path
ไม่เพิ่ม Project Rate Limit
ทำให้ Traffic หนักขึ้น
User ไม่รู้ว่า Request ล้มเหลว
อาจทำให้ 429 มากขึ้น
ผิดทางหาก Capacity เต็ม
ควรดู Limit ก่อน
ไม่ใช่ Root Cause ทั่วไป
Paid Tier ยังมี Limit
เพิ่ม TPM
400 ต้องแก้ Request
ปัญหาจะกลับมา
Active Limit สามารถเปลี่ยนได้
เก็บ Message และ Code
ดู Project, Tier และ Rate Limits
RPM/TPM/RPD
Credit และ Spend
จำกัด Parallelism
Retry แบบมีระยะ
ถ้า TPM สูง
ถ้า Request แพง
อย่าแย่ง Interactive Traffic
สำหรับ Bulk Processing
ถ้า Usage ปกติสูงกว่าปัจจุบัน
เมื่อ Capacity มาตรฐานไม่พอ
ดูว่า 429 ลดจริงหรือไม่
แนวทางของ comsiam คือแก้ 429 จากข้อมูล Usage จริง ไม่ใช้วิธีสร้าง Key ใหม่หรือเพิ่ม Retry แบบเดาสุ่ม เพราะสองวิธีนี้มักไม่แก้ปัญหาที่ต้นเหตุและอาจทำให้ระบบหนักกว่าเดิม
อาการ
ปกติใช้ได้
ช่วงเย็นเริ่ม 429
ตรวจพบ
RPM พุ่ง
วิธีแก้
นี่เป็น Traffic Problem
อาการ
Request ไม่เยอะ
แต่ 429
ตรวจพบว่าแต่ละ Request ใช้ Context ใหญ่มาก
มีโอกาสเป็น
TPM
แก้ด้วย
ไม่ใช่สร้าง Key เพิ่ม
อาการ
ตอนเช้าใช้ได้
กลางคืน 429 ทุก Request
ตรวจ
RPD
หาก Daily Quota หมด ต้องรอ Reset หรือเพิ่ม Capacity
ตรวจ
ถ้า Error ระบุ Credit หมด ให้แก้ Billing
ถ้า Credit เหลือแต่ Spend Rate เต็ม ให้รอ Rolling Window และลด Expensive Traffic
ให้ทำ
เพราะ Google ระบุว่า Rate Limit ที่กำหนดไม่ได้รับประกัน Actual Capacity เสมอไป
หากยังเกิดต่อเนื่องควรใช้ข้อมูลเหล่านี้ประกอบการ Troubleshooting
หมายถึง Gemini API ปฏิเสธ Request เนื่องจาก Rate Limit, Quota หรือ Resource Limit ที่เกี่ยวข้อง เช่น RPM, TPM, RPD หรือ Spend-based Limit เต็ม
อ่าน Error ก่อน จากนั้นตรวจ Active Rate Limits ใน AI Studio หากเป็น Limit ระยะสั้นให้รอและ Retry ด้วย Exponential Backoff พร้อมลด Request Rate
โดยทั่วไปไม่ช่วยหากเป็น Rate Limit เพราะ Gemini API ใช้ Limit ในระดับ Project ไม่ใช่ต่อ API Key
อาจชน TPM เพราะ Input ใหญ่ เช่น PDF หรือ Conversation History หรืออาจชน Spend-based Limit, Model-specific Limit หรือ Actual Service Capacity
ไม่จำเป็นทุกกรณี หาก Free Tier ยังเพียงพอสามารถรอ Quota Reset หรือลด Usage ได้ แต่ Production ที่ต้องใช้ Capacity สูงขึ้นอาจต้องพิจารณา Paid Tier
ไม่มีตัวเลขเดียวที่เหมาะกับทุกระบบ ควรกำหนด Maximum Attempts และใช้ Exponential Backoff พร้อม Jitter โดยพิจารณา SLA และ Use Case ของ Application
Gemini API Error 429 หรือ RESOURCE_EXHAUSTED ไม่ได้หมายความว่า API Key เสีย แต่โดยทั่วไปเกี่ยวข้องกับการใช้ Request, Token, Daily Quota หรือ Resource/Spend Limit เกินเงื่อนไขที่ Project รองรับ
Google ปัจจุบันแยก 429 เป็นหลายกรณี เช่น rate_limit_exceeded, quota_exceeded และ too_many_requests ดังนั้นต้องอ่านข้อความ Error ก่อนแก้
Rate Limit หลักของ Gemini API คือ RPM, TPM และ RPD และถูกบังคับใช้ระดับ Project ไม่ใช่ API Key การสร้าง Key เพิ่มใน Project เดิมจึงไม่เพิ่ม Capacity
แนวทางแก้ที่เหมาะสมคือเปิด AI Studio ตรวจ Active Rate Limits และ Usage จากนั้นลด Request Burst, ลด Parallelism, ลด Context, จำกัด Output และใช้ Exponential Backoff พร้อม Maximum Retry
สำหรับงานจำนวนมากที่ไม่ต้องตอบทันที ควรย้ายไป Queue หรือ Batch API เพื่อลด Interactive Traffic ส่วน Production System ควรมี Application Rate Limit และ User Quota ของตัวเอง
หาก Paid Project มี Error ที่เกี่ยวข้องกับ Prepay Credit ต้องตรวจ Billing และ Credit Balance เพราะบัญชี Prepay ต้องมี Positive Balance เพื่อให้ Paid Gemini API ทำงานต่อได้
เมื่อ Application โตจน Traffic ปกติเกิน Capacity ของ Tier ปัจจุบัน จึงค่อย Upgrade Tier หรือยื่นคำขอ Rate Limit Increase แทนการพยายามหลบ Limit ด้วยการสร้าง API Key จำนวนมาก