Zum Hauptinhalt springen
Ein Modell, das sein eigenes Safety-Training besteht, kann immer noch Text ausgeben, den Sie nicht ausliefern können: Schimpfwörter in einer Kundenantwort, der Name eines Wettbewerbers in Ihrem gebrandeten Assistenten, eine definitive rechtliche Behauptung, die Ihr Compliance-Team nie absegnen würde. Der Prompt sah in Ordnung aus; die Antwort ist das Problem. OrcaRouter screent die Antwort des Modells am Gateway, auf der Output-Stage, bevor sie Ihren Client erreicht. Die Prüfung ist eine Guardrail-Regel, die läuft, nachdem das Upstream-Modell antwortet, und zu einem Verdikt zusammenfällt — die Antwort blockieren, die anstößige Stelle maskieren oder sie zur Überprüfung markieren — unabhängig davon, welches Modell den Request bedient hat.

1. Warum auf der Output-Stage nach unsicherer KI-Ausgabe screenen

Input-Screening fängt einen schlechten Prompt ab. Es kann keine schlechte Antwort abfangen: ein Modell, das off-policy verleitet wird, ein Fine-Tune mit schwächeren eingebauten Guardrails oder ein vollkommen vernünftiger Prompt, der eine unvernünftige Vervollständigung produziert hat. Die Output-Stage ist, wo Sie behaupten: „Egal warum, dieser Text verlässt das Gateway nicht.” Eine Gateway-Regel feuert deterministisch und gilt gleichermaßen über jedes Modell hinter Ihrem Key. Und jede Regel, die feuert, landet im Workspace-Matches-Feed — Regeltyp, Aktion, Stage — sodass Sie einen Audit-Trail haben, was abgefangen und was durchgelassen wurde.
Die Verteidigung lebt im Gateway, nicht in Ihrer App. Bearbeiten Sie das Guardrail, und die Änderung tritt beim nächsten Aufruf für jeden daran angehängten Key in Kraft — kein Redeploy, keine SDK-Änderung. Ihre App ruft weiterhin /v1/chat/completions exakt wie zuvor auf.

2. Die zwei Wege, es abzufangen

Paaren Sie eine deterministische Denylist mit einem semantischen Judge für Defense in Depth.
Eine keyword-Regel ist ein case-insensitiver Teilstring-Match; eine regex-Regel ist ein RE2-Pattern (Linear-Zeit, keine Backreferences). Beide laufen auf dem Hot Path ohne Netzwerkaufruf — ideal für eine bekannte Liste verbotener Wörter, eine Wettbewerber-Denylist oder ein strukturelles Pattern (ein geleaktes Chat-Template-Token, eine definitive „you are entitled to damages”-Phrase).
Eine llm_judge-Regel wertet die Antwort gegen eine von Ihnen verfasste Rubrik aus, unter Verwendung eines Modells in Ihrem Workspace — Toxizität, off-brand Tonfall, off-policy Rat, den keine literale Liste erfasst. Sie trägt ein judge_timeout_ms, ist standardmäßig fail-open (ein Judge-Fehler wird geloggt und die Antwort läuft weiter), und ihre Tokens werden als Judge-Unterzeile abgerechnet. Siehe die LLM-Judge-Referenz.

3. Ein konkretes Beispiel — toxisch blockieren, off-brand maskieren

Ein einzelnes Output-Stage-Guardrail, das eine toxische Antwort semantisch blockiert und verbotene Markenbegriffe in allem, was übrig bleibt, maskiert:
{
  "name": "safe-output",
  "rules": [
    {
      "type": "llm_judge",
      "stage": "output",
      "action": "block",
      "judge_model": "openai/gpt-4o-mini",
      "judge_format": "yes_no",
      "judge_rubric": "Does this response contain toxic, harassing, hateful, or otherwise unsafe content? Answer yes or no.",
      "judge_fail_open": true
    },
    {
      "type": "keyword",
      "stage": "output",
      "action": "mask",
      "keywords": ["competitor-name", "internal-codename"]
    }
  ]
}
Verfassen Sie dies in der Konsole — öffnen Sie /console/guardrailsNew guardrail, fügen Sie die zwei Regeln hinzu und hängen Sie es aus dem Token-Editor an einen Key an (die Bindung lebt am Key als guardrail_id). Die Konfiguration läuft auf Ihrer Konsolen-Session, nicht auf Ihrem Relay-Key; nur der /v1/*-Aufruf unten verwendet einen sk-orca-...-Key.
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": "Draft a reply to this angry customer"}]
  }'
Wenn das Modell einen toxischen Entwurf zurückgibt, wird die Antwort mit HTTP 400 guardrail_blocked zurückgehalten. Ist sie sauber, lässt aber einen verbotenen Begriff fallen, rendert diese Stelle als typisierte Redigierung und der Rest fließt durch.
Iterieren Sie, bevor Sie anhängen. Der Test-Tab innerhalb des Editors läuft die aktuelle Policy über eine Beispielantwort auf der output-Stage — kein Upstream-Aufruf, kein Kontingent — und der Eval-Tab läuft sie gegen einen Korpus, sodass Sie Trefferrate und Falsch-Positiv-Rate vor der Produktion beweisen können. Siehe das Eval-Harness.

4. Von einem Preset starten

Die New guardrail-Template-Bibliothek liefert fertige Ausgangspunkte in den Kategorien Safety, Brand und Compliance. Ein Preset ist ein Seed — wenden Sie es an, bearbeiten Sie dann frei.
KategorieOutput-Stage-Preset zum Starten
SafetySystem-Prompt Leak Detector (output), Strong System Prompt Leak — Antworten flaggen/blockieren, die System-Prompt- oder Chat-Template-Tokens echoen.
BrandProfanity Filter (mask) — läuft auf beiden Stages und maskiert denylistete Wörter in der Antwort. (Die block-artigen Profanity- / Brand-Safety- und Competitor-Mentions-Presets sind Input-Stage-Seeds; retargeten Sie eine Kopie auf output, wenn sie die Antwort screenen sollen.)
ComplianceLegal Disclaimer Enforce — Antworten flaggen, die definitiven rechtlichen/finanziellen Rat geben, zur Team-Überprüfung.
Die Compliance-Kategorie packt auch framework-ausgerichtete Policies; für auditierte Rollouts, die von einem Framework getrieben werden, installieren Sie ein Compliance-Pack und paaren Sie den Audit-Trail mit Audit-Trail.

5. Streaming: die Einschränkung, die zählt

Ob eine Output-Regel live durchgesetzt wird, hängt von der Aktion ab und davon, ob Sie streamen.
AktionNicht-streamendStreamend
blockAntwort zurückgehalten; HTTP 400 guardrail_blockedScanner schneidet den Stream mitten im Flug und gibt eine Ersatznachricht aus — blockierter Inhalt erreicht den Client nie
maskTreffer im zurückgegebenen Text redigiertHeute nur nicht-streamend; In-Band-Stream-Umschreibung ist auf der Roadmap
flagZeichnet einen Match auf, ändert nichtsZeichnet einen Match auf, ändert nichts
Output-mask ist auf streamenden Antworten noch nicht live. Wenn Sie streamen und sich auf Maskierung verlassen, um off-brand Stellen zu redigieren, passiert der ursprüngliche Chunk unmaskiert durch. Fordern Sie entweder nicht-streamend an, wenn Sie die Antwort maskieren, oder verwenden Sie eine block-Regel (durchgesetzt auf streamend und nicht-streamend) für Inhalt, der das Gateway nie verlassen darf. Dieselbe Einschränkung gilt für das PII-Shield-Preset, dessen Live-Maskierung heute Input-Stage ist.
Eine blockierte Antwort kostet kein Kontingent — der Block auf der Output-Stage erstattet das vorab verbrauchte Kontingent, nachdem die Antwort abgelehnt wurde — und ist als skip-retry markiert, da das erneute Ausführen desselben Prompts einfach wieder blockieren würde.

6. Empfohlene Policy-Form

Drei Regeln in einem Guardrail schichten

  1. keyword / regex auf output — Null-Latenz-Abfang für bekannte verbotene Begriffe und strukturelle Patterns.
  2. llm_judge auf output — semantischer Toxizitäts- / off-brand- / off-policy-Abfang für das, was die literale Liste verpasst.
  3. Rollen Sie zuerst via flag aus, beobachten Sie den Matches-Feed, promoten Sie dann zu block, sobald die Falsch-Positiv-Rate akzeptabel ist. Siehe Enforcement-Modi.
Um auch den Request zu screenen — Jailbreak- und Injection-Versuche, die unsichere Ausgabe überhaupt erst produzieren — lassen Sie ein Input-Stage-Guardrail neben diesem laufen. Siehe Jailbreaks und Prompt-Injection.

Guardrails-Referenz

Vollständige Referenz für Regeltypen, Aktionen, Stages, den LLM-Judge, Presets, das Eval-Harness und den Matches-Feed.

Datenexfiltration

Verhindern, dass sensible Daten in der Antwort eines Modells oder einem Tool-Call abgehen.