Zum Hauptinhalt springen
Manches, was Sie fangen müssen, ist kein wörtliches Wort und keine typisierte PII-Entity — es ist eine Form. Ein SKU-Format, ein Bestellnummern-Layout, ein internes URL-Muster, ein Gutscheincode, eine Vertragsreferenz. Eine regex-Regel lässt Sie diese Form bei jedem Aufruf treffen und dann blockieren, maskieren oder markieren, bevor der Prompt das Modell erreicht und bevor die Response Ihren Benutzer erreicht. Dies ist eine fokussierte Landingpage für den Strukturmuster-Anwendungsfall. Die vollständige Guardrail-Engine — jeder Regeltyp, jedes Feld und jede Route — finden Sie in der Guardrails-Referenz.
Jeder Schritt hier ist eine Konsolen-Aktion auf dem gehosteten Gateway (api.orcarouter.ai). Sie verfassen das Guardrail in Ihrer eigenen Session; nur der finale /v1/*-Aufruf nutzt einen sk-orca-...-Relay-Key. Das Erstellen und Bearbeiten von Guardrails erfordert Developer+ im Workspace.

1. Wann Sie eine Regex-Guardrail-LLM-Kontrolle brauchen

Eine regex-Regel ist das richtige Werkzeug, wenn das, was Sie fangen wollen, eine Struktur hat, die eine wörtliche Denylist nicht ausdrücken kann, aber keine Standard-Identität ist, die der pii-Detektor bereits abdeckt.

Strukturierte Codes

SKUs, Gutscheincodes, Vertragsrefs, interne Ticket-IDs — ein fester Präfix plus eine Ziffern- oder alphanumerische Folge.

Format-geformte Tokens

Alles, was nach Form statt nach einer endlichen Wortliste getroffen wird — ein Bestellnummern-Layout, ein Serien-Format, ein internes URL-Muster.

Output-Leak-Muster

Eine Response, die keinen internen Hostnamen, keinen Dateipfad oder kein Record-ID-Format offenlegen sollte — scannen Sie den Output des Modells nach der Form.

Günstige, deterministische Prüfungen

Reines Muster-Matching, kein Modellaufruf, kein Netzwerk — sicher, bei jedem Request in beide Richtungen auszuführen.
Wählen Sie das leichteste passende Werkzeug. Eine endliche Liste wörtlicher Begriffe → Keyword-Denylist. Eine benannte Identitätsform, für die Sie ein typisiertes Mask-Tag ([EMAIL], [SSN]) oder eine Luhn-Prüfung wollen → eine PII / Custom-Entity. Ein strukturelles Muster ohne Pro-Entity-Typisierung → eine regex-Regel, hier behandelt.

2. RE2 — lineare Zeit, keine Backreferences

Das pattern einer regex-Regel ist ein Go-RE2-Regex. RE2 ist die Engine, die eine regex-Regel sicher macht, bei jedem Request zu laufen:
RE2 garantiert eine Matching-Zeit linear in der Länge der Eingabe, unabhängig vom Muster. Eine Backtracking-Engine kann bei einer adversarialen Eingabe exponentiell explodieren (ein „ReDoS”); RE2 kann das nicht. Deshalb ist Ihr Muster sicher, auf dem heißen Pfad bei jedem Aufruf ausgewertet zu werden.
RE2 unterstützt keine Backreferences (\1), Lookahead oder Lookbehind. Wenn Sie ein PCRE-Muster portieren, das auf diese angewiesen ist, schreiben Sie es ohne sie um. Zeichenklassen, Anker, Quantoren, Alternation und nicht-fangende Gruppen funktionieren alle wie erwartet.
Es gibt keinen separaten „Groß-/Kleinschreibung ignorieren”-Schalter — setzen Sie Flags inline. Präfix mit (?i) für Groß-/Kleinschreibungs-Unabhängigkeit, (?m) für Multiline. Beispiel: (?i)\bproject-orca\b.
Der Regel-Builder kompiliert Ihr Muster, wenn Sie das Guardrail speichern. Ein Muster, das nicht kompiliert, wird mit dem Regel-Index im Fehler abgelehnt, sodass ein fehlerhafter Detektor nie den Relay-Pfad erreicht.
RE2-Muster sind nicht PCRE. Die häufigste Portierungs-Überraschung ist eine Backreference oder ein Lookahead — keines wird unterstützt. Schreiben Sie den Treffer stattdessen als Zeichenklassen-/Alternation-Muster und verifizieren Sie ihn im Tab Test, bevor Sie einen Key anhängen.

3. Anatomie einer Regex-Regel

Eine regex-Regel ist nach keyword die kleinste Regel in der Engine: ein Muster, eine Stage und eine Action.
FeldWas es tut
patternEin Go-RE2-Regex (lineare Zeit, keine Backreferences). Muss kompilieren.
stageinput (Request), output (Response) oder both.
actionblock, mask oder flag.
Bei einer mask-Action wird jeder Treffer an Ort und Stelle durch ein einzelnes wörtliches [REDACTED]-Tag ersetzt — eine regex-Regel ist nicht typisiert, daher rendert sie kein Pro-Entity-Tag wie [EMAIL]. Wenn Sie ein typisiertes Tag oder ein eigenes Ersatztoken wollen, modellieren Sie die Form stattdessen als Custom-PII-Entity.

4. Ein konkretes Beispiel

Angenommen, Ihre internen Bestellnummern sehen aus wie ORD- gefolgt von acht Ziffern, und Sie wollen nie eine in der Response eines Modells zurückgegeben sehen. Fügen Sie eine einzelne regex-Regel auf der output-Stage hinzu:
{
  "type": "regex",
  "stage": "output",
  "action": "mask",
  "pattern": "ORD-\\d{8}"
}
Verfassen Sie sie in der Konsole:
1

Ein Guardrail erstellen

Öffnen Sie Guardrails, klicken Sie auf New guardrail und benennen Sie es (≤ 64 Zeichen), z. B. order-id-filter.
2

Eine Regex-Regel hinzufügen

Fügen Sie eine Regel hinzu — Type: Regular expression, Stage: Output, Action: Mask — und fügen Sie das Muster ORD-\d{8} ein. Speichern Sie.
3

In der Sandbox testen

Öffnen Sie den Tab Test, fügen Sie ein Beispiel ein, wählen Sie die output-Stage und führen Sie die aktuelle Policy lokal aus — kein Upstream-Aufruf, kein Kontingent:
Your order ORD-48291507 has shipped.
Your order [REDACTED] has shipped.
4

Einen Key anhängen

Bearbeiten Sie einen API-Key und wählen Sie order-id-filter aus dem Dropdown Guardrail (setzt guardrail_id am Key), oder markieren Sie das Guardrail als Workspace-Default. Siehe An einen Key anhängen und Account-Default.
Rufen Sie dann OrcaRouter genau wie zuvor auf — keine neuen Header, keine SDK-Änderung:
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": "What is the status of my order?"}
    ]
  }'
Die Bestellnummer wird in der Response redigiert, bevor sie Ihren Benutzer erreicht.

5. Stage- und Streaming-Abdeckung

Die gewählte Action interagiert damit, ob die Response streamt:
ActionNicht-StreamingStreaming
block (output)DurchgesetztDurchgesetzt — Scanner schneidet den Stream ab
mask (output)DurchgesetztDurchgesetzt — Scanner schreibt den Puffer um
Input-Stage-Regeln laufen vor dem Upstream-Aufruf, daher sind sie vom Streaming unbeeinflusst — das Maskieren des Requests, bevor das Modell ihn je sieht, ist live. Output-mask und Output-block werden beide auf Streaming- und Nicht-Streaming-Responses durchgesetzt. Siehe Streaming-Abdeckung.

6. Eine Action wählen

Eine regex-Regel wählt eine Action pro Regel:
Jeder Treffer lehnt den Request mit HTTP 400 guardrail_blocked ab. Ein blockierter Request kostet kein Kontingent — ein Input-Stage-Block feuert vor der Messung; ein Output-Stage-Block erstattet das vorab verbrauchte Kontingent — und er wird als skip-retry markiert. Siehe den guardrail_blocked-Fehler.
Jeder Treffer wird an Ort und Stelle durch [REDACTED] ersetzt und der Request läuft mit dem bereinigten Text weiter — das Upstream-Modell (Input-Stage) oder Ihr Benutzer (Output-Stage) sieht das Original nie. Siehe Actions.
Zeichnet einen Match auf und ändert nichts am Traffic. Der richtige Ausgangspunkt für ein neues Muster: Liefern Sie es als flag aus, beobachten Sie den Matches-Feed und promoten Sie dann zu mask/block, sobald Sie ihm vertrauen.
Zeichnet einen Match auf und hängt eine Notiz an (z. B. ein Finding, das in der Triage sichtbar wird), ohne den Traffic zu verändern. Siehe Actions.
Eine Input-Stage-Verteidigung: Jeder Treffer wird in Delimiter umschlossen (z. B. ⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧), die dem Modell sagen, den Text als Daten, nicht Anweisungen zu behandeln — eine Prompt-Injection-Mitigation. Siehe Actions.

7. Sehen, was ausgelöst hat — und die Präzision justieren

Jede Regel, die auslöst, zeichnet einen Match auf — Regeltyp, Action, Stage und einen Detail-String — im Workspace-Matches-Feed.
Der getroffene Substring wird nur aufgezeichnet, wenn Log raw content aktiviert ist, was standardmäßig deaktiviert ist — die datenschutzkonservative Haltung. Mit deaktiviertem Schalter sehen Sie weiterhin, dass eine Regex-Regel gefeuert hat und wie oft, nur nicht den wörtlichen Text, den sie gefangen hat. Aktivieren Sie es pro Guardrail, wenn Sie den Substring für die Triage benötigen; die Einstellung ist nicht-rückwirkend. Siehe Matches-Feed und Logging & Datenschutz.
Ein zu breites Muster ist die klassische Regex-Falle — \d{8} trifft jede achtstellige Ziffernfolge, nicht nur Ihre Bestellnummern. Verankern Sie es (ein fester Präfix wie ORD-, Wortgrenzen \b), beobachten Sie den Matches-Feed und markieren Sie False Positives, um es nach und nach zu verschärfen. Für ein A/B-Raster gegen ein Korpus — um zu beweisen, dass ein Muster fängt, was es soll, ohne gutartigen Traffic zu markieren — liegt das Eval-Harness einen Tab weiter. Siehe False Positives justieren.

8. Wie es weitergeht

Custom-PII-Entities

Wenn die Form eine Identität ist, für die Sie ein typisiertes Mask-Tag oder eine Luhn-Prüfsumme wollen — kein bloßes [REDACTED].

Sensible Wörter

Eine endliche Liste wörtlicher Begriffe — einfacher als ein Muster, wenn Sie keine Struktur brauchen.

Actions

Wie sich block, mask und flag unterscheiden und wann man welches nutzt.

Guardrails-Referenz

Die vollständige Engine — jeder Regeltyp, jedes Feld und jede Route.
Eine regex-Regel steuert Inhalte. Um die Tool-Calls eines Agenten zu steuern — destruktive Aktionen verweigern, Tool-Call-Argumente redigieren, Freigabe verlangen — nutzen Sie die Firewall und ihre Regel-Matcher. Für unscharfe Policies, die kein Muster ausdrücken kann (Toxizität, Off-Topic, Injection-Absicht), führt eine llm_judge-Regel eine semantische Prüfung gegen ein Workspace-Modell aus. Um zu sehen, wo Regex ins Gesamtdesign passt, lesen Sie Guardrails vs. Firewall.