# Error, rate limit และ retry

> ทุก error ของ LLM API: HTTP status, code และสาเหตุ อันไหนควร retry, rate limit และควรทำอะไรเมื่อเจอ 402 insufficient balance Error ไม่มีค่าใช้จ่าย

- URL: https://llmwithcrypto.com/th/docs/errors/
- อัปเดตล่าสุด: 2026-10-23
- ผู้เผยแพร่: LLMwithCrypto (https://llmwithcrypto.com)

Error ส่งกลับมาในรูปแบบ OpenAI ทำให้ SDK โยนเป็น exception ตามปกติ หน้านี้แสดงทุก status และ code บอกว่าอันไหนควร retry และแสดง retry loop ที่เคารพ rate limit

**คำตอบสั้น — API LLMwithCrypto ส่ง error อะไรได้บ้าง และคิดค่าใช้จ่ายไหม**

API ตอบ error ด้วย HTTP status และ body แบบ OpenAI: `{"error": {"message", "type", "param", "code"}}` **LLMwithCrypto** ใช้ 400 สำหรับ request ที่ผิด, 401 สำหรับ key ที่ผิด, 402 เมื่อเครดิตจ่ายไม่ได้, 404 สำหรับโมเดลที่ไม่รู้จัก, 429 สำหรับ rate limit และ 500 หรือ 503 ฝั่งเรา การเรียกที่จบด้วย error ไม่มีค่าใช้จ่าย ตามที่ระบุไว้เมื่อ 23 ตุลาคม 2026

## มี error อะไรบ้าง

ไม่มี error ใดใช้เครดิต `code` คือค่าที่เสถียรให้ teste ในโค้ดของคุณ; `message` มีไว้สำหรับคนและอาจเปลี่ยนได้

| HTTP | `code` | สาเหตุ | Retry? |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | ฟิลด์ที่จำเป็นหายไป หรือค่าอยู่นอกช่วงหรือผิดชนิด | ไม่: แก้ request |
| 400 | `context_length_exceeded` | messages บวก `max_tokens` ไม่พอดีกับ context window ของโมเดล | ไม่: ย่อ input หรือลด `max_tokens` |
| 400 | `unsupported_parameter` | ฟิลด์ที่โมเดลนี้ไม่รองรับ เช่น `response_format` บนโมเดลที่ไม่มี JSON mode | ไม่: เอาออกหรือเปลี่ยนโมเดล |
| 401 | `invalid_api_key` | key หาย พิมพ์ผิด หรือถูกเพิกถอน | ไม่: ตรวจสอบคีย์ |
| 402 | `insufficient_balance` | เครดิตคงเหลือไม่พอสำหรับการเรียกนี้ | ไม่: ซื้อแพ็กเครดิต |
| 404 | `model_not_found` | id `model` ไม่อยู่ในรายการของเรา | ไม่: ใช้ id จาก `GET /api/v1/models` |
| 429 | `rate_limit_exceeded` | จำนวนคำขอหรือ token ต่อนาทีเกินที่บัญชีอนุญาต | ใช่ หลังจากรอสักครู่ |
| 500 | `server_error` | เกิดข้อผิดพลาดฝั่งเรา | ใช่ พร้อม backoff |
| 503 | `model_overloaded` | โมเดลเต็มความจุชั่วคราว | ใช่ พร้อม backoff หรือลองโมเดลอื่น |

*เนื้อหาข้อผิดพลาด: โมเดลที่ไม่รู้จัก*

```json
{
  "error": {
    "message": "The model `gpt-4o` does not exist or is not available to your key.",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_found"
  }
}

```

## ทำไมฉันจึงได้ 404 สำหรับ gpt-4o หรือ claude?

เพราะโมเดลเหล่านั้นไม่ได้ขายที่นี่ เราไม่ขายการเข้าถึง GPT, Claude, Gemini หรือ Grok: ผู้ผลิตห้ามขายต่อการเข้าถึง API โดยไม่ได้รับอนุมัติจากพวกเขา และเราไม่ได้รับอนุมัติดังกล่าว โค้ดที่เขียนสำหรับ OpenAI API มักระบุชื่อโมเดลในหลายที่ ค้นหาโปรเจกต์ของคุณหาชื่อเดิมแล้วแทนที่ด้วย id จาก [หน้ารายการโมเดล](https://llmwithcrypto.com/th/models/) เช่น `deepseek-v4-pro` หรือ `gpt-oss-120b`

## เมื่อใดที่โค้ดของฉันควรลองใหม่?

ลองใหม่สำหรับ `429`, `500` และ `503` รวมถึงข้อผิดพลาดเครือข่ายเช่น timeout หรือการเชื่อมต่อถูกรีเซ็ต ห้ามลองใหม่สำหรับ `400`, `401`, `402` หรือ `404`: คำขอเดิมจะล้มเหลวแบบเดิม

รอก่อนเริ่มแต่ละครั้ง หากคำตอบมี header `Retry-After` ให้รอตามจำนวนวินาทีนั้น มิฉะนั้นให้เพิ่มเวลารอเป็นสองเท่าในแต่ละครั้ง (1, 2, 4, 8 วินาที…) และเพิ่มเวลาสุ่มเล็กน้อย เพื่อไม่ให้ worker จำนวนมากลองใหม่พร้อมกัน ยอมแพ้หลังจากลองหลายครั้งและบันทึกข้อผิดพลาดลง log OpenAI SDK ลองใหม่เองอยู่แล้ว ตัวอย่างด้านล่างปิดการทำงานนั้นเพื่อแสดงตรรกะทั้งหมด

*Python: ลองใหม่ 429, 500 และ 503 พร้อม exponential backoff*

```python
import os
import random
import time

from openai import APIConnectionError, APIStatusError, OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
    max_retries=0,
)
RETRY = {429, 500, 503}


def chat(messages, model="deepseek-v4-pro", attempts=5):
    for attempt in range(attempts):
        try:
            return client.chat.completions.create(model=model, messages=messages, max_tokens=500)
        except APIStatusError as err:
            if err.status_code not in RETRY or attempt == attempts - 1:
                raise
            wait = err.response.headers.get("retry-after")
            delay = float(wait) if wait else min(30, 2**attempt) + random.random()
        except APIConnectionError:
            if attempt == attempts - 1:
                raise
            delay = min(30, 2**attempt) + random.random()
        time.sleep(delay)

```

## ควรทำอย่างไรเมื่อได้ 402 insufficient_balance?

เติมเครดิต การเรียกครั้งนั้นไม่ถูกคิดเงิน และไม่มีอะไรอื่นในบัญชีเปลี่ยน: API key ของคุณใช้งานได้ทันทีเมื่อมีเครดิตอีกครั้ง เมื่อการเติมเงินด้วยคริปโตของคุณได้รับการยืนยันและซื้อ credit pack แล้ว API key ของคุณรออยู่ในแดชบอร์ด

เพื่อเลี่ยงความประหลาดใจในโปรดักชัน ให้อ่าน `GET https://llmwithcrypto.com/api/v1/credits` เป็นระยะและตั้งแจ้งเตือนเมื่อต่ำกว่าเกณฑ์ที่คุณเลือก [หน้ารายการโมเดลและเครดิต](https://llmwithcrypto.com/th/docs/models/) แสดงการเรียกครั้งนั้น เครดิตไม่มีวันหมดอายุ: สิ่งที่คุณไม่ได้ใช้ในเดือนนี้ยังอยู่ให้ใช้ในปีหน้า ดังนั้นการซื้อแพ็กใหญ่แต่เนิ่นๆ จึงไม่มีค่าใช้จ่ายเพิ่ม

## ทำอย่างไรให้อยู่ใต้ rate limit?

ทุกบัญชีมีขีดจำกัดคำขอและ token ต่อนาที ซึ่งแสดงในแดชบอร์ด; แจ้งฝ่ายสนับสนุนและขีดจำกัดนั้นสามารถเพิ่มได้

- **จำกัด concurrency.** รันคำขอขนานกันในจำนวนคงที่แทนที่จะยิงทั้งชุดพร้อมกัน
- **จำกัด output.** Token limit นับสิ่งที่โมเดลเขียนด้วย ดังนั้น `max_tokens` ที่เหมาะสมจะทำให้มีคำขออยู่ใต้ limit มากขึ้น
- **กระจายชุดงาน.** สำหรับงาน offline ขนาดใหญ่ ให้เว้นจังหวะคำขอให้กระจายตลอดนาทีแทนที่จะส่งเป็นชุดๆ

## ข้อผิดพลาด: คำถามที่พบบ่อย

### ถูกคิดเงินสำหรับการเรียกที่ล้มเหลวหรือไม่?

ไม่ คุณจ่ายต่อ token จากยอดคงเหลือ: input และ output tokens ถูกนับด้วย tokenizer ของโมเดลนั้นเองและคิดตามราคาของโมเดลนั้นต่อ 1M tokens การเรียกที่จบด้วย error ไม่มีค่าใช้จ่าย

### ดูได้ที่ไหนว่าเกิด outage?

ที่ [หน้าสถานะ](https://llmwithcrypto.com/th/status/) ข้อผิดพลาด `500` หรือ `503` หลายครั้งติดกันในหลายโมเดลมักหมายถึงเหตุขัดข้องฝั่งเรา ส่งข้อความถึง support@llmwithcrypto.com หากยังเป็นอยู่

### ดูคำขอที่ล้มเหลวได้หรือไม่?

ไม่ได้ฝั่งเรา เราไม่เก็บ prompts ของคุณหรือคำตอบของโมเดล: เมื่อส่งคำตอบแล้ว ข้อความนั้นก็หายไป แต่ละครั้งที่เรียกจะเหลือ log หนึ่งบรรทัดซึ่งมีเวลา บัญชี โมเดล และจำนวน token แล้วลบออกหลัง 30 วัน บันทึกข้อผิดพลาด `code` และ request id ของคุณเองในแอป

---

LLMwithCrypto: LLMwithCrypto คือ LLM API ที่เข้ากันได้กับ OpenAI สำหรับโมเดล open-weight — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — จ่ายต่อ token จากยอดคงเหลือคริปโตแบบเติมเงิน ในราคาต่ำกว่าค่ามัธยฐานของโฮสต์สาธารณะ 5% ไม่ต้อง KYC: ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องใช้เอกสาร ไม่มีการเก็บ prompt และ output
