← Cloudflare AI Gateway / ai-gateway / features / dynamic-routing
Konfigurace JSON
Namísto použití UI editoru dashboardu k definování grafu Routes, můžete tak učinit pomocí REST API. Routes jsou interně reprezentovány pomocí jednoduché struktury JSON:
{
"id": "<route id>",
"name": "<route name>",
"elements": [<array of elements>]
}Podporované prvky
Dynamické směrování podporuje několik typů prvků, které lze kombinovat a vytvářet tak sofistikované toky směrování. Každý prvek má vlastní vstupy, výstupy a možnosti konfigurace.
Start Element
Označuje začátek route. Každý route musí začínat elementem Start.
- Vstupy: Žádné
- Výstupy:
next: Přeposílá nezměněný požadavek na další prvek
{
"id": "<id>",
"type": "start",
"outputs": {
"next": { "elementId": "<id>" }
}
}Podmíněný prvek (If/Else)
Vyhodnotí podmínku na základě parametrů požadavku a podle výsledku požadavek přesměruje.
- Vstupy: Požadavek
- Výstupy:
true: Přeposílá požadavek na zadaný prvek, pokud se podmínka vyhodnotí jako pravdiváfalse: Přeposílá požadavek na zadaný prvek, pokud se podmínka vyhodnotí jako nepravdivá
conditions podporuje operátory podobné MongoDB, například $eq, $ne, $in, $and, a $or.
{
"id": "<id>",
"type": "conditional",
"properties": {
"conditions": {
"metadata.plan": { "$eq": "free" }
}
},
"outputs": {
"true": { "elementId": "<id>" },
"false": { "elementId": "<id>" }
}
}Procentuální rozdělení
Směruje požadavky pravděpodobnostně mezi několika výstupy, což se hodí pro A/B testování a postupné zavádění.
- Vstupy: Požadavek
- Výstupy: Až 5 pojmenovaných procentuálních výstupů
- Každý výstupní klíč (například
"10%") je pravděpodobnost dané větve a klíče musí dát dohromady 100%
- Každý výstupní klíč (například
{
"id": "<id>",
"type": "percentage",
"outputs": {
"10%": { "elementId": "<id>" },
"40%": { "elementId": "<id>" },
"50%": { "elementId": "<id>" }
}
}Rate/Budget Limit
Použijte limity na základě metadat požadavku. Podporuje limity založené na počtu i na nákladech.
- Vstupy: Požadavek
- Výstupy:
success: Přeposílá požadavek na zadaný prvek, pokud požadavek nepodléhá omezení frekvencefallback: Volitelný výstup pro požadavky omezené frekvencí (pokud není zadán, trasa se ukončí)
Vlastnosti:
limitType: „count“ nebo „cost“key: Pole požadavku použité pro omezení frekvence (např. "metadata.user_id")limit: Maximální povolený počet požadavků/nákladywindow: Časové okno v sekundách
{
"id": "<id>",
"type": "rate",
"properties": {
"limitType": "count",
"key": "metadata.user_id",
"limit": 100,
"window": 3600
},
"outputs": {
"success": { "elementId": "node_model_workers_ai" },
"fallback": { "elementId": "node_model_openai_mini" }
}
}Model
Provede inferenci pomocí zadaného modelu a poskytovatele s konfigurovatelným časovým limitem a nastavením opakování.
- Vstupy: Požadavek
- Výstupy:
success: Přeposílá požadavek na zadaný prvek, pokud model úspěšně zahájí streamování odpovědifallback: Volitelný výstup, pokud model selže po všech pokusech o opakování nebo vyprší časový limit
Vlastnosti:
provider: poskytovatel AI (např. „openai“, „anthropic“)model: Konkrétní název modelutimeout: Časový limit požadavku v milisekundáchretries: Počet pokusů o opakování
{
"id": "<id>",
"type": "model",
"properties": {
"provider": "openai",
"model": "gpt-4o-mini",
"timeout": 60000,
"retries": 4
},
"outputs": {
"success": { "elementId": "<id>" },
"fallback": { "elementId": "<id>" }
}
}Koncový prvek
Označuje konec route. Vrací poslední úspěšnou odpověď modelu nebo chybu, pokud žádná odpověď modelu nebyla vygenerována.
- Vstupy: Požadavek
- Výstupy: Žádné (zadejte prázdné
outputsobjekt)
{
"id": "<id>",
"type": "end",
"outputs": {}
}