INTEGRITY Dokumentace

Universal Endpoint (zastaralý)

Universal Endpoint vám umožňuje kontaktovat všechny poskytovatele prostřednictvím jednoho koncového bodu.

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}

Payload očekává pole zpráv. Každá zpráva je objekt s následujícími parametry:

Příklad cURL

Požadavek
curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id} \
  --header 'Content-Type: application/json' \
  --data '[
  {
    "provider": "workers-ai",
    "endpoint": "@cf/meta/llama-3.1-8b-instruct",
    "headers": {
      "Authorization": "Bearer {cloudflare_token}",
      "Content-Type": "application/json"
    },
    "query": {
      "messages": [
        {
          "role": "system",
          "content": "You are a friendly assistant"
        },
        {
          "role": "user",
          "content": "What is Cloudflare?"
        }
      ]
    }
  },
  {
    "provider": "openai",
    "endpoint": "chat/completions",
    "headers": {
      "Authorization": "Bearer {open_ai_token}",
      "Content-Type": "application/json"
    },
    "query": {
      "model": "gpt-4o-mini",
      "stream": true,
      "messages": [
        {
          "role": "user",
          "content": "What is Cloudflare?"
        }
      ]
    }
  }
]'

Výše uvedený příklad odešle požadavek na Workers AI Inference API. Pokud selže, přejde na OpenAI. Do pole můžete přidat další objekt a nastavit tak libovolný počet fallbacků.

Fallbacks

Fallbacks modelu nebo poskytovatele můžete zadat pro zvládání selhání požadavků a zajištění spolehlivosti. Pole payload určuje pořadí fallbacků: pokud první poskytovatel selže, požadavek přejde na další položku v poli. Další podrobnosti najdete v Fallbacks.

Cloudflare ve výchozím nastavení spustí váš fallback, pokud požadavek na model vrátí chybu. Můžete také nastavit časové limity požadavků k vyvolání záložních poskytovatelů, pokud poskytovatel odpovídá příliš dlouho.

Hlavička odpovědi (cf-aig-step)

Při použití fallbacks bude hlavička odpovědi cf-aig-step udává, který model požadavek úspěšně zpracoval, a to vrácením čísla kroku:

Časové limity požadavků

Časový limit požadavku spustí náhradní řešení, pokud poskytovatel odpovídá příliš dlouho.

Časový limit nakonfigurujte nastavením requestTimeout vlastnost (v milisekundách) v rámci pro poskytovatele specifických config objekt. Každý poskytovatel může mít jiný requestTimeout hodnota.

Timeout se odvíjí od okamžiku, kdy dorazí první část odpovědi. Pokud se první část odpovědi vrátí ve stanoveném čase (například při streamování odpovědi), váš gateway na odpověď počká.

Příklad časového limitu požadavku
curl 'https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}' \
	--header 'Content-Type: application/json' \
	--data '[
    {
        "provider": "workers-ai",
        "endpoint": "@cf/meta/llama-3.1-8b-instruct",
        "headers": {
            "Authorization": "Bearer {cloudflare_token}",
            "Content-Type": "application/json"
        },
        "config": {
            "requestTimeout": 1000
        },
        "query": {
            "messages": [
                {
                    "role": "system",
                    "content": "You are a friendly assistant"
                },
                {
                    "role": "user",
                    "content": "What is Cloudflare?"
                }
            ]
        }
    },
    {
        "provider": "workers-ai",
        "endpoint": "@cf/meta/llama-3.1-8b-instruct-fast",
        "headers": {
            "Authorization": "Bearer {cloudflare_token}",
            "Content-Type": "application/json"
        },
        "query": {
            "messages": [
                {
                    "role": "system",
                    "content": "You are a friendly assistant"
                },
                {
                    "role": "user",
                    "content": "What is Cloudflare?"
                }
            ]
        },
				"config": {
            "requestTimeout": 3000
        },
    }
]'

Opakování požadavků

Universal Endpoint podporuje automatické opakování u neúspěšných požadavků, maximálně pětkrát. Opakování proběhne dříve, než se spustí jakékoli nakonfigurované fallbacky.

Nastavení opakování nakonfigurujte pomocí následujících vlastností ve specifickém prvku poskytovatele config:

config:{
	maxAttempts?: number;
	retryDelay?: number;
	backoff?: "constant" | "linear" | "exponential";
}

Při posledním pokusu o opakování počká váš gateway na dokončení požadavku bez ohledu na to, jak dlouho to trvá. Každý poskytovatel může mít jiná nastavení opakování.

Příklad opakování požadavku
curl 'https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}' \
	--header 'Content-Type: application/json' \
	--data '[
    {
        "provider": "workers-ai",
        "endpoint": "@cf/meta/llama-3.1-8b-instruct",
        "headers": {
            "Authorization": "Bearer {cloudflare_token}",
            "Content-Type": "application/json"
        },
        "config": {
            "maxAttempts": 2,
						"retryDelay": 1000,
						"backoff": "constant"
        },
        "query": {
            "messages": [
                {
                    "role": "system",
                    "content": "You are a friendly assistant"
                },
                {
                    "role": "user",
                    "content": "What is Cloudflare?"
                }
            ]
        }
    },
    {
        "provider": "workers-ai",
        "endpoint": "@cf/meta/llama-3.1-8b-instruct-fast",
        "headers": {
            "Authorization": "Bearer {cloudflare_token}",
            "Content-Type": "application/json"
        },
        "query": {
            "messages": [
                {
                    "role": "system",
                    "content": "You are a friendly assistant"
                },
                {
                    "role": "user",
                    "content": "What is Cloudflare?"
                }
            ]
        },
				"config": {
            "maxAttempts": 4,
						"retryDelay": 1000,
						"backoff": "exponential"
        },
    }
]'

WebSockets API beta

K Universal Endpoint lze také přistupovat přes WebSockets API které poskytuje jediné trvalé připojení umožňující nepřetržitou komunikaci. Toto API podporuje všechny poskytovatele AI připojené k AI Gateway, včetně těch, kteří nativně nepodporují WebSockets.

Příklad WebSockets

import WebSocket from "ws";
const ws = new WebSocket(
	"wss://gateway.ai.cloudflare.com/v1/my-account-id/my-gateway/",
	{
		headers: {
			"cf-aig-authorization": "Bearer AI_GATEWAY_TOKEN",
		},
	},
);

ws.send(
	JSON.stringify({
		type: "universal.create",
		request: {
			eventId: "my-request",
			provider: "workers-ai",
			endpoint: "@cf/meta/llama-3.1-8b-instruct",
			headers: {
				Authorization: "Bearer WORKERS_AI_TOKEN",
				"Content-Type": "application/json",
			},
			query: {
				prompt: "tell me a joke",
			},
		},
	}),
);

ws.on("message", function incoming(message) {
	console.log(message.toString());
});

Příklad Workers Binding

{
	"ai": {
		"binding": "AI",
	},
}
[ai]
binding = "AI"
src/index.ts
type Env = {
	AI: Ai;
};

export default {
	async fetch(request: Request, env: Env) {
		return env.AI.gateway("my-gateway").run({
			provider: "workers-ai",
			endpoint: "@cf/meta/llama-3.1-8b-instruct",
			headers: {
				authorization: "Bearer my-api-token",
			},
			query: {
				prompt: "tell me a joke",
			},
		});
	},
};

Hierarchie konfigurace hlaviček

Universal Endpoint vám umožňuje nastavit záložní modely nebo poskytovatele a přizpůsobit hlavičky pro každého poskytovatele nebo požadavek. Hlavičky můžete konfigurovat na třech úrovních:

  1. Úroveň poskytovatele: Hlavičky specifické pro konkrétního poskytovatele.
  2. Úroveň požadavku: Hlavičky zahrnuté v jednotlivých požadavcích.
  3. Nastavení Gateway: Výchozí hlavičky nakonfigurované v dashboardu vaší gateway.

Protože stejná nastavení lze konfigurovat na více místech, AI Gateway používá hierarchii, která určuje, jaká konfigurace má přednost:

Tato hierarchie zajišťuje konzistentní chování a upřednostňuje nejkonkrétnější konfigurace. Pro jemné doladění použijte hlavičky na úrovni poskytovatele a na úrovni požadavku, obecné výchozí hodnoty pak zajistí nastavení gateway.

Příklad hierarchie

Tento příklad ukazuje, jak hlavičky nastavené na různých úrovních ovlivňují chování ukládání do mezipaměti:

To ukazuje, jak mají hlavičky na úrovni poskytovatele přednost před hlavičkami na úrovni požadavku, což umožňuje podrobně řídit chování ukládání do mezipaměti.

curl https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id} \
  --header 'Content-Type: application/json' \
  --header 'cf-aig-cache-ttl: 3600' \
  --data '[
    {
      "provider": "workers-ai",
      "endpoint": "@cf/meta/llama-3.1-8b-instruct",
      "headers": {
        "Authorization": "Bearer {cloudflare_token}",
        "Content-Type": "application/json"
      },
      "query": {
        "messages": [
          {
            "role": "system",
            "content": "You are a friendly assistant"
          },
          {
            "role": "user",
            "content": "What is Cloudflare?"
          }
        ]
      }
    },
    {
      "provider": "openai",
      "endpoint": "chat/completions",
      "headers": {
        "Authorization": "Bearer {open_ai_token}",
        "Content-Type": "application/json",
        "cf-aig-cache-ttl": "0"
      },
      "query": {
        "model": "gpt-4o-mini",
        "stream": true,
        "messages": [
          {
            "role": "user",
            "content": "What is Cloudflare?"
          }
        ]
      }
    }
  ]'