راهنماها
کانالها و مسیریابی ارائهدهنده
یک مدل را با X-Felo-Channel به ارائهدهنده مشخصی متصل کنید و مسیریابی پیشفرض، قیمتگذاری و جایگزین را بفهمید.
یک مدل میتواند از چند ارائهدهنده بالادستی سرو شود. بهطور پیشفرض، Felo ارائهدهنده را برای شما انتخاب میکند. وقتی به تأمینکننده مشخصی نیاز دارید، سرآیند درخواست 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 | تصمیمگیری |
روی Data API (/v1/beta) یا Felo APIها (/v2) اعمال نمیشود.
مقدارهای سرآیند
مقدار، فهرستی مرتب و جداشده با کاما از کدهای کانال عمومی است:
X-Felo-Channel: claude-cc
X-Felo-Channel: claude-cc,anthropic
X-Felo-Channel: defaultقواعد از مشخصات عمومی Model API:
- سرآیند را حذف کنید تا از مسیر پیشفرض استفاده شود.
defaultفقط وقتی بهتنهایی به کار رود مقدار معتبر است. آن را با کدهای کانال ترکیب نکنید.- کدهای کانال عمومی از فیلد
channels[].codeمدل در کاتالوگ میآیند. از کد استفاده کنید، نه نام نمایشی تأمینکننده. - فقط کانالهای قابل اجرا و منتشرشده قابل مسیریابیاند.
مسیریابی پیشفرض
وقتی سرآیند را حذف میکنید یا فقط default را میفرستید، پلتفرم ارائهدهنده را انتخاب میکند. در حالت کیف پول، ترتیب مؤثر کانالهای عمومی مدل را برعکس بررسی میکند، کانالهای منتشرنشده یا در دسترس نبودن را رد میکند و ارائهدهنده نخستین کانال در دسترس را انتخاب میکند. ممکن است endpointهای در دسترس از آن ارائهدهنده را با همان شناسه مدل بالادستی و سطح سرویس بگنجاند.
نیازی نیست X-Felo-Channel: default بفرستید؛ حذف سرآیند راه معمول استفاده از مسیر پیشفرض است.
مسیریابی صریح
وقتی کدهای کانال میفرستید، به همان ترتیبی که فهرست کردهاید اعتبارسنجی میشوند. فقط گروه ارائهدهنده نخستین کانال ارسال میشود. بازگشت خودکار به ارائهدهنده دیگر وجود ندارد.
یعنی فهرست کانال یک انتخاب است، نه سیاست تلاش دوباره. اگر به جابهجایی خودکار در صورت خرابی نیاز دارید، آن را در برنامه خود پیاده کنید: پس از شکست نخستین کانال، درخواست تازهای با کانال متفاوت بفرستید.
سرآیندهای ارائهدهنده قدیمی نمیتوانند X-Felo-Channel را بازنویسی کنند. اگر سرآیند دیگری در کلاینت شما هم ارائهدهندهای بخواهد، 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."}]
}'مسیریابی پیشفرض، بدون سرآیند مسیریابی:
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."}]
}'