Passer au contenu principal
Un modèle qui passe son propre entraînement de sécurité peut tout de même émettre un texte que vous ne pouvez pas livrer : des grossièretés dans une réponse client, le nom d’un concurrent dans votre assistant de marque, une affirmation juridique définitive que votre équipe conformité n’approuverait jamais. Le prompt semblait correct ; la réponse est le problème. OrcaRouter filtre la réponse du modèle à la passerelle, sur la surface de sortie, avant qu’elle n’atteigne votre client. Le contrôle est une règle de guardrail qui s’exécute après que le modèle amont a répondu et se condense en un seul verdict — bloquer la réponse, masquer le segment fautif, ou le signaler pour revue — indépendamment du modèle qui a servi la requête.

1. Pourquoi filtrer la sortie ia non sûre à la surface de sortie

Le filtrage côté entrée attrape un mauvais prompt. Il ne peut pas attraper une mauvaise réponse : un modèle amené hors-politique, un fine-tune aux guardrails intégrés plus faibles, ou un prompt parfaitement raisonnable qui a produit une complétion déraisonnable. La surface de sortie est l’endroit où vous affirmez « peu importe pourquoi, ce texte ne quitte pas la passerelle ». Une règle de passerelle se déclenche de manière déterministe et s’applique également à chaque modèle derrière votre clé. Et chaque règle qui se déclenche atterrit dans le flux Matches de l’espace de travail — type de règle, action, surface — de sorte que vous disposez d’une piste d’audit de ce qui a été attrapé et de ce qui a été laissé passer.
La défense vit dans la passerelle, pas dans votre application. Éditez le guardrail et le changement prend effet au prochain appel pour chaque clé qui y est attachée — aucun redéploiement, aucun changement de SDK. Votre application continue d’appeler /v1/chat/completions exactement comme avant.

2. Les deux façons de l’attraper

Associez une denylist déterministe à un juge sémantique pour une défense en profondeur.
Une règle keyword est une correspondance de sous-chaîne insensible à la casse ; une règle regex est un motif RE2 (temps linéaire, sans rétroréférences). Les deux s’exécutent sur le chemin chaud sans appel réseau — idéales pour une liste de mots bannis connue, une denylist de concurrents, ou un motif structurel (un token de chat-template fuité, une phrase définitive « vous avez droit à des dommages »).
Une règle llm_judge évalue la réponse contre un barème que vous rédigez en utilisant un modèle dans votre espace de travail — toxicité, ton hors-marque, conseil hors-politique qu’aucune liste littérale ne capture. Elle porte un judge_timeout_ms, est fail-open par défaut (une erreur de juge est journalisée et la réponse continue), et ses tokens sont facturés comme une sous-ligne de juge. Voir la référence du juge LLM.

3. Un exemple concret — bloquer le toxique, masquer le hors-marque

Un seul guardrail côté sortie qui bloque une réponse toxique sémantiquement et masque les termes de marque bannis dans tout ce qui reste :
{
  "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"]
    }
  ]
}
Rédigez ceci dans la console — ouvrez /console/guardrailsNew guardrail, ajoutez les deux règles, et attachez-le à une clé depuis l’éditeur Token (la liaison vit sur la clé comme guardrail_id). La configuration s’exécute sur votre session de console, pas sur votre clé de relais ; seul l’appel /v1/* ci-dessous utilise une clé 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": "Draft a reply to this angry customer"}]
  }'
Si le modèle renvoie un brouillon toxique, la réponse est retenue avec une HTTP 400 guardrail_blocked. Si elle est propre mais mentionne un terme banni, ce segment se rend sous forme d’une redaction typée et le reste passe.
Itérez avant d’attacher. L’onglet Test à l’intérieur de l’éditeur exécute la politique courante sur une réponse d’échantillon à la surface output — aucun appel amont, aucun quota — et l’onglet Eval l’exécute contre un corpus afin que vous puissiez prouver le taux de capture et le taux de faux positifs avant la production. Voir le harnais d’éval.

4. Partir d’un preset

La bibliothèque de templates New guardrail livre des points de départ prêts à l’emploi dans les catégories Safety, Brand, et Compliance. Un preset est une graine — appliquez-le, puis éditez librement.
CatégoriePreset côté sortie d’où partir
SafetySystem-Prompt Leak Detector (output), Strong System Prompt Leak — signale/bloque les réponses qui renvoient en écho des tokens de system-prompt ou de chat-template.
BrandProfanity Filter (mask) — s’exécute sur les deux surfaces et masque les mots de la denylist dans la réponse. (Les presets de style block Profanity / Brand Safety et Competitor Mentions sont des graines côté entrée ; reciblez une copie vers output si vous voulez qu’ils filtrent la réponse.)
ComplianceLegal Disclaimer Enforce — signale les réponses donnant un conseil juridique/financier définitif pour revue par l’équipe.
La catégorie Compliance empaquette aussi des politiques alignées sur des frameworks ; pour des déploiements audités pilotés par un framework, installez un compliance pack et associez la piste d’audit à Piste d’audit.

5. Streaming : la mise en garde qui compte

Le fait qu’une règle de sortie soit appliquée en direct dépend de l’action et du fait que vous streamiez ou non.
ActionNon-streamingStreaming
blockRéponse retenue ; HTTP 400 guardrail_blockedLe scanner coupe le flux en vol et émet un message de remplacement — le contenu bloqué n’atteint jamais le client
maskCorrespondance redactée dans le texte renvoyéNon-streaming uniquement aujourd’hui ; la réécriture de flux en bande est sur la feuille de route
flagEnregistre une correspondance, ne change rienEnregistre une correspondance, ne change rien
Le mask en sortie n’est pas encore en direct sur les réponses en streaming. Si vous streamez et reposez sur le masquage pour redacter des segments hors-marque, le chunk d’origine passe non masqué. Soit demandez du non-streaming lors du masquage de la réponse, soit utilisez une règle block (appliquée sur le streaming et le non-streaming) pour le contenu qui ne doit jamais quitter la passerelle. La même mise en garde s’applique au preset PII Shield, dont le masquage en direct est côté entrée aujourd’hui.
Une réponse bloquée ne coûte aucun quota — le block côté sortie rembourse le quota pré-consommé après le rejet de la réponse — et est marquée skip-retry, puisque ré-exécuter le même prompt ne ferait que bloquer à nouveau.

6. Forme de politique recommandée

Superposez trois règles dans un guardrail

  1. keyword / regex à output — capture à latence nulle pour les termes bannis connus et les motifs structurels.
  2. llm_judge à output — capture sémantique toxicité / hors-marque / hors-politique pour ce que la liste littérale manque.
  3. Déployez via flag d’abord, surveillez le flux Matches, puis promouvez vers block une fois le taux de faux positifs acceptable. Voir Modes d’application.
Pour filtrer aussi la requête — tentatives de jailbreak et d’injection qui produisent une sortie non sûre en premier lieu — exécutez un guardrail côté entrée aux côtés de celui-ci. Voir Jailbreaks et Injection de prompt.

Référence des Guardrails

Référence complète des types de règles, actions, surfaces, du juge LLM, des presets, du harnais d’éval, et du flux Matches.

Exfiltration de données

Empêcher les données sensibles de sortir dans une réponse de modèle ou un appel d’outil.