Przejdź do głównej treści
Gdy musisz zamaskować wrażliwe dane, które niesie prompt llm — emaile, numery kart, krajowe ID, sekrety — brama przepisuje każde dopasowanie w miejscu, zanim model je zobaczy. Zamaskowana wartość staje się typowanym tagiem (jane@acme.com[EMAIL]), więc model nadal czyta spójny prompt, podczas gdy surowa wartość nigdy nie opuszcza twojej przestrzeni roboczej. Ta strona to skupione ujęcie tego, co maskowanie renderuje, jak zmienić tag i jak maskować jedne encje, blokując inne na pojedynczej regule. Pełny silnik — każdy typ reguły, etap i trasę — znajdziesz w referencji Guardrails, a po maskowanie konkretnie na żądaniu zobacz Reguły na etapie wejścia.

1. Maskuj wrażliwe dane, które niosą prompty llm, typowanymi tagami

Reguła pii z akcją mask wykrywa encję i zastępuje każde dopasowanie typowanym tagiem redakcji — etykietą wielkimi literami w nawiasach kwadratowych, która nazywa, co zostało usunięte, bez ujawniania wartości:
EncjaWyrenderowany tag
email[EMAIL]
credit_card[CREDIT_CARD]
ssn[SSN]
Pełny wbudowany zestaw detektorów — email, phone, credit_card, ssn, ip, iban, mac_address, jwt, aws_access_key, api_key_openai, bitcoin_address, plus regionalne jp_mynumber, kr_rrn i cn_resident_id — każdy renderuje własny tag w nawiasach ([PHONE], [IBAN], [JP_MYNUMBER] i tak dalej). Tag jest deterministyczny: ta sama encja zawsze renderuje tę samą etykietę, więc prompty poniżej pozostają stabilne, a twoje logi czytają się czysto.
Typowane tagi biją zbiorcze [REDACTED] pod względem jakości modelu. Model nadal wie, że patrzy na email vs. numer konta vs. numer telefonu, więc może dalej rozumować o kształcie danych — “reply to [EMAIL]” pozostaje wykonalną instrukcją — nigdy nie trzymając prawdziwej wartości.
Maskowanie wejścia jest w pełni żywe — brama przepisuje prompt, zanim dotrze do modelu, streaming lub nie. Maskowanie wyjścia jest żywe na odpowiedziach nie-streamingowych też: reguła mask na etapie wyjścia przepisuje odpowiedź, zanim wróci. Tylko maskowanie wyjścia streamingowego jest w planach; na strumieniowanej odpowiedzi preferuj block na etapie wyjścia. Zobacz Pokrycie streamingu po dokładną macierz etap/stream.

2. Jeden konkretny przykład

Autorzuj regułę w konsoli pod twoją własną sesją — konfiguracja guardrail wymaga Developer+, nie klucza relay. Dodaj jedną regułę pii do guardrail o nazwie pii-shield:
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "ssn"]
}
Powiąż ją z kluczem (ustaw guardrail_id lub oznacz jako domyślny przestrzeni roboczej — zobacz Powiąż z kluczem), potem wywołaj bramę tym kluczem relay sk-orca-...:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Reply to jane@acme.com about her SSN 123-45-6789"}
    ]
  }'
Brama przepisuje prompt na “Reply to [EMAIL] about her SSN [SSN] przed przesłaniem. Model nadrzędny nigdy nie widzi adresu ani numeru. Udowodnij najpierw dokładne renderowanie w zakładce Test edytora (bez wywołania w górę, bez kwoty) — zobacz Testowanie i eval.

3. Nadpisz tag przez mask_with

Wbudowane encje renderują stały tag. Niestandardowe encje — twoje własne detektory regex nawarstwione na wbudowanym zestawie — pozwalają samodzielnie ustawić tekst zamiennika przez mask_with:
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "custom_entities": [
    {
      "name": "employee_id",
      "pattern": "EMP-[0-9]{6}",
      "mask_with": "[STAFF_ID]"
    }
  ]
}
mask_with to dosłowny łańcuch zamiennika dla dopasowań tej encji. EMP-004217 staje się [STAFF_ID]. Zostaw to puste, a dopasowanie renderuje domyślny tag [<UPPERCASE_NAME>] — tu [EMPLOYEE_ID] — więc niestandardowy detektor zawsze produkuje czytelną, typowaną redakcję nawet bez nadpisania.
name (małe litery ASCII / cyfry / podkreślenie, musi zaczynać się od litery), pattern (regex Go RE2 — liniowy czas, bez backreferencji), opcjonalny checksum (luhn waliduje numery w kształcie kart) i opcjonalny mask_with. Do 25 niestandardowych encji na regułę — każda to skan po całym tekście, więc limit utrzymuje gorącą ścieżkę liniową. Zobacz Niestandardowe encje PII.
name trafia do logów audytu i strumienia Matches bez cudzysłowów, więc trzymaj się małych liter ASCII, cyfr i podkreśleń, zaczynających się od litery (np. employee_id, internal_ticket). Walidator odrzuca wszystko inne.

4. Maskuj jedne encje, blokuj inne — entity_actions

Pojedyncza reguła pii może stosować różne akcje do różnych encji przez entity_actions, zamiast nakładać trzy nakładające się reguły. Klasyczny kształt: maskuj dane kontaktowe o niskiej wrażliwości, ale blokuj pola o wysokiej wrażliwości wprost.
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "ip", "credit_card", "ssn"],
  "entity_actions": {
    "credit_card": "block",
    "ssn": "block"
  }
}
Tutaj email, phone i ip podążają za nadrzędnym mask reguły i renderują [EMAIL] / [PHONE] / [IP]; dopasowanie credit_card lub ssn zamiast tego blokuje całe żądanie z HTTP 400 guardrail_blocked.
PoleReguła
KluczeMusi być encją zadeklarowaną na regule (wbudowaną lub niestandardową).
Wartościblock, mask, flag lub annotate.
Zablokowane żądanie nie kosztuje kwoty — blokada na etapie wejścia działa przed pomiarem. Zamaskowane żądanie przechodzi z oczyszczonym tekstem. Zatem jedna reguła może po cichu zredagować rutynowe pola i twardo zatrzymać te regulowane, z pojedynczym powiązaniem i bez zmiany w aplikacji.

5. Mask vs. block vs. flag

Maskowanie to jedna z akcji, którą reguła (lub nadpisanie per-encja) może podjąć. Wybierz po tym, jak bardzo chcesz zaburzyć ruch:

mask

Redaguj dopasowanie do typowanego tagu i przepuść żądanie z oczyszczonym tekstem. Model nigdy nie widzi surowej wartości.

block

Odrzuć całe żądanie z HTTP 400 guardrail_blocked. Nic nie dociera do modelu. Użyj dla danych, które nigdy nie mogą tranzytować.

flag

Nie zmieniaj nic w ruchu — tylko zarejestruj dopasowanie. Zmierz, jak często reguła by zadziałała, zanim ją wyegzekwujesz.
Dobre wdrożenie to flag → mask → block: flag, by oszacować wpływ, mask, gdy zaufasz detektorowi, i zarezerwuj block dla pól, których w ogóle nie możesz przepuścić. Zobacz Akcje i Strojenie fałszywie pozytywnych.

6. Zweryfikuj, co zostało zamaskowane

Każda reguła, która zadziała, rejestruje dopasowanie w strumieniu Matches przestrzeni roboczej — typ reguły, akcję, etap i łańcuch szczegółów. Sam dopasowany podłańcuch (surowy email, faktyczny numer karty) jest rejestrowany tylko, gdy Log raw content jest włączone, co jest domyślnie wyłączone — postawa konserwatywna wobec prywatności, bo całym sednem jest trzymanie surowych wartości z dala od twoich logów.
Włączaj Log raw content tylko, gdy naprawdę potrzebujesz podłańcucha do triażu, i tylko per guardrail. Przy wyłączonym strumień dowodzi, że [CREDIT_CARD] został zamaskowany, nigdy nie przechowując numeru. Przełącznik nie działa wstecznie. Zobacz Logowanie i prywatność.

7. Dokąd dalej

Przeczytaj referencję Guardrails po kompletny silnik albo ekspozycja PII i wyciek sekretów po zagrożenia, do powstrzymania których zbudowane jest maskowanie.