메인 콘텐츠로 건너뛰기
자체 안전 학습을 통과한 모델도 여전히 여러분이 출시할 수 없는 텍스트를 내보낼 수 있습니다: 고객 응답의 욕설, 브랜드 어시스턴트 속 경쟁사 이름, 컴플라이언스 팀이 결코 승인하지 않을 단정적 법률 주장. 프롬프트는 괜찮아 보였습니다; 응답이 문제입니다. OrcaRouter는 모델의 응답을 게이트웨이에서, 출력 스테이지에서, 클라이언트에 도달하기 전에 검사합니다. 이 검사는 업스트림 모델이 응답한 후에 실행되어 하나의 판정으로 접히는 guardrail 규칙입니다 — 응답을 차단하거나, 문제가 되는 구간을 마스킹하거나, 검토를 위해 플래그합니다 — 어느 모델이 요청을 서비스했는지와 무관하게.

1. 왜 출력 스테이지에서 안전하지 않은 ai 출력을 검사하는가

입력 검사는 나쁜 프롬프트를 포착합니다. 나쁜 답변은 포착할 수 없습니다: 정책에서 벗어나도록 유도된 모델, 내장 guardrail이 더 약한 파인튠, 또는 비합리적 완성을 만든 완벽하게 합리적인 프롬프트. 출력 스테이지는 “이유와 무관하게, 이 텍스트는 게이트웨이를 떠나지 않는다”고 단언하는 곳입니다. 게이트웨이 규칙은 결정론적으로 발동하며 여러분의 키 뒤의 모든 모델에 걸쳐 동등하게 적용됩니다. 그리고 발동하는 모든 규칙은 워크스페이스 Matches 피드에 떨어집니다 — 규칙 타입, 액션, 스테이지 — 따라서 무엇이 포착되고 무엇이 통과되었는지의 감사 추적을 갖게 됩니다.
방어는 여러분의 앱이 아니라 게이트웨이에 존재합니다. guardrail을 편집하면 그것에 연결된 모든 키에 대해 다음 호출에서 변경이 적용됩니다 — 재배포 없음, SDK 변경 없음. 여러분의 앱은 이전과 정확히 동일하게 /v1/chat/completions를 계속 호출합니다.

2. 그것을 포착하는 두 가지 방법

심층 방어를 위해 결정론적 거부 목록과 의미 판단자를 짝지으세요.
keyword 규칙은 대소문자 구분 없는 부분 문자열 매치이고; regex 규칙은 RE2 패턴입니다(선형 시간, 역참조 없음). 둘 다 네트워크 호출 없이 핫 패스에서 실행됩니다 — 알려진 금지어 목록, 경쟁사 거부 목록, 또는 구조적 패턴(유출된 채팅 템플릿 토큰, 단정적 “you are entitled to damages” 문구)에 이상적입니다.
llm_judge 규칙은 워크스페이스의 모델을 사용해 여러분이 작성한 루브릭에 대해 응답을 평가합니다 — 유해성, 브랜드에 어긋난 톤, 어떤 문자 그대로의 목록도 포착하지 못하는 정책 외 조언. 이는 judge_timeout_ms를 가지며, 기본적으로 fail-open이고(판단자 오류는 로깅되고 응답은 계속됨), 그 토큰은 판단자 서브라인으로 청구됩니다. LLM judge 레퍼런스를 참조하세요.

3. 하나의 구체적 예시 — 유해한 것은 차단, 브랜드에 어긋난 것은 마스킹

유해한 응답을 의미적으로 차단하고 남은 무엇에서든 금지된 브랜드 용어를 마스킹하는 단일 출력 스테이지 guardrail:
{
  "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"]
    }
  ]
}
이것을 콘솔에서 작성하세요 — /console/guardrailsNew guardrail을 열고, 두 규칙을 추가하고, Token 편집기에서 키에 연결합니다(바인딩은 guardrail_id로 키에 존재합니다). 구성은 릴레이 키가 아니라 여러분의 콘솔 세션에서 실행됩니다; 아래의 /v1/* 호출만 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"}]
  }'
모델이 유해한 초안을 반환하면, 응답은 HTTP 400 guardrail_blocked으로 보류됩니다. 깨끗하지만 금지된 용어를 언급하면, 그 구간은 타입이 지정된 편집으로 렌더링되고 나머지는 통과합니다.
연결하기 전에 반복하세요. 편집기 내부의 Test 탭은 output 스테이지에서 샘플 응답에 대해 현재 정책을 실행합니다 — 업스트림 호출 없음, 쿼터 없음 — 그리고 Eval 탭은 코퍼스에 대해 그것을 실행하므로 프로덕션 전에 포착률과 오탐률을 증명할 수 있습니다. eval 하네스를 참조하세요.

4. 프리셋에서 시작하기

New guardrail 템플릿 라이브러리는 Safety, Brand, Compliance 카테고리에서 즉시 사용 가능한 시작점을 제공합니다. 프리셋은 시드입니다 — 적용한 뒤 자유롭게 편집하세요.
카테고리시작할 출력 스테이지 프리셋
SafetySystem-Prompt Leak Detector (output), Strong System Prompt Leak — 시스템 프롬프트나 채팅 템플릿 토큰을 반향하는 응답을 flag/block.
BrandProfanity Filter (mask) — 두 스테이지 모두에서 실행되며 응답에서 거부 목록에 오른 단어를 마스킹. (block 스타일 Profanity / Brand Safety 및 Competitor Mentions 프리셋은 입력 스테이지 시드입니다; 답변을 검사하고 싶으면 복사본을 output으로 재타깃하세요.)
ComplianceLegal Disclaimer Enforce — 단정적 법률/금융 조언을 제공하는 응답을 팀 검토를 위해 flag.
Compliance 카테고리는 프레임워크 정렬 정책도 패키징합니다; 프레임워크가 구동하는 감사된 롤아웃을 위해서는 컴플라이언스 팩을 설치하고 감사 추적을 감사 추적과 짝지으세요.

5. 스트리밍: 중요한 주의 사항

출력 규칙이 라이브로 강제되는지 여부는 액션과 여러분이 스트리밍하는지에 달려 있습니다.
액션비스트리밍스트리밍
block응답 보류; HTTP 400 guardrail_blocked스캐너가 스트림을 비행 중에 끊고 대체 메시지를 내보냄 — 차단된 콘텐츠가 클라이언트에 결코 도달하지 않음
mask반환된 텍스트에서 매치 편집됨오늘은 비스트리밍 전용; 인밴드 스트림 재작성은 로드맵에 있음
flag매치 기록, 아무것도 바꾸지 않음매치 기록, 아무것도 바꾸지 않음
출력 mask는 아직 스트리밍 응답에서 라이브가 아닙니다. 스트리밍하면서 브랜드에 어긋난 구간을 편집하기 위해 마스킹에 의존하면, 원본 청크가 마스킹되지 않은 채 통과합니다. 응답을 마스킹할 때는 비스트리밍을 요청하거나, 게이트웨이를 결코 떠나서는 안 될 콘텐츠에는 block 규칙을 사용하세요(스트리밍 비스트리밍에서 강제됨). 동일한 주의 사항이 PII Shield 프리셋에도 적용되며, 그 라이브 마스킹은 오늘 입력 스테이지입니다.
차단된 응답은 쿼터를 소모하지 않으며 — 출력 스테이지 차단은 응답이 거부된 후 사전 소모된 쿼터를 환불합니다 — skip-retry로 표시됩니다. 동일한 프롬프트를 다시 실행해도 그저 다시 차단될 것이기 때문입니다.

6. 권장 정책 형태

하나의 guardrail에 세 규칙 계층화

  1. outputkeyword / regex — 알려진 금지 용어와 구조적 패턴에 대한 지연 없는 포착.
  2. outputllm_judge — 문자 그대로의 목록이 놓치는 것에 대한 의미적 유해성 / 브랜드 어긋남 / 정책 외 포착.
  3. 먼저 flag로 롤아웃하고, Matches 피드를 보고, 오탐률이 수용 가능해지면 block으로 격상하세요. 강제 모드를 참조하세요.
요청도 검사하려면 — 애초에 안전하지 않은 출력을 만드는 탈옥과 인젝션 시도 — 이것과 함께 입력 스테이지 guardrail을 실행하세요. 탈옥프롬프트 인젝션을 참조하세요.

Guardrails 레퍼런스

규칙 타입, 액션, 스테이지, LLM 판단자, 프리셋, eval 하네스, 그리고 Matches 피드에 대한 전체 레퍼런스.

데이터 유출

민감 데이터가 모델의 응답이나 툴 호출로 떠나는 것을 막기.