Felo API PlatformFelo API Platform

คู่มือ

ช่องทางและการกำหนดเส้นทางผู้ให้บริการ

ผูกโมเดลกับผู้ให้บริการที่ระบุด้วย X-Felo-Channel และทำความเข้าใจการกำหนดเส้นทางเริ่มต้น การคิดราคา และ fallback

โมเดลหนึ่งอาจให้บริการผ่านผู้ให้บริการต้นทางหลายราย โดยค่าเริ่มต้น Felo จะเลือกผู้ให้บริการให้คุณ เมื่อต้องการซัพพลายเออร์รายใดรายหนึ่งโดยเฉพาะ ให้ส่ง header คำขอ X-Felo-Channel พร้อมรหัสช่องทางสาธารณะหนึ่งรหัสหรือมากกว่า

Endpoint ที่รองรับ

X-Felo-Channel ได้รับการยอมรับบน endpoint การสร้างทั้งหมดของ Model API:

Endpointโปรโตคอล
POST /api/v1/chat/completionsOpenAI Chat Completions
POST /api/v1/responsesOpenAI Responses
POST /api/v1/messagesAnthropic Messages
POST /api/v1/images/generationsการสร้างรูปภาพ
POST /api/v1/videos/generationsการสร้างวิดีโอ
POST /api/v1/decisionsDecisions

ไม่ใช้กับ Data API (/v1/beta) หรือ Felo APIs (/v2)

ค่าคือรายการ รหัสช่องทางสาธารณะ ที่คั่นด้วยจุลภาคและเรียงตามลำดับ:

X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic
X-Felo-Channel: default

กฎจากข้อกำหนด Model API สาธารณะ:

  • ละเว้น header นี้เพื่อใช้เส้นทางเริ่มต้น
  • default เป็นค่าที่ถูกต้องเฉพาะเมื่อใช้เดี่ยว ๆ ห้ามรวมกับรหัสช่องทางอื่น
  • รหัสช่องทางสาธารณะมาจากฟิลด์ channels[].code ของโมเดลในแค็ตตาล็อก ให้ใช้รหัส ไม่ใช่ชื่อที่แสดงของซัพพลายเออร์
  • เฉพาะช่องทางที่เผยแพร่และพร้อมใช้งานเท่านั้นที่กำหนดเส้นทางได้

การกำหนดเส้นทางเริ่มต้น

เมื่อคุณละเว้น header หรือส่ง default เพียงค่าเดียว แพลตฟอร์มจะเป็นผู้เลือกผู้ให้บริการ ในโหมด wallet ระบบจะสแกนลำดับช่องทางสาธารณะที่มีผลจริงของโมเดลย้อนกลับ ข้ามช่องทางที่ยังไม่เผยแพร่หรือไม่พร้อมใช้งาน และเลือกผู้ให้บริการของช่องทางแรกที่ใช้ได้ ระบบอาจรวม endpoint ที่ใช้ได้จากผู้ให้บริการนั้นซึ่งมี ID โมเดลต้นทางและระดับบริการเดียวกัน

คุณไม่จำเป็นต้องส่ง X-Felo-Channel: default การละเว้น header คือวิธีปกติในการใช้เส้นทางเริ่มต้น

การกำหนดเส้นทางอย่างชัดเจน

เมื่อคุณส่งรหัสช่องทาง รหัสเหล่านั้นจะถูกตรวจสอบตามลำดับที่คุณระบุ เฉพาะกลุ่มผู้ให้บริการของช่องทางแรกเท่านั้นที่ถูกส่งไป ไม่มีการสำรองไปยังผู้ให้บริการรายอื่นโดยอัตโนมัติ

นั่นหมายความว่ารายการช่องทางคือการเลือก ไม่ใช่นโยบายการลองใหม่ หากต้องการ failover ให้ดำเนินการในแอปพลิเคชันของคุณ: ส่งคำขอใหม่ด้วยช่องทางอื่นหลังจากช่องทางแรกล้มเหลว

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

ราคา

ช่องทางสาธารณะแต่ละช่องทางเผยแพร่อัตรามาตรฐานและตัวคูณส่วนลดของตนเอง ราคาที่แสดงสำหรับซัพพลายเออร์บนหน้ารายละเอียดโมเดลคือราคาสำหรับลูกค้าของช่องทางนั้น ช่องทางที่คุณตรึงไว้จะเป็นตัวกำหนดผู้ให้บริการที่อัตราของรายนั้นมีผล

ก่อนตรึงช่องทางสำหรับงานปริมาณมาก ให้เปรียบเทียบแถวซัพพลายเออร์บนหน้ารายละเอียดโมเดลและอ่านโมเดลและราคา

ค้นหารหัสช่องทาง

  1. เปิดหน้ารายละเอียดโมเดลและหาตารางซัพพลายเออร์
  2. จับคู่ซัพพลายเออร์กับรหัสช่องทางสาธารณะ รหัสคือตัวระบุที่คงที่ซึ่ง API ใช้
  3. หากคุณอ่านแค็ตตาล็อกโดยตรง ให้ใช้ channels[].code และตรวจสอบ runnable

ตัวอย่างเช่น claude-haiku-5-5 เผยแพร่หลายช่องทาง รวมถึง anthropic (ค่าเริ่มต้น), azure, google-vertex-global และ claude-cc แถว claude-cc แสดงส่วนลดของตนเอง การตรึงช่องทางนี้จึงเปลี่ยนทั้งผู้ให้บริการและอัตราค่าบริการ

ตัวอย่าง

Chat Completions ที่ตรึงกับช่องทางหนึ่ง:

curl https://openapi.felo.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Felo-Channel: claude-cc" \
  -d '{
    "model": "claude-haiku-5-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
  }'

Anthropic Messages ด้วยช่องทางเดียวกัน:

curl https://openapi.felo.ai/api/v1/messages \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Felo-Channel: claude-cc" \
  -d '{
    "model": "claude-haiku-5-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
  }'

การกำหนดเส้นทางเริ่มต้น โดยไม่มี header การกำหนดเส้นทาง:

curl https://openapi.felo.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-haiku-5-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Summarize this change in one sentence."}]
  }'

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