1. Czym jest silnik guardrails
Guardrail to nazwana polityka treści w zakresie przestrzeni roboczej — uporządkowana lista reguł, które brama uruchamia wobec wejścia żądania i wyjścia modelu. Zapisujesz guardrail raz, wiążesz z nim dowolny klucz API (lub ustawiasz jeden jako domyślny dla przestrzeni roboczej), a brama sprawdza każde wywołanie przed i po modelu nadrzędnym. Każda reguła decyduje o jednej rzeczy — czego szukać (typ reguły), gdzie szukać (etap: wejście żądania lub wyjście modelu) i co z tym zrobić (akcja: block, mask lub flag). Silnik uruchamia każdą mającą zastosowanie regułę i składa wyniki w jedną decyzję. Edycja guardrail wchodzi w życie na każdym powiązanym z nim kluczu przy następnym wywołaniu. Bez ponownego wdrożenia. Bez zmian w kodzie. Bez aktualizacji SDK. Polityka żyje w bramie, nie w aplikacji — twoja aplikacja dalej woła/v1/chat/completions dokładnie jak wcześniej.
Silnik jest deterministyczny i wolny od zależności dla wbudowanych
typów reguł: czyste dopasowanie łańcuchów i regex bez wywołania
sieciowego, bezpieczne do uruchamiania na gorącej ścieżce relay.
Zaawansowane reguły (zewnętrzni dostawcy, sędzia LLM, kontekstowe
ugruntowanie) wychodzą na zewnątrz i są dyspozytowane współbieżnie, więc
wolne sprawdzenie nigdy nie serializuje się za innym.
Guardrails są w zakresie przestrzeni roboczej — każdy członek widzi
guardrails swojej przestrzeni; nic nie przekracza granic najemcy.
2. Szybki start — sprawdź swoje pierwsze żądanie w 5 krokach
Utwórz guardrail
/console/guardrails i kliknij New
guardrail. Nazwij go pii-shield. Dodaj jedną regułę:- Typ: Wykrywanie PII
- Etap: Wejście (żądanie)
- Akcja: Mask — redaguj dopasowanie
- Encje:
email,phone,ssn
Przetestuj w piaskownicy
input i uruchom. Piaskownica pokazuje
werdykt i wyrenderowany tekst — email me at [EMAIL] — bez wysyłania
czegokolwiek w górę.Powiąż klucz
/console/token, utwórz lub edytuj klucz API i wybierz
pii-shield z rozwijanej listy Guardrail. Powiązanie żyje na
kluczu w bramie.Wyślij żądanie
[EMAIL] przed przesłaniem. Model nadrzędny
nigdy nie widzi adresu.3. Pojęcia: guardrails, reguły, etapy, akcje
| Pojęcie | Definicja |
|---|---|
| Guardrail | Nazwana polityka w zakresie przestrzeni roboczej. Identyfikator: name (≤ 64 znaków). Ma enabled, is_default oraz blob JSON rules. |
| Reguła | Jedno sprawdzenie wewnątrz polityki: type, stage, action, plus pola specyficzne dla typu. Reguły biegną po kolei. |
| Etap | input (żądanie), output (odpowiedź modelu) lub both. |
| Akcja | block (odrzuć wywołanie), mask (redaguj dopasowanie) lub flag (tylko log — obserwuj bez zmiany ruchu). |
Zakres i domyślny guardrail przestrzeni roboczej
Guardrails są w zakresie dokładnie jak klucze API: współdzielone w przestrzeni roboczej, gdy masz aktywną przestrzeń, per-użytkownik w przeciwnym razie. Rozwiązywanie dla dowolnego żądania:- Powiązanie klucza — jeśli klucz ma jawne
guardrail_id, ten guardrail ma zastosowanie (gdy istnieje i jest włączony). Jawne powiązanie nigdy po cichu nie wraca do domyślnego; jego wyłączenie to przełącznik off. - Domyślny przestrzeni roboczej — jeśli klucz nie ma powiązania,
stosuje się włączony guardrail
is_defaultprzestrzeni roboczej. - Żaden — brak egzekwowania. Żądanie jest bajt-identyczne z przestrzenią roboczą, która nigdy nie włączyła tej funkcji.
Jak wygląda block
Zablokowane żądanie zwraca HTTP 400 z kodem błęduguardrail_blocked i komunikatem nazywającym guardrail oraz regułę,
która zadziałała. Zablokowane żądanie nie kosztuje cię kwoty —
blokada na etapie input działa, zanim użycie jest mierzone, a blokada
na etapie output zwraca wstępnie pobraną kwotę — i jest oznaczone jako
skip-retry (ponowne uruchomienie tego samego promptu po prostu znów
by zablokowało).
4. Typy reguł
Reguły dzielą się na dwie grupy: wbudowane (deterministyczne, bez sieci) i zaawansowane (wychodzące do modelu lub dostawcy).| Typ | Grupa | Co robi |
|---|---|---|
Lista zakazanych słów kluczowych (keyword) | Wbudowane | Dopasowuje dowolny z listy literalnych terminów — bez rozróżniania wielkości liter, dopasowanie podciągu (więc class pasuje też do classic). |
Wyrażenie regularne (regex) | Wbudowane | Dopasowuje wzorzec RE2 (liniowy czas, bez backreferencji). |
Wykrywanie PII (pii) | Wbudowane | Wykrywa wbudowane typy encji (oraz twoje własne niestandardowe). Zobacz §5. |
Maksymalna długość (max_chars) | Wbudowane | Ogranicza liczbę znaków tekstu na danym etapie. |
Zewnętrzny dostawca (external) | Zaawansowane | Deleguje sprawdzenie do podłączonego dostawcy (Aporia, Averta, BYO-webhook, …). Zobacz §9. |
Sędzia LLM (llm_judge) | Zaawansowane | Uruchamia sprawdzenie semantyczne wobec modelu w twojej przestrzeni roboczej. Zobacz §6. |
Kontekstowe ugruntowanie (grounding) | Zaawansowane | Ocenia wierność odpowiedzi wobec źródeł pobranych na żądaniu (RAG). Zobacz §7. |
external, llm_judge, grounding) są dyspozytowane
współbieżnie, więc jedno wolne sprawdzenie nie serializuje się za
innym.
5. Wykrywanie PII w szczegółach
Regułapii wykrywa wrażliwe encje i stosuje akcję reguły do każdego
dopasowania. Wbudowany zestaw detektorów jest zamknięty i współdzielony
przez silnik, walidator i konstruktor reguł:
email, phone, credit_card, ssn, ip, iban, mac_address,
api_key_openai, aws_access_key, jwt, bitcoin_address.
Przy akcji mask każde dopasowanie jest zastępowane typowanym tagiem
— email staje się [EMAIL], SSN staje się [SSN] i tak dalej.
Niestandardowe encje
Warstwuj własne detektory na wbudowanym zestawie. Niestandardowa encja to:name— małe litery ASCII / cyfry / podkreślenie, musi zaczynać się od litery (np.employee_id). Trafia do logów audytu i telemetrii bez cudzysłowów.pattern— regex Go RE2 (liniowy czas, bez backreferencji).checksum— opcjonalny;luhnwaliduje dopasowanie algorytmem Luhna (np. dla numerów przypominających karty).mask_with— opcjonalny dosłowny zamiennik; domyślnie[<UPPERCASE_NAME>].
Nadpisania akcji per-encja
Pojedyncza reguła PII może stosować różne akcje do różnych encji przezentity_actions. Jedna reguła, która domyślnie maskuje emaile /
telefony / IP, ale blokuje na credit_card lub ssn — zamiast
trzech nakładających się reguł:
block /
mask / flag. Walidator odrzuca wszystko inne.
6. Sędzia LLM
Regułallm_judge uruchamia sprawdzenie semantyczne wobec modelu, który
twoja przestrzeń robocza już może wywołać. Użyj jej dla rozmytych
polityk, których nie wychwyci żaden regex — toksyczność, nękanie, off-topic,
intencja prompt-injection.
| Pole | Znaczenie |
|---|---|
judge_model | Model lub alias routera do ewaluacji (np. gpt-4o-mini, orcarouter/cheap). Rozwiązywany wobec kanałów twojej przestrzeni roboczej. |
judge_rubric | Wiadomość systemowa opisująca, co flagować. |
judge_format | Jedna z wartości yes_no, score lub category (wymagane; konsola wstępnie wybiera yes_no). |
judge_threshold | Dla score: blokuj/flaguj, gdy wynik jest na tej wartości lub powyżej. |
judge_categories | Dla category: lista zakazanych. |
judge_timeout_ms | Ogranicza wywołanie sędziego. 0 → domyślne silnika. |
judge_fail_open | true (domyślne) → błąd sędziego jest obserwowany, ale żądanie kontynuuje; false → traktuj błąd/timeout jako block. |
7. Kontekstowe ugruntowanie
Regułagrounding mierzy odpowiedź asystenta wobec źródeł pobranych
na żądaniu (twojego kontekstu RAG) i flaguje lub blokuje odpowiedzi,
które nie są im wierne. Wykorzystuje ponownie szew sędziego — te same
kanały przestrzeni roboczej, to samo przypisanie kosztu.
| Pole | Domyślnie | Znaczenie |
|---|---|---|
grounding_model | wybór przestrzeni roboczej | Model, do którego runner rozwiązuje sprawdzenie wierności. |
grounding_rubric | wbudowana | Nadpisuje domyślną rubrykę wierności. |
grounding_threshold | 0.7 | Próg wierności, 0.0–1.0. Poniżej niego akcja zadziała. |
grounding_strict | false | Gdy true, “brak dostarczonych źródeł” jest traktowany jako block (zamiast domyślnego allow). |
grounding_max_bytes | 100000 | Ogranicza skonkatenowany kontekst źródeł przekazany sędziemu. |
grounding_timeout_ms | 3000 | Ogranicza wywołanie sędziego. |
8. Szablony, piaskownica i harness ewaluacyjny
Biblioteka szablonów
Przycisk z podziałem New guardrail otwiera się prosto w szablonie, a pełna biblioteka jest o jedno kliknięcie. Presety są autorowane po stronie serwera, więc konsola, piaskownica i te dokumenty opisują dokładnie to samo zachowanie. Kategorie obejmują:- PII (
pii) — PII Shield, PII Blocker (strict), Contact-Info Redactor, redaktor PII w odpowiedzi. - Secrets (
secrets) — blokery poświadczeń AWS / OpenAI / GitHub, klucze prywatne i tokeny chmurowe, portfele krypto, sekrety w wyjściu. - Compliance (
compliance) — GDPR (PII w UE), PCI (pełna blokada kart), HIPAA (PHI), dane finansowe, rejestrator zgodności, egzekwowanie zastrzeżeń prawnych. - Brand (
brand) — wulgaryzmy (block / mask / wielojęzyczne), wzmianki o konkurencji, słowa kluczowe bezpieczeństwa dzieci. - Safety (
safety) — prompt-injection, jailbreak, wyciek system-promptu, samookaleczenie. - Cost (
cost) — limity rozmiaru promptu / odpowiedzi oraz limity tokenów. - Agent (
agent) — filtry URL, markdown-image, shell-tool-call oraz SQL-injection w wyjściu.
Piaskownica testowa
Każdy edytor ma zakładkę Test. Wklej próbkę, wybierz etap i uruchom bieżącą politykę lokalnie — bez wywołania w górę, bez kwoty. Piaskownica zwraca werdykt i (dla reguł mask) wyrenderowany tekst, więc możesz udowodnić, że reguła robi to, czego oczekujesz, zanim powiążesz klucz.Harness ewaluacyjny / red-team
Zakładka Eval uruchamia guardrail wobec korpusu wejść i raportuje, jak się ocenił — przydatne do strojenia rubryki sędziego lub udowodnienia, że polityka wychwytuje znane ataki, zanim ją wyślesz.- Dołączone korpusy są dostarczane z bramą — zestawy adwersaryjne i red-team (prompty szkodliwych zachowań, tool-injection, wielojęzyczny red-teaming) plus zestawy łagodne do mierzenia fałszywie pozytywnych.
- Niestandardowe korpusy — wgraj własny JSONL, aby testować wobec swoich rzeczywistych kształtów ruchu.
- Uruchomienia są listowane z ich wynikami; otwórz uruchomienie, aby zbadać porażki próbka po próbce.
9. Zewnętrzni dostawcy
Regułaexternal deleguje sprawdzenie do podłączonego dostawcy. Podłącz
dostawcę raz pod Integrations (CTA w nagłówku na stronie Guardrails),
potem odwołuj się do połączenia z reguły.
Obsługiwani dostawcy
| Dostawca | Czym jest |
|---|---|
Aporia Guardrails (aporia) | Silnik polityk oparty na zespole SLM dla promptów i odpowiedzi. |
Averta (averta) | Generyczny endpoint klasyfikatora SLM (POST tekstu → bezpieczny / niebezpieczny + opcjonalny rewrite). |
BYO Webhook (webhook) | Twój własny URL — odbieraj prompty i zwracaj werdykty allow / block / mask / flag. |
Pola reguły
| Pole | Znaczenie |
|---|---|
connection_id | Podłączona integracja do użycia (rekomendowana ścieżka — dostawca + sekrety rozwiązują się z integracji przestrzeni roboczej w czasie wykonania). |
timeout_ms | Ogranicza pojedyncze wywołanie dostawcy. 0 → domyślne. |
fail_open | true (domyślne) → błąd dostawcy jest obserwowany, ale żądanie kontynuuje; false → traktuj błąd transportu / timeout / nieznanego dostawcę jako block. |
10. Obserwowalność
Guardrails pozostawiają okruchy, na które możesz reagować.Strumień dopasowań
Każda reguła, która zadziała, rejestruje dopasowanie — typ reguły, akcję, łańcuch szczegółów, etap oraz (gdy włączone) dopasowany podłańcuch. Zakładka Matches na stronie Guardrails to strumień obejmujący całą przestrzeń roboczą: listuj, grupuj, filtruj, wejdź w pojedyncze dopasowanie, eksportuj do CSV i oznaczaj fałszywie pozytywne.Statystyki
Strumień Matches zasila statystyki per-guardrail — każda karta guardrail pokazuje 7-dniową sparkline dopasowań i licznik, a zakładka Matches niesie łączną sumę przestrzeni roboczej. Aby kroić aktywność po polityce, użyj pogrupowanego widoku i filtrów strumienia Matches (po guardrail, typie reguły, akcji) — to tam żyją użycie per-guardrail, miks akcji i wskaźnik fałszywie pozytywnych.Historia wersji i audyt
Każde utworzenie, aktualizacja i usunięcie zapisuje wersjonowany wiersz historii w tej samej transakcji co zmiana. Otwórz History w wierszu guardrail, aby:- Zobaczyć każdą wersję z informacją, kto ją zmienił i kiedy.
- Porównać (Diff) dowolne dwie wersje.
- Przywrócić (Revert) do starszej wersji (rejestrowane jako nowa wersja — historia nigdy nie jest mutowana).
11. Relacja z resztą bramy
| Powierzchnia | Jak komponuje się z Guardrails? |
|---|---|
| Models | Guardrails są agnostyczne wobec modelu. Ta sama polityka jedzie po GPT-5, Claude, Gemini — sprawdza tekst, nie wybór modelu. |
| Routing | Niezależne. Routing decyduje, który model/kanał obsłuży żądanie; guardrails niezależnie sprawdzają ten sam tekst żądania/odpowiedzi i nigdy nie nadpisują wyboru modelu. Sprawdzanie wejścia biegnie przed wywołaniem nadrzędnym, sprawdzanie wyjścia po odpowiedzi modelu. Reguły sędziego (judge) i ugruntowania (grounding) rozwiązują własny model przez kanały przestrzeni roboczej, oddzielnie od routingu żądania. |
| Prompts | Niezależne i komplementarne. Prompts wstrzykują wiadomość systemową; guardrails inspekcjonują i bramkują treść. Oba mogą dotyczyć jednego żądania, a guardrails zawsze biegną. Kolejność ma znaczenie: reguły wejścia sprawdzają żądanie wywołującego przed wstrzyknięciem promptu z rejestru (wstrzyknięcie następuje później, w etapie routingu), więc reguły wejścia widzą wiadomości wywołującego, a nie wstrzyknięty prompt systemowy; reguły wyjścia sprawdzają odpowiedź modelu w obu przypadkach. |
| API Keys | Klucz wiąże się z guardrail przez guardrail_id. Powiązanie żyje na kluczu w bramie, więc edycja guardrail przesuwa każdy powiązany klucz naraz; brak powiązania wraca do domyślnego przestrzeni roboczej. |
| Strumień Matches | Każda reguła, która zadziała, trafia do strumienia Matches przestrzeni roboczej (jego własny magazyn, oddzielny od logu żądań). Grupuj go i filtruj po guardrail, typie reguły i akcji, aby zobaczyć użycie, miks akcji i wskaźnik fałszywie pozytywnych per guardrail. |
12. Referencja API
Wszystkie trasy są w zakresie przestrzeni roboczej przez nagłówekX-Workspace-Id. RBAC jest egzekwowany konsekwentnie: odczyty i
piaskownica testowa są otwarte dla każdego członka; zapisy wymagają
Developer+ (oraz uprawnienia guardrails:write); zmiany ruchu
produkcyjnego (usunięcie, revert, konfiguracja dostawcy) są bramkowane
odpowiednio.
Guardrails
| Metoda i ścieżka | Rola | Cel |
|---|---|---|
GET /api/guardrail/ | Member | Lista guardrails (z licznikami powiązanych kluczy). |
GET /api/guardrail/meta | Member | Słownik silnika — typy reguł, etapy, akcje, encje PII, presety, kategorie presetów. |
GET /api/guardrail/my-permissions | Member | Uprawnienia guardrail wywołującego (do bramkowania UI). |
GET /api/guardrail/:id | Member | Szczegóły pojedynczego guardrail. |
GET /api/guardrail/:id/tokens | Member | Klucze API powiązane z tym guardrail (limitowane, z prawdziwą sumą). |
POST /api/guardrail/test | Member | Piaskownica — ewaluuj politykę nad przykładowym tekstem na danym etapie. Nic nie jest persystowane. |
POST /api/guardrail/ | Developer+ | Utwórz guardrail. |
PUT /api/guardrail/ | Developer+ | Zaktualizuj guardrail (zapisuje nową wersję historii). |
DELETE /api/guardrail/:id | Developer+ | Usuń guardrail. |
Historia
| Metoda i ścieżka | Rola | Cel |
|---|---|---|
GET /api/guardrail/:id/history | Member | Historia wersji (najnowsze pierwsze). |
GET /api/guardrail/:id/history/diff | Member | Porównaj dwie wersje. |
GET /api/guardrail/:id/history/:version | Member | Pojedyncza historyczna wersja. |
POST /api/guardrail/:id/revert | Developer+ | Przywróć starszą wersję jako nową wersję. |
Ewaluacja i korpusy
| Metoda i ścieżka | Rola | Cel |
|---|---|---|
POST /api/guardrail/:id/eval | Member | Uruchom ewaluację nad korpusem (dołączona nazwa lub wgrany JSONL). |
GET /api/guardrail/:id/eval/runs | Member | Lista uruchomień ewaluacji dla guardrail (paginowana). |
GET /api/guardrail/eval/runs/:run_id | Member | Szczegóły pojedynczego uruchomienia ewaluacji. |
GET /api/guardrail/eval/corpora | Member | Lista korpusów przestrzeni roboczej + dołączonych korpusów. |
POST /api/guardrail/eval/corpora | Developer+ | Wgraj korpus JSONL. |
GET /api/guardrail/eval/corpora/:id | Member | Szczegóły korpusu. |
DELETE /api/guardrail/eval/corpora/:id | Developer+ | Usuń korpus. |
Dopasowania
| Metoda i ścieżka | Rola | Cel |
|---|---|---|
GET /api/guardrail/match | Member | Lista dopasowań (w zakresie przestrzeni roboczej). |
GET /api/guardrail/match/grouped | Member | Dopasowania pogrupowane (np. po regule lub guardrail). |
GET /api/guardrail/match/stats | Member | Statystyki dopasowań (wspiera ?days= i ?group_by=). |
GET /api/guardrail/match/export | Member | Eksportuj dopasowania jako CSV. |
GET /api/guardrail/match/:id | Member | Szczegóły pojedynczego dopasowania. |
POST /api/guardrail/match/:id/mark-fp | Admin | Oznacz dopasowanie jako fałszywie pozytywne (rate-limited). |
DELETE /api/guardrail/match/:id/mark-fp | Admin | Odznacz fałszywie pozytywne (rate-limited). |
Powiązanie klucza
Ustawguardrail_id na kluczu API (przez edytor klucza lub token API).
0/null oznacza brak jawnego powiązania — klucz wraca do domyślnego
guardrail przestrzeni roboczej, jeśli jest ustawiony.
13. FAQ
Co jeśli żaden guardrail nie zostanie rozwiązany na żądaniu?
Co jeśli żaden guardrail nie zostanie rozwiązany na żądaniu?
Czy zablokowane żądanie kosztuje kwotę?
Czy zablokowane żądanie kosztuje kwotę?
input działa, zanim użycie jest mierzone;
blokada na etapie output zwraca wstępnie pobraną kwotę po odrzuceniu
odpowiedzi. Tak czy inaczej wywołujący nie płaci kwoty, dostaje HTTP
400 guardrail_blocked, a żądanie jest oznaczone jako skip-retry
(ponowne uruchomienie tego samego promptu na innym kanale po prostu
znów by zablokowało).Czy reguły wyjścia (odpowiedzi) są egzekwowane przy streamingu?
Czy reguły wyjścia (odpowiedzi) są egzekwowane przy streamingu?
input. Udowodnij swoją konkretną kombinację
etap/stream w piaskownicy oraz uruchomieniem ewaluacji, zanim na niej
polegniesz.Jaka jest różnica między mask a block?
Jaka jest różnica między mask a block?
jane@acme.com → [EMAIL]) i
przepuszcza żądanie z oczyszczonym tekstem — model nadrzędny nigdy
nie widzi oryginału. Block odrzuca całe żądanie z HTTP 400.
Flag nie zmienia nic w ruchu i tylko rejestruje dopasowanie —
użyj go, aby zmierzyć regułę przed jej egzekwowaniem.Czy wstrzyknięte tokeny promptu i tokeny sędziego są naliczane?
Czy wstrzyknięte tokeny promptu i tokeny sędziego są naliczane?
llm_judge lub
grounding woła model przez kanały twojej przestrzeni roboczej, więc
te tokeny są rozliczane i przypisywane jako sub-linia sędziego.Jak zobaczyć, co reguła faktycznie dopasowała?
Jak zobaczyć, co reguła faktycznie dopasowała?
Czy mogę wycofać zmianę guardrail?
Czy mogę wycofać zmianę guardrail?
Co się dzieje, gdy zewnętrzny dostawca lub sędzia przekroczy timeout?
Co się dzieje, gdy zewnętrzny dostawca lub sędzia przekroczy timeout?
fail_open (external) lub judge_fail_open (judge) na false,
aby fail closed — traktować błąd jako block — dla polityk, w
których pominięte sprawdzenie jest nieakceptowalne.