← Cloudflare AI Gateway / ai-gateway / configuration
Custom Providers
Přehled
Custom Providers vám umožňují integrovat poskytovatele AI, kteří nejsou nativně podporováni v AI Gateway. Tato funkce vám umožňuje u libovolného poskytovatele AI s koncovým bodem API přes HTTPS využívat pozorovatelnost, ukládání do mezipaměti, omezení počtu požadavků a další funkce AI Gateway.
Případy použití
- Interní AI modely: Připojte se k AI modelům vaší organizace hostovaným ve vlastní infrastruktuře
- Regionální poskytovatelé: Integrujte se s poskytovateli AI specifickými pro váš region
- Specializované modely: Používejte doménově specifické služby AI, které nejsou dostupné u standardních poskytovatelů
- Vlastní koncové body: Směrujte požadavky do vlastní AI infrastruktury
Než začnete
Předpoklady
- Aktivní účet Cloudflare s přístupem k AI Gateway
- Platný API klíč od vašeho vlastního poskytovatele AI
- Základní HTTPS URL adresa API vašeho poskytovatele
Ověřování
Koncové body API pro vytváření, čtení, aktualizaci a mazání custom providers vyžadují autentizaci. Musíte vytvořit API token Cloudflare s příslušnými oprávněními.
Chcete-li vytvořit token API:
- Přejděte na Stránka API tokenů v Cloudflare dashboardu ↗
- Klikněte na Create Token
- Vyberte Custom Token a přidejte následující oprávnění:
AI Gateway - Edit
- Klikněte na Pokračovat k souhrnu a poté Create Token
- Zkopírujte token, použijete ho v
Authorization: Bearer $CLOUDFLARE_API_TOKENhlavička
Vytvořit custom provider
Chcete-li vytvořit nového custom provider pomocí API:
-
Získejte svůj ID účtu a Account Tag.
-
Odešlete
POSTpožadavek pro vytvoření nového vlastního poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Custom Provider",
"slug": "some-provider",
"base_url": "https://api.myprovider.com",
"description": "Custom AI provider for internal models",
"enable": true
}'Povinná pole:
name(string): Zobrazovaný název vašeho poskytovateleslug(string): Jedinečný identifikátor (alfanumerický, s pomlčkami). V rámci vašeho účtu musí být jedinečný.base_url(string): HTTPS URL koncového bodu API vašeho poskytovatele. Musí začínathttps://.
Volitelná pole:
description(string): Popis poskytovatelelink(string): URL dokumentace poskytovateleenable(boolean): Zda je poskytovatel aktivní (výchozí:false)beta(boolean): Označení jako beta funkce (výchozí:false)curl_example(string): Ukázkový příkaz cURL pro použití poskytovatelejs_example(string): Ukázkový kód v JavaScriptu pro použití poskytovatele
Odpověď:
{
"success": true,
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "abc123def456",
"account_tag": "my-account",
"name": "My Custom Provider",
"slug": "some-provider",
"base_url": "https://api.myprovider.com",
"description": "Custom AI provider for internal models",
"enable": true,
"beta": false,
"logo": "Base64 encoded SVG logo",
"link": null,
"curl_example": null,
"js_example": null,
"created_at": 1700000000,
"modified_at": 1700000000
}
}Chcete-li vytvořit nového custom provider v dashboardu:
- Přihlaste se do Cloudflare dashboard ↗ a vyberte svůj účet.
- Přejděte na Compute & AI > AI Gateway > Custom Providers ↗.
- Vyberte Přidat vlastního poskytovatele.
- Zadejte následující informace:
- Provider Name: Zobrazovaný název vašeho poskytovatele
- Provider Slug: Jedinečný identifikátor (alfanumerický se spojovníky)
- Base URL: HTTPS URL pro koncový bod API vašeho poskytovatele (např.
https://api.myprovider.com/v1)
- Vyberte Save k vytvoření vlastního poskytovatele.
Vypsat custom providers
Načtěte všechny custom providers s volitelným filtrováním a stránkováním:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Parametry dotazu:
page(number): Číslo stránky (výchozí:1)per_page(number): Počet položek na stránku (výchozí:20, max:100)enable(boolean): Filtrování podle stavu povoleníbeta(boolean): Filtrování podle stavu betasearch(string): Hledání v polích id, name nebo slugorder_by(string): Pole a směr řazení (výchozí:"name ASC")
Příklady:
Vypište pouze povolené poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers?enable=true" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Vyhledejte konkrétní poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers?search=custom" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Odpověď:
{
"success": true,
"result": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My Custom Provider",
"slug": "some-provider",
"base_url": "https://api.myprovider.com",
"enable": true,
"created_at": 1700000000,
"modified_at": 1700000000
}
],
"result_info": {
"page": 1,
"per_page": 20,
"total_count": 1,
"total_pages": 1
}
}Chcete-li zobrazit všechny své custom providers:
- Přihlaste se do Cloudflare dashboard ↗ a vyberte svůj účet.
- Přejděte na Compute & AI > AI Gateway > Custom Providers ↗.
- Zobrazí se seznam všech vašich custom providers s jejich názvy, slugy, base URL adresami a stavem.
Získání konkrétního custom provideru
Načtěte podrobnosti o konkrétním custom provider podle jeho ID:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers/{provider_id}" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Odpověď:
{
"success": true,
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"account_id": "abc123def456",
"account_tag": "my-account",
"name": "My Custom Provider",
"slug": "some-provider",
"base_url": "https://api.myprovider.com",
"description": "Custom AI provider for internal models",
"enable": true,
"beta": false,
"logo": "Base64 encoded SVG logo",
"link": "https://docs.myprovider.com",
"curl_example": "curl -X POST https://api.myprovider.com/v1/chat ...",
"js_example": "fetch('https://api.myprovider.com/v1/chat', {...})",
"created_at": 1700000000,
"modified_at": 1700000000
}
}Aktualizovat custom provider
Aktualizujte existující custom provider. Všechna pole jsou volitelná, uveďte pouze ta, která chcete změnit:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers/{provider_id}" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Provider Name",
"enable": true,
"description": "Updated description"
}'Aktualizovatelná pole:
name(string): Zobrazovaný název poskytovateleslug(string): Identifikátor poskytovatelebase_url(string): URL koncového bodu API (musí být HTTPS)description(string): Popis poskytovatelelink(string): URL dokumentaceenable(boolean): Stav aktivitybeta(boolean): Příznak betacurl_example(string): Ukázkový příkaz cURLjs_example(string): Ukázkový kód v JavaScriptu
Příklady:
Povolte poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers/{provider_id}" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enable": true}'Aktualizovat URL poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers/{provider_id}" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"base_url": "https://api.newprovider.com"}'Chcete-li aktualizovat existující custom provider:
- Přihlaste se do Cloudflare dashboard ↗ a vyberte svůj účet.
- Přejděte na Compute & AI > AI Gateway > Custom Providers ↗.
- Najděte custom provider, který chcete aktualizovat, a vyberte Úprava.
- Aktualizujte pole, která chcete změnit (název, slug, základní URL atd.).
- Vyberte Save a změny se použijí.
Odstranění vlastního poskytovatele
Odstranění vlastního poskytovatele:
# Run `wrangler whoami` to get your account ID to replace $CLOUDFLARE_ACCOUNT_ID,
# and `wrangler auth token` to get an auth token to replace $CLOUDFLARE_API_TOKEN.
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai-gateway/custom-providers/{provider_id}" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Odpověď:
{
"success": true,
"result": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My Custom Provider",
"slug": "some-provider"
}
}Chcete-li odstranit custom provider:
- Přihlaste se do Cloudflare dashboard ↗ a vyberte svůj účet.
- Přejděte na Compute & AI > AI Gateway > Custom Providers ↗.
- Najděte custom provider, který chcete odstranit, a vyberte Smazat.
- Až se zobrazí výzva, potvrďte odstranění.
Používání custom providerů s AI Gateway
Jakmile vytvoříte custom provider, můžete požadavky směrovat přes AI Gateway jedním ze dvou způsobů: Unified API nebo koncový bod specifický pro poskytovatele. Při odkazování na vlastního poskytovatele kterýmkoli způsobem musíte slug opatřit prefixem custom-.
Jak funguje směrování URL
Když AI Gateway obdrží požadavek pro custom provider, sestaví cílovou (upstream) URL adresu kombinací nakonfigurovaného base_url cestou, která následuje za custom-{slug}/ v URL adrese brány.
base_url pole by mělo obsahovat pouze kořenovou doménu (nebo doména s pevnou předponou) rozhraní API poskytovatele. Jakékoli segmenty cesty specifické pro dané API (například /v1/chat/completions) patří do URL požadavku, nikoli do base_url.
Vzorec je následující:
Gateway URL: https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-{slug}/{provider-path}
Upstream URL: {base_url}/{provider-path}Vše za custom-{slug}/ v URL adrese vašeho požadavku se připojí přímo k base_url k vytvoření konečné upstream URL. To znamená, že {provider-path} může obsahovat více segmentů cesty, parametry dotazu nebo jakoukoli strukturu cesty, kterou váš poskytovatel vyžaduje.
Výběr mezi Unified API a koncovým bodem specifickým pro poskytovatele
Unified API (/compat) |
Koncový bod specifický pro poskytovatele | |
|---|---|---|
| Vhodné pro | Poskytovatelé s API kompatibilním s OpenAI | Poskytovatelé s libovolnou strukturou API |
| Formát požadavku | Musí dodržovat OpenAI /chat/completions schématu |
Používá nativní formát požadavku poskytovatele |
| Řízení cesty | Pevně nastaveno na /compat/chat/completions |
Plná kontrola nad upstream cestou |
| Jak zadat poskytovatele | model pole: custom-{slug}/{model-name} |
Cesta URL: /custom-{slug}/{path} |
Použijte Unified API pokud váš vlastní poskytovatel přijímá formát kompatibilní s OpenAI /chat/completions formát požadavku. Jde o nejjednodušší možnost, která dobře funguje s OpenAI SDK.
Použijte koncový bod specifický pro poskytovatele pokud váš vlastní poskytovatel používá nestandardní cestu API nebo formát požadavku. Díky tomu máte plnou kontrolu nad cestou URL i tělem požadavku odesílaného upstream poskytovateli.
Přes Unified API
Unified API odesílá požadavky na koncový bod chat completions poskytovatele ve formátu kompatibilním s OpenAI. Model zadejte ve formátu custom-{slug}/{model-name}.
# Run `wrangler auth token` to get an auth token to replace $CF_AIG_TOKEN for use with the API.
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/chat/completions \
-H "Authorization: Bearer $PROVIDER_API_KEY" \
-H "cf-aig-authorization: Bearer $CF_AIG_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "custom-some-provider/model-name",
"messages": [{"role": "user", "content": "Hello!"}]
}'Přes specifický koncový bod poskytovatele
Koncový bod specifický pro poskytovatele vám dává plnou kontrolu nad upstream cestou. Vše za custom-{slug}/ v URL adrese se připojí k base_url.
# Run `wrangler auth token` to get an auth token to replace $CF_AIG_TOKEN for use with the API.
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-some-provider/v1/chat/completions \
-H "Authorization: Bearer $PROVIDER_API_KEY" \
-H "cf-aig-authorization: Bearer $CF_AIG_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "model-name",
"messages": [{"role": "user", "content": "Hello!"}]
}'Pokud base_url je https://api.myprovider.com, tento požadavek se přeposílá na: https://api.myprovider.com/v1/chat/completions
Příklady
Následující příklady ukazují, jak nakonfigurovat base_url a sestavte URL adresy požadavků pro různé typy poskytovatelů.
Příklad 1: poskytovatel kompatibilní s OpenAI (standardní /v1/ cesta)
Mnoho poskytovatelů dodržuje konvenci OpenAI a hostuje své API na {domain}/v1/chat/completions.
Konfigurace:
slug:my-openai-compatbase_url:https://api.example-provider.com
Koncový bod specifický pro poskytovatele:
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-my-openai-compat/v1/chat/completions \
-H "Authorization: Bearer $PROVIDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "example-model",
"messages": [{"role": "user", "content": "Hello!"}]
}'Mapování URL:
| Komponenta | Hodnota |
|---|---|
| URL gateway | https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-my-openai-compat/v1/chat/completions |
base_url |
https://api.example-provider.com |
| Cesta poskytovatele | /v1/chat/completions |
| Upstream URL | https://api.example-provider.com/v1/chat/completions |
Protože je tento poskytovatel kompatibilní s OpenAI, můžete použít také Unified API:
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/chat/completions \
-H "Authorization: Bearer $PROVIDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "custom-my-openai-compat/example-model",
"messages": [{"role": "user", "content": "Hello!"}]
}'Příklad 2: poskytovatel s nestandardní cestou API
Někteří poskytovatelé používají cesty API, které se neřídí /v1/ konvenci. Například poskytovatel, jehož chat endpoint se nachází na https://api.custom-ai.com/api/coding/paas/v4/chat/completions.
Konfigurace:
slug:custom-aibase_url:https://api.custom-ai.com
Koncový bod specifický pro poskytovatele:
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-custom-ai/api/coding/paas/v4/chat/completions \
-H "Authorization: Bearer $PROVIDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "custom-ai-model",
"messages": [{"role": "user", "content": "Hello!"}]
}'Mapování URL:
| Komponenta | Hodnota |
|---|---|
| URL gateway | https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-custom-ai/api/coding/paas/v4/chat/completions |
base_url |
https://api.custom-ai.com |
| Cesta poskytovatele | /api/coding/paas/v4/chat/completions |
| Upstream URL | https://api.custom-ai.com/api/coding/paas/v4/chat/completions |
Příklad 3: self-hosted model s prefixem cesty
Pokud svůj model hostujete za reverzní proxy nebo na platformě přidávající prefix cesty, uveďte pouze pevnou část prefixu v base_url pokud ji sdílejí všechny vaše koncové body. V opačném případě ponechte base_url pouze jako doménu.
Konfigurace (pouze doména base_url):
slug:internal-llmbase_url:https://ml.internal.example.com
Koncový bod specifický pro poskytovatele:
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-internal-llm/serving/models/my-model:predict \
-H "Authorization: Bearer $INTERNAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "Summarize the following text:"}]
}'Mapování URL:
| Komponenta | Hodnota |
|---|---|
| URL gateway | https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-internal-llm/serving/models/my-model:predict |
base_url |
https://ml.internal.example.com |
| Cesta poskytovatele | /serving/models/my-model:predict |
| Upstream URL | https://ml.internal.example.com/serving/models/my-model:predict |
Příklad 4: poskytovatel používající OpenAI SDK s vlastní základní URL adresou
Pokud pomocí OpenAI SDK připojujete custom provider přes AI Gateway, nastavte u SDK base_url na cestu koncového bodu specifickou pro poskytovatele vaší gateway (včetně prefixu verze API, který váš poskytovatel očekává).
Konfigurace:
slug:alt-providerbase_url:https://api.alt-provider.com
Python (OpenAI SDK):
from openai import OpenAI
client = OpenAI(
api_key="your-provider-api-key",
base_url="https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-alt-provider/v1",
default_headers={
"cf-aig-authorization": "Bearer {cf_aig_token}",
},
)
# The SDK appends /chat/completions to the base_url automatically.
# Final upstream URL: https://api.alt-provider.com/v1/chat/completions
response = client.chat.completions.create(
model="alt-model-v2",
messages=[{"role": "user", "content": "Hello!"}],
)Mapování URL:
| Komponenta | Hodnota |
|---|---|
SDK base_url |
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-alt-provider/v1 |
| SDK připojuje | /chat/completions |
| Úplná URL adresa gateway | https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/custom-alt-provider/v1/chat/completions |
Provider base_url |
https://api.alt-provider.com |
| Cesta poskytovatele | /v1/chat/completions |
| Upstream URL | https://api.alt-provider.com/v1/chat/completions |
Časté chyby
409 Conflict - Duplicate slug
{
"success": false,
"errors": [
{
"code": 1003,
"message": "A custom provider with this slug already exists",
"path": ["body", "slug"]
}
]
}Každý vlastní provider slug musí být v rámci vašeho účtu jedinečný. Zvolte jiný slug nebo aktualizujte stávajícího poskytovatele.
404 Not Found
{
"success": false,
"errors": [
{
"code": 1004,
"message": "Custom Provider not found"
}
]
}Zadané ID poskytovatele neexistuje, nebo k němu nemáte přístup. Zkontrolujte ID poskytovatele a své přihlašovací údaje pro autentizaci.
400 Bad Request - Invalid base_url
{
"success": false,
"errors": [
{
"code": 1002,
"message": "base_url must be a valid HTTPS URL starting with https://",
"path": ["body", "base_url"]
}
]
} base_url pole musí být platná adresa URL s protokolem HTTPS. Adresy URL s protokolem HTTP nejsou z bezpečnostních důvodů podporovány.
404 při odesílání požadavků na vlastního poskytovatele
Pokud od upstream poskytovatele obdržíte chybu 404, nejčastější příčinou je nesprávné mapování cest. Ověřte, že:
- Váš
base_urlje nastavena na hodnotu poskytovatele kořenová doména (napříkladhttps://api.provider.com) namísto zahrnutí segmentů cesty API. - URL adresa vašeho požadavku obsahuje úplná cesta API po
custom-{slug}/. Pokud je například koncový bod na straně poskytovatelehttps://api.provider.com/api/v2/chat, adresa URL vaší brány by měla končit na/custom-{slug}/api/v2/chat. - Cesta neobsahuje žádný duplicitní ani chybějící segment. Častou chybou je zahrnutí
/v1v oboubase_urla cestu požadavku, takže upstream server obdrží/v1/v1/chat/completions.
Osvědčené postupy
- Používejte popisné slugy: Zvolte slugy, které jasně identifikují poskytovatele (např.
internal-gpt,regional-ai) - Zdokumentujte své integrace: Použijte
curl_exampleajs_examplepole pro uvedení příkladů použití - Povolujte postupně: Otestujte pomocí
enable: falsepřed aktivací poskytovatele - Sledovat využití: Používejte analytiku AI Gateway ke sledování požadavků na vaše vlastní poskytovatele
- Zabezpečte své koncové body: Ujistěte se, že základní URL adresa vašeho vlastního poskytovatele implementuje řádnou autentizaci a autorizaci
- Použít BYOK: Bezpečně ukládejte klíče API poskytovatele pomocí BYOK místo jejich uvádění v každém požadavku
Omezení
- Vlastní poskytovatelé jsou specifičtí pro daný účet a nesdílejí se mezi účty Cloudflare
-
base_urlmusí používat HTTPS (HTTP není podporováno) - Provider slugy musí být v rámci každého účtu jedinečné
- Nastavení mezipaměti a omezování počtu požadavků platí globálně pro poskytovatele, ne pro jednotlivé modely