指南
協議與 SDK
使用 OpenAI-compatible、Responses 和 Anthropic Messages 協議,包括串流、工具呼叫和遷移。
Model API 支援三種傳輸協議。保留你現有的 SDK,只改 base URL、API key 與模型 ID。
Endpoint 對照
| 協議 | Endpoint | 常見用戶端 |
|---|---|---|
| OpenAI Chat Completions | POST https://openapi.felo.ai/api/v1/chat/completions | OpenAI SDK、多數 OpenAI-compatible 工具 |
| OpenAI Responses | POST https://openapi.felo.ai/api/v1/responses | 使用 Responses API 功能的 OpenAI SDK |
| 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 |
兩種用戶端都使用你的 Felo API key 作為 SDK 的 API key。
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",
});選擇協議
- 當你的工具或 SDK 預期熟悉的
messages陣列與choices[0].message.content時,使用 Chat Completions。 - 當你需要 OpenAI 的 Responses 物件、
input、instructions或output_text時,使用 Responses。 - 當你使用 Anthropic SDK 或 Claude 原生工具時,使用 Messages。
在假設協議都可用之前,先確認模型。目錄提供 supported_protocols、supported_parameters 與 recommended_protocol。recommended_protocol 是給用戶端的建議,不是限制;模型仍可能接受其他協議。
串流
設定 stream: true 以接收 Server-Sent Events。
- Chat Completions 會送出 OpenAI 風格的 chat chunks。
- Responses 會送出 Responses SSE events,並以完成的 response 物件結束。
- Messages 會送出 Anthropic message stream events。
請增量讀取事件串流,並在關閉連線前處理終止事件。連線中斷不等於回應完成。
工具呼叫與結構化輸出
以協議原生格式傳入 tools。支援程度因模型而異,因此依賴工具呼叫、JSON 模式或結構化輸出前,請先檢查目錄中的 supported_parameters。模型可能接受該欄位,卻仍忽略不支援的選項。
通道路由
三種 endpoint 都接受 X-Felo-Channel,用於固定供應商。標頭規則與範例請參閱通道與供應商路由。
從官方 API 遷移
- 把 base URL 改成對應的 Felo URL。
- 把 API key 換成
FELO_API_KEY。 - 把模型名稱換成 Felo 公開的模型 ID。
- 其餘請求結構維持不變。
| 症狀 | 可能原因 |
|---|---|
| 每個請求都回 404 | Base URL 已包含 /v1,或 Anthropic base URL 被手動加上了 /v1 |
| 401 | Felo key 缺少,或用戶端仍在送舊 key |
400 model 錯誤 | 模型 ID 未公開,或不支援所選 endpoint |
| Messages 請求被拒 | Messages 協議要求 max_tokens |
| 工具呼叫被忽略 | 模型未宣告該能力 |