Quay lại hướng dẫn
Khắc phục sự cố·17 tháng 7, 2026·Đọc 6 phút

Claude API 429 rate_limit_error — nguyên nhân và cách khắc phục hiệu quả

429 từ Claude API nghĩa là bạn đã vượt một trong các giới hạn mỗi phút của Anthropic — số yêu cầu, token đầu vào hoặc token đầu ra. Cách khắc phục hiếm khi chỉ là “chờ lâu hơn”: hãy tuân thủ retry-after, thêm backoff có jitter và làm phẳng các đợt tăng đột biến. Đây là hướng dẫn đầy đủ.

Được xem xét lần cuối vào .

429 từ Claude API nghĩa là bạn đã vượt một trong các giới hạn mỗi phút của Anthropic — số yêu cầu, token đầu vào hoặc token đầu ra. Cách khắc phục hiếm khi chỉ là “chờ lâu hơn”: hãy tuân thủ retry-after, thêm backoff có jitter và làm phẳng các đợt tăng đột biến. Đây là hướng dẫn đầy đủ.

Lỗi

phản hồi (HTTP 429)
{
  "type": "error",
  "error": {
    "type": "rate_limit_error",
    "message": "Number of request tokens has exceeded your per-minute rate limit"
  }
}

Tổng quan nguyên nhân và cách khắc phục

Nguyên nhânCách khắc phục
Chạm giới hạn số yêu cầu mỗi phút (RPM)Xếp hàng các yêu cầu ở phía client; tuân thủ tiêu đề retry-after trước khi retry.
Chạm giới hạn token đầu vào mỗi phút (ITPM) — prompt lớn, ít yêu cầuRút gọn ngữ cảnh truy xuất; bật prompt caching để token đã lưu không tiếp tục tính vào hạn mức trên các gói được hỗ trợ.
Chạm giới hạn token đầu ra mỗi phút (OTPM)Đặt max_tokens ở mức thực tế — OTPM thường là trần đầu tiên đối với các lần tạo nội dung dài.
Lưu lượng tăng đột biến (cron kích hoạt mọi thứ lúc :00)Thêm jitter vào lịch; trải các job theo lô trong suốt một phút.

Đọc phản hồi trước khi retry

Anthropic trả về tiêu đề retry-after cho biết số giây cần chờ, và thông báo lỗi nêu rõ giới hạn bạn đã vượt. Retry ngay lập tức mà không đọc tiêu đề là cách biến một 429 thành cả cơn bão 429.

Thêm backoff lũy thừa kèm jitter

Chỉ retry các trạng thái có thể retry (429, 500, 529), không bao giờ retry lỗi xác thực hoặc lỗi kiểm tra hợp lệ. Đoạn mã này hoạt động không thay đổi khi gọi trực tiếp Anthropic hoặc bất kỳ endpoint tương thích với OpenAI nào:

backoff.py
import time, random
from openai import OpenAI, APIStatusError

client = OpenAI(base_url="https://api.kunavo.com/v1", api_key="sk-kn-...")

def with_backoff(fn, max_retries=5):
    for attempt in range(max_retries):
        try:
            return fn()
        except APIStatusError as e:
            if e.status_code not in (429, 500, 529):
                raise                      # don't retry auth/validation errors
            retry_after = e.response.headers.get("retry-after")
            delay = float(retry_after) if retry_after else min(2 ** attempt, 30)
            time.sleep(delay + random.uniform(0, 0.5))   # jitter avoids herds
    raise RuntimeError("retries exhausted")

resp = with_backoff(lambda: client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "ping"}],
    max_tokens=32,
))
print(resp.choices[0].message.content)

Giảm token, không chỉ giảm số yêu cầu

Nếu thông báo nói về giới hạn token, chỉ backoff sẽ không cứu được bạn. Hãy cắt bớt các đoạn truy xuất, giới hạn max_tokens và bật prompt caching — một system prompt ổn định lớn với tỷ lệ đầu vào 10% cũng giúp giảm áp lực ITPM.

Nếu bạn gọi qua Kunavo

Gọi Claude qua Kunavo không tự động xóa giới hạn tốc độ, nhưng thay đổi cách xử lý chi phí lỗi: các yêu cầu thất bại (bao gồm 429) không bao giờ bị tính phí, và bảng điều khiển sử dụng theo khóa cho biết chính xác khóa và mô hình nào đang tạo đột biến để bạn làm phẳng. Đoạn mã backoff ở trên hoạt động nguyên trạng — chỉ khác base_url. Giới hạn tốc độ là trần thông lượng, không phải giá — để biết một lần gọi Claude thực tế tốn bao nhiêu cho mỗi 1M token, cùng bảng giá chính thức của Anthropic và giá của chúng tôi, xem bảng giá Anthropic Claude API.

Câu hỏi thường gặp

Nâng cấp cấp độ sử dụng Anthropic của tôi có loại bỏ được lỗi 429 không?

Cấp độ cao hơn nâng trần mỗi phút, nên lỗi 429 ít xảy ra hơn, nhưng bất kỳ trần cố định nào cũng có thể bị một đợt tăng đột biến vượt qua. Mã production vẫn cần backoff bất kể cấp độ.

Có nên retry 429 ngay lập tức không?

Không — hãy tuân thủ tiêu đề retry-after (hoặc dùng backoff lũy thừa kèm jitter nếu không có). Retry ngay lập tức kéo dài khoảng thời gian bị giới hạn tốc độ và có thể leo thang thành thời gian khóa lâu hơn.

Các yêu cầu 429 thất bại có tốn tiền không?

Anthropic không tính phí cho các yêu cầu bị từ chối, Kunavo cũng vậy — yêu cầu thất bại không bao giờ bị tính phí. Chi phí của 429 là độ trễ, không phải tiền.

Hướng dẫn liên quan

Thông tin chi tiết hơn về ý nghĩa lỗi có trong tài liệu tham chiếu lỗi; bạn chỉ mất một phút để lấy khóa qua đăng ký và hướng dẫn xác thực.