Felo API PlatformFelo API Platform

คู่มือ

ข้อผิดพลาด ข้อจำกัด และการลองใหม่

อ่านการตอบกลับข้อผิดพลาดและส่วนหัวข้อจำกัดอัตรา ลองใหม่อย่างปลอดภัย และวินิจฉัยปัญหาที่พบบ่อย

API ของ Felo ทุกตัวส่งเนื้อหาข้อผิดพลาดแบบ JSON พร้อมรหัสข้อผิดพลาดที่คงที่และ request ID ให้อ่านสถานะ HTTP ก่อน จากนั้นอ่าน code แล้วจึงอ่าน message

ซองข้อผิดพลาด

การตอบกลับในโปรดักชันปัจจุบันใช้สถานะ HTTP เป็น status:

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
ฟิลด์ความหมาย
statusรหัสสถานะ HTTP ที่ทำซ้ำในเนื้อหาการตอบกลับ
codeรหัสข้อผิดพลาดที่เครื่องอ่านได้
messageคำอธิบายที่มนุษย์อ่านได้
request_idตัวระบุแบบทึบสำหรับคำขอนี้ ให้ระบุในคำขอรับการสนับสนุน

ตัวอย่าง endpoint รุ่นเก่าบางส่วนใช้ status: "error" และสตริงรหัสที่แตกต่างออกไป ให้แยกการทำงานตามสถานะ HTTP และ code ไม่ใช่ตามถ้อยคำที่แน่นอนของ message

รหัสที่พบบ่อย

HTTPรหัสความหมายสิ่งที่ควรทำ
400รหัสการตรวจสอบเฉพาะ endpointพารามิเตอร์หายไปหรือไม่ถูกต้องแก้ไขคำขอ ห้ามลองใหม่โดยไม่เปลี่ยนแปลง
401UNAUTHORIZEDคีย์ API หายไป ไม่ถูกต้อง หมดอายุ หรือถูกเพิกถอนส่ง Authorization: Bearer $FELO_API_KEY หมุนเวียนคีย์หากถูกเพิกถอน
402INSUFFICIENT_CREDITSเครดิตบริการไม่เพียงพอเติมเงินใน Console Billing แล้วลองใหม่
404เฉพาะ endpointไม่รู้จักโมเดล งาน หรือเส้นทางตรวจสอบ ID โมเดลหรือ ID งานและพาธของ endpoint
429RATE_LIMITEDเกินขีดจำกัดอัตรารอตาม Retry-After แล้วลองใหม่
5xxCHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLEความล้มเหลวจากต้นทางหรือบริการลองใหม่พร้อมการหน่วงแบบทวีคูณ ติดต่อฝ่ายสนับสนุนหากยังเกิดขึ้นต่อเนื่อง

เอกสารอ้างอิงของแต่ละ endpoint จะระบุรหัสที่เฉพาะกับ endpoint นั้น เริ่มจากข้อผิดพลาดของ Chat APIหรือเอกสารอ้างอิงของ endpoint ที่คุณกำลังเรียก

Endpoint การสร้างด้วยโมเดล

POST /api/v1/images/generations และ POST /api/v1/videos/generations ส่งข้อผิดพลาดระดับ endpoint ในซองแบบ OpenAI แทนซองข้างต้น:

{
  "error": {
    "message": "Model kind does not match this generation endpoint",
    "type": "invalid_request_error",
    "param": null,
    "code": "model_kind_mismatch"
  }
}

request ID อยู่ใน header การตอบกลับ X-Request-Id ไม่ได้อยู่ในเนื้อหาการตอบกลับ คำขอที่ถูกปฏิเสธจะไม่สร้างงาน เมื่อมีงานอยู่แล้ว ความล้มเหลวส่วนใหญ่จะมาในรูปสถานะสิ้นสุดของงานในการตอบกลับ 200 แทนที่จะเป็นข้อผิดพลาด HTTP ให้ตรวจสอบ status ว่าเป็น failed หรือ interrupted แล้วอ่าน error.message ดูการสร้างรูปภาพและงานอะซิงโครนัส

Request ID

เนื้อหาข้อผิดพลาดของ Felo มี request_id ให้บันทึกไว้พร้อม endpoint สถานะ HTTP รหัสข้อผิดพลาด ID โมเดล และ ID งาน ห้ามบันทึกคีย์ API แบบเต็ม

Model API ยังยอมรับ header คำขอ X-Request-Id แบบเลือกได้ เมื่อคุณส่งมา ระบบจะสะท้อนกลับเพื่อการวินิจฉัย ซึ่งช่วยให้เชื่อมโยงล็อกของคุณกับคำขอได้ หากคุณไม่ได้ส่งมา ให้ใช้ request_id ที่ส่งกลับ

ขีดจำกัดอัตรา

/v2/chat เป็น endpoint เดียวของ Felo ที่มีขีดจำกัดอัตราที่บังคับใช้และจัดทำเอกสารไว้:

  • ต่อคีย์ API หน้าต่าง 1 นาที
  • ต่อผู้ใช้ หน้าต่าง 1 นาที
  • ต่อผู้ใช้ หน้าต่าง 1 ชั่วโมง

ผู้ใช้ที่มีการสมัครสมาชิก Felo แบบชำระเงินที่ใช้งานได้ รวมถึงการสมัครสมาชิกองค์กร จะได้รับการยกเว้นและไม่ได้รับ header X-RateLimit-* หากไม่สามารถตรวจสอบสถานะการสมัครสมาชิกได้ ขีดจำกัดยังคงมีผล

Headerความหมาย
X-RateLimit-Limitขีดจำกัดของมิติที่เข้มงวดที่สุดที่บังคับใช้อยู่ในปัจจุบัน
X-RateLimit-Remainingโควตาที่เหลือน้อยที่สุดในสามมิติ
X-RateLimit-Resetเวลาประทับ Unix เป็นวินาทีเมื่อหน้าต่างปัจจุบันรีเซ็ต
Retry-Afterเมื่อได้รับ 429 คือระยะเวลาที่แนะนำให้รอเป็นวินาที

endpoint /v2/** อื่น ๆ ในปัจจุบันไม่มีขีดจำกัดอัตราที่บังคับใช้ คำขอ Model API ยังอาจถูกจำกัดโดยผู้ให้บริการต้นทาง ซึ่งอาจปรากฏเป็น 429 ได้

ห้ามฝังขีดจำกัดเชิงตัวเลขแบบตายตัว ให้อ่าน header ในการตอบกลับแต่ละครั้ง

นโยบายการลองใหม่

สถานการณ์ลองใหม่หรือไม่
400, 401, 402, 404ไม่ ลองแก้ไขคำขอ คีย์ หรือยอดคงเหลือก่อน
429ใช่ หลังจาก Retry-After หรือ X-RateLimit-Reset
5xx, การหมดเวลา, การรีเซ็ตการเชื่อมต่อใช่ พร้อมการหน่วงแบบทวีคูณและ jitter
การเชื่อมต่อสตรีมหลุดกลางการตอบกลับลองใหม่เฉพาะเมื่อแอปพลิเคชันของคุณทนต่อการสร้างซ้ำได้

ลูปที่แนะนำ:

  1. ลองใหม่เฉพาะคำขอที่ทำซ้ำได้หรือปลอดภัยต่อการทำซ้ำ
  2. ใช้การหน่วงแบบทวีคูณ: เริ่มประมาณ 1 วินาที เพิ่มเป็นสองเท่า และกำหนดเพดานที่ 30 วินาที
  3. เพิ่ม jitter แบบสุ่มเพื่อไม่ให้ไคลเอนต์ลองใหม่พร้อมกัน
  4. หยุดหลังจากพยายามไม่กี่ครั้งแล้วแสดงข้อผิดพลาด
  5. เมื่อได้รับ 429 ให้ปฏิบัติตาม Retry-After แทนกำหนดการของคุณเอง

ลำดับการแก้ไขข้อบกพร่อง

  1. ตรวจสอบว่ามีคีย์และยังไม่ถูกเพิกถอน
  2. เรียก GET /api/v1/models ด้วยคีย์เดียวกันเพื่อยืนยันการรับรองความถูกต้อง
  3. ส่งคำขอที่ถูกต้องและเล็กที่สุดไปยัง endpoint เป้าหมาย
  4. เพิ่มสตรีมมิ่ง เครื่องมือ หรืออินพุตขนาดใหญ่ทีละอย่าง
  5. สำหรับงานอะซิงโครนัส ให้ตรวจสอบสถานะงานก่อนส่งคำขอใหม่

เนื้อหาที่เกี่ยวข้อง