Rubrik 가드레일

Rubrik 가드레일 (Rubrik Guardrail)

Rubrik의 모더레이션·로깅 통합을 사용해 프롬프트와 응답을 외부 정책 서비스로 검사하고, 모든 LLM 요청/응답을 배치 로그로 기록할 수 있어요.

주요 기능:

출처: 문서

본문

빠른 시작 (Quick Start)

1. config.yaml 구성하기

자격증명은 YAML config에 직접 설정하거나 환경 변수로 설정할 수 있어요. config 방식이 권장돼요.

model_list:
  - model_name: gpt-5.6-terra
    litellm_params:
      model: openai/gpt-5.6-terra
      api_key: os.environ/OPENAI_API_KEY

guardrails:
  - guardrail_name: "rubrik"
    litellm_params:
      guardrail: rubrik
      mode: ["pre_call", "post_call"]
      api_key: "your-rubrik-api-key"
      api_base: "https://your-rubrik-service.example.com"
      default_on: true

config에서 환경 변수를 참조할 수도 있어요.

guardrails:
  - guardrail_name: "rubrik"
    litellm_params:
      guardrail: rubrik
      mode: ["pre_call", "post_call"]
      api_key: os.environ/RUBRIK_API_KEY
      api_base: os.environ/RUBRIK_WEBHOOK_URL
      default_on: true

대안으로 Rubrik 서비스 URL과 API 키를 순수하게 환경 변수로만 구성할 수도 있어요. 설정하면 config에 api_base/api_key가 없을 때 대체(fallback)로 사용돼요.

export RUBRIK_WEBHOOK_URL="https://your-rubrik-service.example.com"
export RUBRIK_API_KEY="your-rubrik-api-key"

최소 config:

model_list:
  - model_name: gpt-5.6-terra
    litellm_params:
      model: openai/gpt-5.6-terra
      api_key: os.environ/OPENAI_API_KEY

guardrails:
  - guardrail_name: "rubrik"
    litellm_params:
      guardrail: rubrik
      mode: ["pre_call", "post_call"]
      default_on: true

2. 프록시 실행하기

litellm --config config.yaml --port 4000

3. 테스트하기

curl -X POST http://localhost:4000/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ***" \
  -d '{
    "model": "gpt-5.6-terra",
    "messages": [{"role": "user", "content": "What is the weather in SF?"}],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "Get the weather for a location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {"type": "string"}
            },
            "required": ["location"]
          }
        }
      }
    ]
  }'

구성 참조 (Configuration Reference)

YAML 구성 파라미터

config.yaml의 guardrails.[].litellm_params 아래에 설정해요.

파라미터 필수 설명
guardrail: rubrik Rubrik 가드레일 통합 선택
mode "pre_call"은 프롬프트 모더레이션, "post_call"은 응답 모더레이션, 또는 둘 다 포함한 목록
api_base Rubrik 웹훅 기본 URL. os.environ/RUBRIK_WEBHOOK_URL 사용 가능. 생략 시 RUBRIK_WEBHOOK_URL 환경 변수로 대체.
api_key 아니요 Rubrik API 키. os.environ/RUBRIK_API_KEY 사용 가능. 생략 시 RUBRIK_API_KEY 환경 변수로 대체.
default_on 아니요 true이면 모든 요청에서 가드레일 실행. 생략 시 false로 해석되며 호출자가 요청마다 "guardrails": ["rubrik"]으로 선택.

환경 변수

YAML config에서 api_base/api_key를 설정하지 않았을 때 사용되는 선택적 대체값이에요. RUBRIK_SAMPLING_RATERUBRIK_BATCH_SIZE는 환경 변수로만 설정할 수 있어요.

변수 필수 기본값 설명
RUBRIK_WEBHOOK_URL config에 api_base가 없을 때만 Rubrik 웹훅 서비스의 기본 URL
RUBRIK_API_KEY 아니요 Rubrik 서비스 인증용 Bearer 토큰
RUBRIK_SAMPLING_RATE 아니요 1.0 로그할 요청 비율(0.0~1.0). 항상 실행되는 모더레이션이나 차단 로깅에는 영향 없음. 0.5로 설정하면 요청의 약 50%를 로그.
RUBRIK_BATCH_SIZE 아니요 512 플러시 전 버퍼링할 로그 항목 수. 로그는 주기적으로도 플러시됨.

모더레이션 동작 방식 (How Moderation Works)

pre_call에서 가드레일은 정규화된 프롬프트를 {api_base}/v1/before_prompt/openai/v1에 일반 OpenAI 채팅 완성 요청으로 보내요. 서비스는 허용하려면 {}를 반환하고, 거부하려면 choices[0].message.content에 거부 사유를 담은 채팅 완성을 반환해요. 거부 시 LLM은 호출되지 않아요.

post_call에서 가드레일은 어시스턴트 텍스트와 도구 호출을 {api_base}/v1/after_completion/openai/v1에 보내요. 서비스는 모더레이션된 응답을 반환하며, 제거된 도구 호출이나 교체된 응답 텍스트는 차단으로 처리돼요.

차단된 요청은 원본 응답 대신 정책 설명과 함께 finish_reason: content_filter를 반환해요. 서비스에 접근할 수 없거나 오류가 발생하면 가드레일은 fail open되어 요청이 변경 없이 진행돼요.

요청/응답 형식

post_call에서 가드레일은 JSON envelope를 보내요.

{
  "request": {
    "messages": [...],
    "model": "gpt-5.6-terra",
    "tools": [...]
  },
  "response": {
    "id": "chatcmpl-...",
    "object": "chat.completion",
    "choices": [{
      "message": {
        "role": "assistant",
        "content": "...",
        "tool_calls": [...]
      }
    }]
  }
}

request.tools는 호출자가 선언한 도구 목록을 담아 서비스가 반환된 도구 호출과 대조할 수 있게 해요. 서비스는 허용된 도구 호출만 담고 콘텐츠에 교체 텍스트 또는 차단 설명을 담은 OpenAI 채팅 완성을 반환해야 해요.

배치 로깅 동작 방식 (How Batch Logging Works)

모든 LLM 요청(성공과 실패 모두)은 큐에 쌓이고 배치로 {api_base}/v1/litellm/batch에 전송돼요.

더 알아보기 (Learn more)