Guardrails
프로바이더에 도달하기 전에 채팅 요청을 차단하거나 표시하는 사용자별 키워드 정책.
가드레일은 채팅 요청 본문에서 지정한 키워드를 검사하는 사용자별 정책입니다. 각 정책은 action에 따라 두 가지로 동작합니다 — block은 일치하는 요청을 프로바이더 호출 전에 거부하고, flag는 요청을 그대로 통과시키되 감사 이벤트만 기록합니다.
가드레일은 PII 마스킹과 다릅니다. 마스킹은 민감한 내용을 가린 채 요청을 프로바이더로 보내지만, 가드레일은 일치하는 요청 자체를 차단(block)하거나 표시(flag)합니다.
정책 관리#
정책은 로그인 세션(JWT)으로 관리합니다. 목록 조회는 GET /v1/guardrails, 수정은 PATCH /v1/guardrails/{id}, 삭제는 DELETE /v1/guardrails/{id}를 사용합니다. 생성은 성공 시 201을 반환합니다.
POST/v1/guardrails
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| name | string | 필수 | 정책 이름. 1~100자. |
| blocked_terms | string[] | 선택 | 차단/표시할 키워드 배열. 기본값 []. 대소문자를 구분하지 않는 부분 문자열 매칭이며, 공백 항목은 제거됩니다. |
| action | string | 선택 | block 또는 flag. 기본값 block. |
create guardrail
curl https://router.pleum.ai/v1/guardrails \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{
"name": "no-secrets",
"blocked_terms": ["api_key", "AWS_SECRET", "password"],
"action": "block"
}'적용 방식#
가드레일은 /v1/chat/completions, /v1/messages, /v1/responses 호출 시 프로바이더가 호출되기 전에 적용됩니다. 검사는 텍스트 파트만 대상으로 하며, 이미지 파트는 무시됩니다.
block 정책의 키워드가 일치하면 요청은 HTTP 403으로 거부되고, 본문에 error·message·일치한 정책의 guardrail 이름이 담깁니다. 프로바이더는 호출되지 않으므로 크레딧도 차감되지 않습니다.
403 guardrail_blocked
{
"error": "guardrail_blocked",
"message": "Request blocked by a guardrail policy.",
"guardrail": "no-secrets"
}flag 정책이 일치하면 요청은 그대로 통과하고 감사 이벤트만 기록됩니다. 요청 내용은 저장되지 않으며, 정책 이름과 일치한 키워드만 남습니다.
매칭은 텍스트 파트에 대한 대소문자 구분 없는 부분 문자열 매칭입니다. 단어 경계를 따지지 않으므로 키워드가 더 긴 단어의 일부로 포함되어도 일치합니다.