คู่มือ
โปรโตคอลและ SDK
ใช้โปรโตคอลที่เข้ากันได้กับ OpenAI, Responses และ Anthropic Messages รวมถึง streaming, tool call และการย้ายระบบ
Model API รองรับโปรโตคอลการสื่อสารสามแบบ คุณสามารถใช้ SDK เดิมและเปลี่ยนเพียง base URL คีย์ API และ ID โมเดล
ตาราง endpoint
| โปรโตคอล | Endpoint | ไคลเอนต์ทั่วไป |
|---|---|---|
| OpenAI Chat Completions | POST https://openapi.felo.ai/api/v1/chat/completions | OpenAI SDK และเครื่องมือที่เข้ากันได้กับ OpenAI ส่วนใหญ่ |
| OpenAI Responses | POST https://openapi.felo.ai/api/v1/responses | OpenAI SDK ที่ใช้คุณสมบัติ Responses API |
| Anthropic Messages | POST https://openapi.felo.ai/api/v1/messages | Anthropic SDK, Claude Code และเครื่องมือที่ใช้ Claude เป็นหลัก |
Base URL
| ไคลเอนต์ | Base URL | เหตุผล |
|---|---|---|
| OpenAI SDK | https://openapi.felo.ai/api/v1 | SDK จะต่อท้ายด้วย /chat/completions หรือ /responses |
| Anthropic SDK | https://openapi.felo.ai/api | SDK จะต่อท้ายด้วย /v1/messages ห้ามเพิ่ม /v1 เอง |
ไคลเอนต์ทั้งสองใช้คีย์ API ของ Felo เป็นคีย์ API ของ SDK
import OpenAI from "openai";
import Anthropic from "@anthropic-ai/sdk";
const openai = new OpenAI({
apiKey: process.env.FELO_API_KEY,
baseURL: "https://openapi.felo.ai/api/v1",
});
const anthropic = new Anthropic({
apiKey: process.env.FELO_API_KEY,
baseURL: "https://openapi.felo.ai/api",
});เลือกโปรโตคอล
- ใช้ Chat Completions เมื่อเครื่องมือหรือ SDK ของคุณคาดหวังอาร์เรย์
messagesและchoices[0].message.contentแบบที่คุ้นเคย - ใช้ Responses เมื่อคุณต้องใช้ออบเจกต์ Responses ของ OpenAI,
input,instructionsหรือoutput_text - ใช้ Messages เมื่อคุณใช้ Anthropic SDK หรือเครื่องมือที่ใช้ Claude เป็นหลัก
ตรวจสอบโมเดลก่อนสันนิษฐานว่าทุกโปรโตคอลใช้งานได้ แค็ตตาล็อกเปิดเผย supported_protocols, supported_parameters และ recommended_protocol โดย recommended_protocol เป็นคำแนะนำสำหรับไคลเอนต์ ไม่ใช่ข้อจำกัด โมเดลอาจยังยอมรับโปรโตคอลอื่นได้
สตรีมมิ่ง
ตั้ง stream: true เพื่อรับ Server-Sent Events
- Chat Completions ส่ง chunk แบบแชตสไตล์ OpenAI
- Responses ส่งเหตุการณ์ SSE แบบ Responses และจบด้วยออบเจกต์การตอบกลับที่เสร็จสมบูรณ์
- Messages ส่งเหตุการณ์สตรีมข้อความแบบ Anthropic
อ่านสตรีมเหตุการณ์แบบเพิ่มทีละส่วนและจัดการเหตุการณ์สิ้นสุดก่อนปิดการเชื่อมต่อ การเชื่อมต่อที่หลุดไม่เหมือนกับการตอบกลับที่เสร็จสมบูรณ์
การเรียกเครื่องมือและเอาต์พุตแบบมีโครงสร้าง
ส่ง tools ในรูปแบบดั้งเดิมของโปรโตคอล การรองรับแตกต่างกันตามโมเดล จึงควรตรวจสอบ supported_parameters ในแค็ตตาล็อกก่อนพึ่งพาการเรียกเครื่องมือ โหมด JSON หรือเอาต์พุตแบบมีโครงสร้าง โมเดลอาจยอมรับฟิลด์แต่ยังคงเพิกเฉยต่อตัวเลือกที่ไม่รองรับ
การกำหนดเส้นทางช่องทาง
endpoint ทั้งสามยอมรับ X-Felo-Channel เมื่อคุณต้องการตรึงผู้ให้บริการ ดูช่องทางและการกำหนดเส้นทางผู้ให้บริการสำหรับกฎของ header และตัวอย่าง
ย้ายจาก API อย่างเป็นทางการ
- เปลี่ยน base URL เป็น URL ของ Felo ที่ตรงกัน
- แทนที่คีย์ API ด้วย
FELO_API_KEY - แทนที่ชื่อโมเดลด้วย ID โมเดลสาธารณะของ Felo
- คงรูปแบบคำขอส่วนที่เหลือไว้
| อาการ | สาเหตุที่เป็นไปได้ |
|---|---|
| 404 ทุกคำขอ | base URL มี /v1 อยู่แล้ว หรือ base URL ของ Anthropic ถูกเพิ่ม /v1 ด้วยตนเอง |
| 401 | ไม่มีคีย์ Felo หรือไคลเอนต์ยังส่งคีย์เก่า |
400 ข้อผิดพลาด model | ID โมเดลไม่เป็นสาธารณะหรือไม่รองรับ endpoint ที่เลือก |
| คำขอ Messages ถูกปฏิเสธ | โปรโตคอล Messages กำหนดให้ต้องมี max_tokens |
| การเรียกเครื่องมือถูกเพิกเฉย | โมเดลไม่ได้ประกาศความสามารถนั้น |