Przegląd
Workflow to niezmienne wersje polityk workflow przechowywane w gatewayu i dopasowywane do każdego requestu. Obecnie sterują zachowaniem należącym do gatewaya, takim jak:- cache
- budżety
- logowanie audytowe
- śledzenie użycia
- guardrails: które instancje pluginów są uruchamiane, w której fazie i w jakiej kolejności
- failover tras tłumaczonych
Pola zakresu
Zakres workflow definiują te pola:scope_provider_namescope_modelscope_user_path
scope_provider_name to nazwa skonfigurowanej instancji providera, a nie typ
providera.
Przykłady:
- typ providera:
openai - nazwa providera:
openai_primary
Pierwszeństwo dopasowania
Dopasowanie workflow zaczyna się od ścieżki użytkownika. Dla requestu zuser_path=/team/team1/user gateway najpierw sprawdza kandydatów
z zakresem ścieżki, od najgłębszej ścieżki do korzenia:
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
- workflow z głębszym
user_pathwygrywa z szerszym workflow tylko dla providera lub dla providera i modelu - na tej samej głębokości ścieżki provider+model jest bardziej szczegółowy niż sam provider
- jeśli nie pasuje żaden workflow z zakresem ścieżki, gateway sięga kolejno po provider+model, potem provider, a na końcu global
Kroki guardrails
Payload workflow wymienia instancje guardrails do uruchomienia jakosteps.
Każdy krok wskazuje instancję (ref), fazę, w której działa, i swoją pozycję:
phasetoprompt(domyślnie, gdy pominięte),responselubstream. Plugin instancji musi implementować tę fazę;GET /admin/workflows/guardrailswymienia każdą instancję wraz z jejphases.- W obrębie fazy kroki są uruchamiane w kolejności rosnącego
step(nieujemna liczba całkowita); kroki o równych wartościachstepdziałają równolegle. Ten samstepmoże współdzielić najwyżej jedna instancja edytująca treść. - Ten sam
refmoże wystąpić raz na fazę. features.guardrails: falsewyłącza wszystkie kroki workflow.
"schema_version": 1 z "guardrails": [{"ref", "step"}])
są nadal akceptowane i kompilowane jako kroki fazy prompt. Zapisane workflow w
wersji 1 są zwracane bez zmian; dashboard zawsze zapisuje wersję 2.
Widoki workflow (GET /admin/workflows, GET /admin/workflows/:id) udostępniają
hash każdego skompilowanego łańcucha jako chain_hashes ({"prompt": "...", "response": "...", "stream": "..."}).
Tożsamość skompilowanego łańcucha jest częścią obu kluczy cache’u odpowiedzi,
więc zmiana guardraila w dowolnej fazie unieważnia odpowiedzi z cache’u
wygenerowane według starych reguł, a dwa workflow z różnymi łańcuchami nigdy
nie współdzielą odpowiedzi z cache’u.
Przykłady
Dziedziczenie ścieżki
Jeśli masz:- workflow A:
scope_user_path=/team - workflow B:
scope_user_path=/team/team1
user_path=/team/team1/user, wygrywa workflow B.
Jeśli workflow B nie istnieje, wygrywa workflow A.
Zawężanie do nazwy providera
Jeśli masz dwóch providerów OpenAI:openai_primaryopenai_backup
scope_provider_name=openai_primaryscope_provider_name=openai_backup
openai, to różne zakresy workflow.
Przykład API
Utwórz workflow ograniczony do jednej skonfigurowanej nazwy providera, jednego modelu i jednego poddrzewa ścieżki użytkownika:Uwagi
scope_modelwymagascope_provider_namescope_user_pathjest normalizowane do kanonicznej postaci ze slashami- zarządzane klucze API mogą nadpisać nagłówek ścieżki użytkownika z requestu; dopasowanie workflow używa efektywnej ścieżki użytkownika requestu
- egzekwowanie budżetów działa tylko wtedy, gdy włączone są zarówno globalna funkcja budżetów, jak i funkcja
budgetdopasowanego workflow; zobacz Budżety - każdy
refmusi wskazywać istniejącą instancję guardraila; guardraila, do którego odwołuje się aktywny workflow, nie można usunąć