INTEGRITY Dokumentace

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í

Než začnete

Předpoklady

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:

  1. Přejděte na Stránka API tokenů v Cloudflare dashboardu
  2. Klikněte na Create Token
  3. Vyberte Custom Token a přidejte následující oprávnění:
    • AI Gateway - Edit
  4. Klikněte na Pokračovat k souhrnu a poté Create Token
  5. Zkopírujte token, použijete ho v Authorization: Bearer $CLOUDFLARE_API_TOKEN hlavička

Vytvořit custom provider

Chcete-li vytvořit nového custom provider pomocí API:

  1. Získejte svůj ID účtu a Account Tag.

  2. Odešlete POST požadavek pro vytvoření nového vlastního poskytovatele:

Vytvořit Custom Provider
# 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 poskytovatele
  • slug (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čínat https://.

Volitelná pole:

  • description (string): Popis poskytovatele
  • link (string): URL dokumentace poskytovatele
  • enable (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í poskytovatele
  • js_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:

  1. Přihlaste se do Cloudflare dashboard a vyberte svůj účet.
  2. Přejděte na Compute & AI > AI Gateway > Custom Providers.
  3. Vyberte Přidat vlastního poskytovatele.
  4. 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)
  5. 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:

Vypsat všechny 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" \
  -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 beta
  • search (string): Hledání v polích id, name nebo slug
  • order_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:

  1. Přihlaste se do Cloudflare dashboard a vyberte svůj účet.
  2. Přejděte na Compute & AI > AI Gateway > Custom Providers.
  3. 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:

Získání poskytovatele podle 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:

Aktualizovat 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 '{
    "name": "Updated Provider Name",
    "enable": true,
    "description": "Updated description"
  }'

Aktualizovatelná pole:

  • name (string): Zobrazovaný název poskytovatele
  • slug (string): Identifikátor poskytovatele
  • base_url (string): URL koncového bodu API (musí být HTTPS)
  • description (string): Popis poskytovatele
  • link (string): URL dokumentace
  • enable (boolean): Stav aktivity
  • beta (boolean): Příznak beta
  • curl_example (string): Ukázkový příkaz cURL
  • js_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:

  1. Přihlaste se do Cloudflare dashboard a vyberte svůj účet.
  2. Přejděte na Compute & AI > AI Gateway > Custom Providers.
  3. Najděte custom provider, který chcete aktualizovat, a vyberte Úprava.
  4. Aktualizujte pole, která chcete změnit (název, slug, základní URL atd.).
  5. Vyberte Save a změny se použijí.

Odstranění vlastního poskytovatele

Odstranění vlastního poskytovatele:

Odstranění 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:

  1. Přihlaste se do Cloudflare dashboard a vyberte svůj účet.
  2. Přejděte na Compute & AI > AI Gateway > Custom Providers.
  3. Najděte custom provider, který chcete odstranit, a vyberte Smazat.
  4. 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}.

Požadavek pomocí custom provider přes Unified API
# 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.

Přímý koncový bod poskytovatele
# 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:

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:

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):

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:

Python (OpenAI SDK):

Používání OpenAI SDK s custom providerem
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:

  1. Váš base_url je nastavena na hodnotu poskytovatele kořenová doména (například https://api.provider.com) namísto zahrnutí segmentů cesty API.
  2. URL adresa vašeho požadavku obsahuje úplná cesta API po custom-{slug}/. Pokud je například koncový bod na straně poskytovatele https://api.provider.com/api/v2/chat, adresa URL vaší brány by měla končit na /custom-{slug}/api/v2/chat.
  3. Cesta neobsahuje žádný duplicitní ani chybějící segment. Častou chybou je zahrnutí /v1 v obou base_url a cestu požadavku, takže upstream server obdrží /v1/v1/chat/completions.

Osvědčené postupy

  1. Používejte popisné slugy: Zvolte slugy, které jasně identifikují poskytovatele (např. internal-gpt, regional-ai)
  2. Zdokumentujte své integrace: Použijte curl_example a js_example pole pro uvedení příkladů použití
  3. Povolujte postupně: Otestujte pomocí enable: false před aktivací poskytovatele
  4. Sledovat využití: Používejte analytiku AI Gateway ke sledování požadavků na vaše vlastní poskytovatele
  5. Zabezpečte své koncové body: Ujistěte se, že základní URL adresa vašeho vlastního poskytovatele implementuje řádnou autentizaci a autorizaci
  6. 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í