Übersicht
Workflows sind unveränderliche Versionen von Workflow-Richtlinien, die im Gateway gespeichert und pro Request zugeordnet werden. Derzeit steuern sie Verhalten, das in der Verantwortung des Gateways liegt, etwa:- Cache
- Budgets
- Audit-Logging
- Nutzungserfassung
- Guardrails: welche Plugin-Instanzen laufen, in welcher Phase und in welcher Reihenfolge
- Failover für übersetzte Routen
Scope-Felder
Der Scope eines Workflows wird durch diese Felder definiert:scope_provider_namescope_modelscope_user_path
scope_provider_name ist der Name der konfigurierten Provider-Instanz, nicht der Provider-Typ.
Beispiele:
- Provider-Typ:
openai - Provider-Name:
openai_primary
Rangfolge beim Matching
Beim Matching von Workflows hat der User Path Vorrang. Für einen Request mituser_path=/team/team1/user prüft das Gateway zuerst die pfadbezogenen Kandidaten vom tiefsten Pfad bis zum Root:
provider_name + model + /team/team1/userprovider_name + /team/team1/user/team/team1/userprovider_name + model + /team/team1provider_name + /team/team1/team/team1provider_name + model + /teamprovider_name + /team/teamprovider_name + model + /provider_name + //provider_name + modelprovider_nameglobal
- ein Workflow mit tieferem
user_pathschlägt einen allgemeineren Workflow, der nur auf Provider oder auf Provider+Modell eingegrenzt ist - bei gleicher Pfadtiefe ist Provider+Modell spezifischer als nur Provider
- passt kein pfadbezogener Workflow, fällt das Gateway auf Provider+Modell zurück, dann auf Provider, dann auf global
Guardrail-Steps
Der Workflow-Payload listet die auszuführenden Guardrail-Instanzen alssteps
auf. Jeder Step benennt eine Instanz (ref), die Phase, in der sie läuft, und
ihre Position:
phaseistprompt(Standard, wenn weggelassen),responseoderstream. Das Plugin der Instanz muss diese Phase implementieren;GET /admin/workflows/guardrailslistet jede Instanz mit ihrenphasesauf.- Innerhalb einer Phase laufen die Steps in aufsteigender Reihenfolge von
step(eine nicht negative Ganzzahl); gleichestep-Werte laufen parallel. Höchstens eine inhaltsverändernde Instanz darf sich einenstepteilen. - Dieselbe
refdarf einmal pro Phase vorkommen. features.guardrails: falsedeaktiviert jeden Step des Workflows.
"schema_version": 1 mit "guardrails": [{"ref", "step"}])
werden weiterhin akzeptiert und als Steps der Prompt-Phase kompiliert.
Gespeicherte Workflows der Version 1 werden unverändert zurückgegeben; das
Dashboard schreibt immer Version 2.
Workflow-Ansichten (GET /admin/workflows, GET /admin/workflows/:id) geben den
Hash jeder kompilierten Kette als chain_hashes aus ({"prompt": "...", "response": "...", "stream": "..."}).
Die Identität der kompilierten Kette ist Teil beider Response-Cache-Keys. Eine
Änderung an einem Guardrail in einer beliebigen Phase macht daher gecachte
Antworten ungültig, die unter den alten Regeln entstanden sind, und zwei
Workflows mit unterschiedlichen Ketten teilen sich nie gecachte Antworten.
Beispiele
Pfadvererbung
Angenommen, Sie haben:- Workflow A:
scope_user_path=/team - Workflow B:
scope_user_path=/team/team1
user_path=/team/team1/user, dann gewinnt Workflow B.
Existiert Workflow B nicht, gewinnt Workflow A.
Eingrenzung nach Provider-Namen
Wenn Sie zwei OpenAI-Provider haben:openai_primaryopenai_backup
scope_provider_name=openai_primaryscope_provider_name=openai_backup
openai haben, sind es unterschiedliche Workflow-Scopes.
API-Beispiel
Erstellen Sie einen Workflow, der auf einen konfigurierten Provider-Namen, ein Modell und einen User-Path-Teilbaum eingegrenzt ist:Hinweise
scope_modelerfordertscope_provider_namescope_user_pathwird in die kanonische Form mit Schrägstrichen normalisiert- verwaltete API-Keys können den User-Path-Header des Requests überschreiben; das Workflow-Matching verwendet den effektiven User Path des Requests
- Budgets werden nur durchgesetzt, wenn sowohl das globale Budget-Feature als auch das
budget-Feature des zugeordneten Workflows aktiviert sind; siehe Budgets - jede
refmuss eine existierende Guardrail-Instanz benennen; ein Guardrail, auf den ein aktiver Workflow verweist, kann nicht gelöscht werden