ข้ามไปยังเนื้อหา
ภาพรวม

ภาพรวม

แผนที่ของ API: ทุก endpoint คำขอและข้อผิดพลาดมีหน้าตาอย่างไร การชำระค่าบริการของการเรียก และสิ่งที่ควรรู้เมื่อมาจาก OpenAI หรือ Anthropic SDK

Endpoint

ทุก endpoint อยู่ภายใต้ base URL เดียวและให้บริการผ่าน HTTPS

Base URL
https://api.shannon-ai.com
เอนด์พอยต์ รูปแบบ ใช้ทำอะไร
POST /v1/chat/completions OpenAI Chat Completions ส่งบทสนทนา รับคำตอบถัดไป จะสตรีมหรือไม่ก็ได้
POST /v1/messages Anthropic Messages เหมือนกัน แต่ใช้รูปแบบคำขอและคำตอบของ Anthropic SDK
POST /v1/responses OpenAI Responses เหมือนกัน แต่ใช้รูปแบบ Responses endpoint นี้ไม่เก็บสถานะ: ส่งบทสนทนาไปกับทุกคำขอ
GET /v1/models รายการโมเดลของ OpenAI แสดงรายการโมเดลพร้อม context window ราคา และความสามารถ ไม่ต้องใช้คีย์
POST /v1/tokenize Shannon API นับ tokens ของข้อความหรือของคำขอแชตสำหรับโมเดล open-weight ที่โฮสต์ ไม่มีค่าใช้จ่าย
POST /v1/messages/count_tokens การนับ token ของ Anthropic นับ input tokens ของคำขอ Messages สำหรับโมเดล open-weight ที่โฮสต์ ไม่มีค่าใช้จ่าย

สาม endpoint ที่สร้างข้อความเข้าถึงโมเดลชุดเดียวกัน เลือกอันที่มีรูปแบบตรงกับที่โค้ดของคุณใช้อยู่แล้ว

พื้นฐานของคำขอ

เฮดเดอร์ คำอธิบาย
Authorization: Bearer <key> API key ของคุณ จำเป็นบนทุก endpoint ยกเว้น GET /v1/models เว้นแต่คุณส่ง x-api-key
x-api-key: <key> คีย์เดียวกันในเฮดเดอร์ที่ Anthropic SDK ส่ง อ่านได้บนทุก endpoint
Content-Type: application/json จำเป็นบนทุก POST หากไม่มี คำตอบจะเป็น 415
x-request-id: <your id> ไม่บังคับ id ของคุณเองสำหรับคำขอ ซึ่งจะกลับมาในเฮดเดอร์คำตอบ x-request-id หากไม่ระบุ API จะสร้างให้เป็นเลขฐานสิบหก 12 ตัว
  • body ของทุก POST คือออบเจ็กต์ JSON หนึ่งรายการ ใหญ่ได้ถึง 32 MiB
  • ฟิลด์ที่ API ไม่รู้จักจะไม่ทำให้เกิดข้อผิดพลาดและไม่มีผล คำขอที่เขียนสำหรับผู้ให้บริการรายอื่นจะไม่ล้มเหลวเพราะฟิลด์เกิน
  • ฟิลด์ที่รู้จักแต่มีชนิด JSON ไม่ถูกต้อง หรือขาดฟิลด์ที่จำเป็น จะได้รับ 422 body ที่ไม่ใช่ JSON ที่ถูกต้องจะได้รับ 400
  • model คือหนึ่งใน id ในหน้าโมเดลและราคา ตัวพิมพ์ใหญ่และเล็กไม่มีผล

คำตอบเป็น JSON หรือสตรีมของ server-sent events เมื่อคำขอตั้ง stream เป็น true แต่ละ endpoint ตอบด้วยรูปแบบของตัวเอง ทุกคำตอบมีเฮดเดอร์ x-request-id

สิ่งที่คำขอต้องผ่าน

คำขอจะถูกตรวจตามลำดับที่กำหนดก่อนที่โมเดลจะทำงาน การตรวจแรกที่ไม่ผ่านจะเป็นผู้ตอบ ดังนั้น 401 จึงยังไม่บอกอะไรเกี่ยวกับ body

รูปแบบของข้อผิดพลาด

ข้อผิดพลาดคือออบเจ็กต์ JSON ที่มี error ซึ่งเก็บ type และ message /v1/messages ห่อไว้ตามที่ Anthropic SDK คาดหวัง ส่วนพาธอื่นทุกพาธใช้รูปแบบของ OpenAI

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • อ่าน type และ message ส่วน code และ param มีเฉพาะในข้อผิดพลาดบางประเภท: ให้ถือว่าเป็นตัวเลือก param เป็น null เสมอ
  • หลังจากสตรีมเริ่มแล้ว สถานะเป็น 200 ไปแล้ว ความล้มเหลวจะมาถึงเป็นเฟรมข้อผิดพลาดภายในสตรีม
  • ทุกคำตอบข้อผิดพลาดมีเฮดเดอร์ x-request-id
สถานะ ประเภท เมื่อใด
400 invalid_request_error body ไม่ใช่ JSON ที่ถูกต้อง ไม่รู้จัก model id หรือโมเดลไม่รับอินพุตชนิดที่คุณส่ง
401 authentication_error ไม่มีคีย์หรือคีย์ไม่ถูกต้อง
404 not_found_error ไม่มีพาธนี้
405 api_error มีพาธนี้ แต่ใช้ method ผิด
413 invalid_request_error body ใหญ่กว่า 32 MiB
415 invalid_request_error Content-Type ไม่ใช่ application/json
422 invalid_request_error ฟิลด์มีชนิด JSON ไม่ถูกต้อง หรือขาดฟิลด์ที่จำเป็น
429 rate_limit_error ยอดคงเหลือไม่พอสำหรับคำขอ มีคำขอมากกว่า 120 รายการในหนึ่งนาที การเรียก Shannon Coder ของช่วงเวลาใช้หมดแล้ว หรือโมเดลไม่ว่าง ข้อความจะบอกว่าเป็นกรณีใด
5xx api_error สถานะ 500, 502, 503 หรือ 504: คำขอถูกต้องแต่ตอบไม่ได้ ให้ส่งอีกครั้ง 500 อาจมีประเภท server_error

การจัดการข้อผิดพลาด

การเรียกเก็บเงินและยอดคงเหลือ

  • แต่ละบัญชีมียอดคงเหลือเดียว แชตและ API ใช้ร่วมกัน: โควตาแผนรายวันก่อน แล้วจึงเครดิตที่ซื้อเพิ่ม API ไม่มีโควตาของตัวเอง
  • คำขอจะจองงบเอาต์พุต (max_tokens ค่าเริ่มต้น 4,096) แล้วคิดเงินตาม tokens ที่ใช้จริง ในราคาของโมเดล
  • ทุกคำตอบรายงานจำนวน tokens ใน usage หน้าคีย์และการใช้งานแสดงยอดคงเหลือและค่าใช้จ่ายของแต่ละคำขอ
  • ทุกคำขอได้รับบริการเท่ากัน ขีดจำกัดเดียวของอัตราคำขอคือ flood protection: 120 คำขอต่อนาทีต่อบัญชี คำขอที่ส่งแบบขนานจะรอในคิว

ขีดจำกัดและยอดคงเหลือ โมเดลและราคา คีย์และการใช้งาน

ฟิลด์ที่ขึ้นกับโมเดล

ทุกโมเดลรับคำขอแบบเดียวกัน มีไม่กี่ฟิลด์ที่มีผลกับบางโมเดลเท่านั้น ตารางระบุไว้ว่าโมเดลใด หน้าของแต่ละ endpoint แสดงทุกฟิลด์

ฟิลด์ คำอธิบาย ใช้โดย
system คำสั่งสำหรับโมเดล: ข้อความ system บน Chat Completions, system บน Messages, instructions บน Responses โมเดล open-weight ที่โฮสต์, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature temperature ของการสุ่ม โมเดล open-weight ที่โฮสต์, shannon-1.6-*, shannon-coder-1
top_p Nucleus sampling โมเดล open-weight ที่โฮสต์
seed seed คงที่สำหรับการสุ่ม โมเดล open-weight ที่โฮสต์
stop ลำดับหยุด (stop sequences) ได้สูงสุด 4 รายการ โมเดล open-weight ที่โฮสต์
reasoning_effort โมเดลให้เหตุผลมากเพียงใดก่อนตอบ reasoning.effort บน Responses, thinking บน Messages โมเดล open-weight ที่โฮสต์
web_search true ให้โมเดลค้นหาเว็บสำหรับคำขอนี้ เป็นฟิลด์ของ API นี้ บน Chat Completions และ Messages โมเดล Shannon ยกเว้น shannon-coder-1
max_tokens งบเอาต์พุต ในทุกโมเดลจะกำหนดจำนวนที่จองจากยอดคงเหลือของคุณ ในฐานะขีดจำกัดความยาวของคำตอบ: โมเดล open-weight ที่โฮสต์, shannon-1.6-*, shannon-coder-1

Chat Completions

หากมาจาก OpenAI SDK

  • ตั้ง base URL เป็น https://api.shannon-ai.com/v1 และตั้งคีย์เป็นคีย์ Shannon ของคุณ จากนั้นการเรียก Chat Completions และ Responses จะทำงานกับ SDK ได้ตามเดิม
  • model ต้องเป็น id ของ Shannon ชื่อโมเดลของผู้ให้บริการรายอื่น เช่น gpt-4o จะได้รับ 400 และ unknown model
  • การให้เหตุผลมาในฟิลด์ของตัวเอง: reasoning_content ข้าง content ทั้งในข้อความและใน stream delta
  • สตรีมจะมี usage ใน chunk สุดท้ายเสมอ พร้อมกับ finish_reason
  • การเรียก tool ในสตรีมจะมาถึงเป็น chunk เดียวพร้อมสตริง arguments ที่สมบูรณ์
  • คำตอบมีหนึ่ง choice
  • พาธของ OpenAI API ที่ไม่อยู่ในตารางด้านบน เช่น /v1/embeddings จะได้รับ 404

หากมาจาก Anthropic SDK

  • ตั้ง base URL เป็น https://api.shannon-ai.com โดยไม่มี /v1 และตั้งคีย์เป็นคีย์ Shannon ของคุณ SDK จะส่งเป็น x-api-key
  • model ต้องเป็น id ของ Shannon
  • max_tokens เป็นตัวเลือกใน API นี้ ค่าเริ่มต้นคือ 4,096
  • คำตอบมี content block ชนิด thinking, text และ tool_use บล็อกแรกไม่ได้เป็นข้อความเสมอไป: ให้เลือกบล็อกตาม type
  • stop_reason เป็น end_turn หรือ tool_use สตรีมของโมเดล Shannon อาจจบด้วย max_tokens ได้เช่นกัน
  • รับ anthropic-version และ anthropic-beta ไว้ จึงใช้ SDK ได้โดยไม่ต้องแก้ แต่คำขอไม่จำเป็นต้องมี
  • ข้อผิดพลาดบน /v1/messages มีรูปแบบของ Anthropic: {"type": "error", "error": {…}}

เครื่องมือเขียนโค้ดที่ใช้รูปแบบเหล่านี้ตั้งค่าแบบเดียวกัน: base URL คีย์ และ id ของ Shannon เป็นโมเดล เครื่องมือเขียนโค้ดแบบ CLI