คู่มือ
ช่องทางและการกำหนดเส้นทางผู้ให้บริการ
ผูกโมเดลกับผู้ให้บริการที่ระบุด้วย X-Felo-Channel และทำความเข้าใจการกำหนดเส้นทางเริ่มต้น การคิดราคา และ fallback
โมเดลหนึ่งอาจให้บริการผ่านผู้ให้บริการต้นทางหลายราย โดยค่าเริ่มต้น Felo จะเลือกผู้ให้บริการให้คุณ เมื่อต้องการซัพพลายเออร์รายใดรายหนึ่งโดยเฉพาะ ให้ส่ง header คำขอ X-Felo-Channel พร้อมรหัสช่องทางสาธารณะหนึ่งรหัสหรือมากกว่า
Endpoint ที่รองรับ
X-Felo-Channel ได้รับการยอมรับบน endpoint การสร้างทั้งหมดของ Model API:
| Endpoint | โปรโตคอล |
|---|---|
POST /api/v1/chat/completions | OpenAI Chat Completions |
POST /api/v1/responses | OpenAI Responses |
POST /api/v1/messages | Anthropic Messages |
POST /api/v1/images/generations | การสร้างรูปภาพ |
POST /api/v1/videos/generations | การสร้างวิดีโอ |
POST /api/v1/decisions | Decisions |
ไม่ใช้กับ Data API (/v1/beta) หรือ Felo APIs (/v2)
ค่าของ header
ค่าคือรายการ รหัสช่องทางสาธารณะ ที่คั่นด้วยจุลภาคและเรียงตามลำดับ:
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 จะมีลำดับความสำคัญกว่า
ราคา
ช่องทางสาธารณะแต่ละช่องทางเผยแพร่อัตรามาตรฐานและตัวคูณส่วนลดของตนเอง ราคาที่แสดงสำหรับซัพพลายเออร์บนหน้ารายละเอียดโมเดลคือราคาสำหรับลูกค้าของช่องทางนั้น ช่องทางที่คุณตรึงไว้จะเป็นตัวกำหนดผู้ให้บริการที่อัตราของรายนั้นมีผล
ก่อนตรึงช่องทางสำหรับงานปริมาณมาก ให้เปรียบเทียบแถวซัพพลายเออร์บนหน้ารายละเอียดโมเดลและอ่านโมเดลและราคา
ค้นหารหัสช่องทาง
- เปิดหน้ารายละเอียดโมเดลและหาตารางซัพพลายเออร์
- จับคู่ซัพพลายเออร์กับรหัสช่องทางสาธารณะ รหัสคือตัวระบุที่คงที่ซึ่ง API ใช้
- หากคุณอ่านแค็ตตาล็อกโดยตรง ให้ใช้
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."}]
}'