템플릿별 제외 규칙 구성

Model Armor에서 템플릿별 제외 규칙을 구성하여 거짓양성 감지를 완화할 수 있습니다. 제외 규칙은 감지에서 제외할 정규 표현식 또는 구문을 포함하는 템플릿별 규칙입니다.

지원되는 필터

다음 필터에 제외 규칙을 사용할 수 있습니다.

제외 규칙을 사용하는 경우

필터를 완전히 사용 중지하지 않고 특정 워크로드에 대해 알려진 거짓양성 감지를 억제해야 하는 경우 템플릿별 제외 규칙을 사용합니다.

  • 도메인별 또는 기술 용어: 애플리케이션이 시스템 관리 명령어(kill process, abort transaction), 보안 테스트 용어(penetration testing), 과학 용어(blast search) 또는 업계 관용구와 같은 전문 어휘를 처리하며, 이는 책임감 있는 AI 안전 카테고리와 중복됩니다.
  • 정상적인 작업 또는 형식 지정 요청 사항: 사용자 또는 프롬프트 템플릿에 프롬프트 인젝션 및 탈옥 감지에서 거짓양성을 트리거하는 명령형 동사(예: "ignore case when sorting this list", "ignore empty rows", "Summarize my inbox and ignore the emails from the marketing vendor.")를 사용하는 합법적인 요청 사항이 포함되어 있습니다.
  • 모델 업데이트를 기다리는 동안 타겟팅된 완화: 다른 모든 입력에 대해 필터를 활성 상태로 유지하면서 특정 애플리케이션 워크플로에서 확인된 거짓양성에 대한 즉각적인 해결 방법이 필요합니다.

다음 표에서는 규칙 유형과 일치 범위의 각 조합을 사용하는 경우를 설명합니다. 사전 및 정규 표현식 일치 작동 방식에 대한 자세한 내용은 사전 및 정규 표현식 규칙 및 일치 작동 방식을 참조하세요.

규칙 구성 사용 시기 예
부분 일치가 있는 사전 규칙(MATCHING_SCOPE_PARTIAL_MATCH) 프롬프트 또는 응답 내 어디에나 표시될 수 있는 정적 단어 또는 문구의 고정 목록이 있습니다. 사전 일치 동작에 대한 자세한 내용은 사전 및 정규 표현식 규칙을 참조하세요.

사전에 ignore empty rows 구문이 포함되어 있습니다.

일치 항목:

  • ignore empty rows
  • ignore EMPTY-rows
  • please ignore empty rows

일치하지 않음:

  • ignore rows
  • ignore the empty rows
전체 일치 사전 규칙(MATCHING_SCOPE_FULL_MATCH) 애플리케이션이 사전 정의된 프롬프트 옵션(예: UI 빠른 답장 버튼 또는 미리 준비된 명령어)을 사용하고 전체 입력이 알려진 문구와 일치하며, 검사되지 않은 추가 텍스트가 필터를 우회하지 못하도록 하려는 경우 사전 일치 동작에 대한 자세한 내용은 사전 및 정규 표현식 규칙을 참조하세요.

사전에 ignore empty rows 구문이 포함되어 있습니다.

일치 항목:

  • ignore empty rows
  • ignore EMPTY-rows

일치하지 않음:

  • please ignore empty rows
  • ignore rows
부분 일치가 있는 정규 표현식 규칙(MATCHING_SCOPE_PARTIAL_MATCH) 더 큰 프롬프트 또는 응답 내에서 구조화된 패턴, 동적 식별자 또는 특정 동사 및 명사 조합을 제외해야 합니다. 자세한 내용은 정규 표현식 제외 패턴 예시를 참조하세요.

정규 표현식 패턴: (?i)kill process [0-9]+

일치 항목:

  • kill process 1234
  • How do I Kill Process 99?

일치하지 않음:

  • kill process abc
  • kill the process 1234
전체 일치가 있는 정규 표현식 규칙(MATCHING_SCOPE_FULL_MATCH) 전체 입력 페이로드는 엄격한 구조적 형식(예: 자동화된 테스트 식별자 또는 구조화된 명령어)을 따릅니다.

정규 표현식 패턴: (?i)^test_case_[0-9]+$

일치 항목:

  • test_case_42
  • TEST_CASE_001

일치하지 않음:

  • run test_case_42
  • test_case_alpha

리전 또는 멀티 리전 엔드포인트 사용

Model Armor 템플릿을 사용할 때는 템플릿의 위치와 일치하는 리전 또는 멀티 리전 엔드포인트(modelarmor.LOCATION.rep.googleapis.com)를 사용해야 합니다. 각 리전 또는 멀티 리전에 데이터 상주가 적용되는 방식에 대한 자세한 내용은 템플릿의 데이터 상주 적용을 참조하세요.

전역 엔드포인트(modelarmor.googleapis.com)는 Model Armor 템플릿 관리 또는 프롬프트 및 대답 정제를 지원하지 않습니다.

시작하기 전에

시작하기 전에 다음 작업을 완료하세요.

필수 권한 얻기

Model Armor 템플릿에서 제외 규칙을 구성하는 데 필요한 권한을 얻으려면 관리자에게 Model Armor 템플릿이 포함된 프로젝트의 Model Armor에 대한 Model Armor 관리자(roles/modelarmor.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

API 사용 설정

Model Armor를 사용하려면 먼저 Model Armor API를 사용 설정해야 합니다.

콘솔

  1. Model Armor API가 아직 사용 설정되지 않았으면 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할(roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할(roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할 부여 방법 알아보기

    API 사용 설정하기

  2. Model Armor를 활성화할 프로젝트를 선택합니다.

gcloud

시작하기 전에 Model Armor API와 함께 Google Cloud CLI를 사용하여 다음 단계를 따르세요.

  1. Google Cloud CLI를 설치한 후 제휴 ID로 gcloud CLI에 로그인합니다. 로그인한 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

    gcloud init

  2. Model Armor API가 아직 사용 설정되지 않은 경우 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할(roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할(roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할 부여 방법 알아보기

    gcloud services enable modelarmor.googleapis.com

  3. gcloud CLI를 사용하여 API 엔드포인트 재정의 설정

gcloud CLI를 사용하여 API 엔드포인트 재정의 설정

이 단계는 Model Armor와 함께 gcloud CLI를 사용하고 기본 us 멀티 리전 이외의 리전 또는 멀티 리전을 사용하려는 경우에만 필요합니다. gcloud CLI가 요청을 Model Armor 서비스로 올바르게 라우팅하도록 API 엔드포인트 재정의를 수동으로 설정해야 합니다.

다음 명령어를 실행하여 Model Armor 서비스의 API 엔드포인트를 설정합니다.

gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"

LOCATION을 Model Armor를 사용하려는 리전 또는 멀티 리전으로 바꿉니다.

제외 규칙 작동 방식

Model Armor API를 사용하여 제외 규칙을 구성합니다.

사전 및 정규 표현식 규칙

Model Armor 템플릿 내에서 두 가지 유형의 제외 규칙을 정의할 수 있습니다.

  • 사전 규칙: 제외할 단어 또는 구문 목록(wordList, 사전당 최대 128KB)을 지정합니다. 사전에는 하나 이상의 구문이 포함되어야 하며 각 구문에는 문자 또는 숫자인 문자가 2개 이상 포함되어야 합니다. 사전 일치는 다음과 같이 작동합니다.
    • 대소문자를 구분하지 않음: 사전 단어 및 구문은 대소문자를 구분하지 않습니다.
    • 영숫자가 아닌 문자: 일치 항목을 스캔할 때 유니코드 기본 다국어 평면의 문자와 숫자 이외의 모든 문자는 공백으로 대체됩니다. 예를 들어 사전 구문 Sam Johnson은 sam johnson, Sam, Johnson, Sam (Johnson)와 일치합니다. 글자 또는 숫자가 아닌 문자가 많이 포함된 사전 구문의 경우 이러한 문자가 공백으로 간주되므로 예상치 못한 일치 항목이 생성될 수 있습니다.
    • 문자 경계: 일치 항목을 둘러싼 문자는 사전 단어 내의 인접한 문자와 다른 문자 유형이어야 합니다. 문자는 문자가 아닌 문자와 인접해야 하고 숫자는 숫자가 아닌 문자와 인접해야 합니다. 예를 들어 사전 단어 jen는 jen123의 처음 세 글자와 일치하지만 jennifer와는 일치하지 않습니다.
  • 정규 표현식 규칙: 일치 및 제외할 정규 표현식 패턴(최대 1,000자(영문 기준))을 지정합니다. 정규 표현식 일치는 기본적으로 대소문자를 구분합니다. 대소문자를 구분하지 않는 일치를 수행하려면 패턴에 (?i) 플래그를 포함합니다. 예를 들어 (?i)kill process [0-9]+은 kill process 1234 및 Kill Process 1234 모두와 일치합니다.

매칭 작동 원리

각 제외 규칙은 Model Armor가 입력 콘텐츠를 규칙과 일치시키는 방법을 지정하는 matchingScope 필드를 지원합니다.

  • 부분 일치(MATCHING_SCOPE_PARTIAL_MATCH, 기본값):
    • 사전 규칙: 사전의 단어나 구문이 입력 콘텐츠의 하위 문자열과 일치할 때 일치하며 사전 문자 경계 규칙이 적용됩니다. 예를 들어 사전 구문 ignore empty rows는 ignore empty rows, ignore EMPTY-rows, Please ignore empty rows and summarize this table와 일치하지만 ignore rows 또는 ignore the empty rows와는 일치하지 않습니다.
    • 정규 표현식 규칙: 입력 콘텐츠의 하위 문자열이 정규 표현식 패턴과 일치할 때 일치합니다.
    • 스트리밍 지원: 버퍼링된 스트리밍 모드(STREAMING_MODE_BUFFERED)와 실시간 스트리밍 모드(STREAMING_MODE_REALTIME, 기본값) 모두에서 지원됩니다. 자세한 내용은 스트리밍 정제의 제외 규칙을 참조하세요.
  • 전체 일치(MATCHING_SCOPE_FULL_MATCH):
    • 사전 규칙: 사전 항목이 전체 입력 콘텐츠를 포함하는 경우에만 일치합니다. 예를 들어 사전 구문 ignore empty rows는 ignore empty rows 및 ignore EMPTY-rows와 일치하지만 please ignore empty rows 또는 ignore rows와는 일치하지 않습니다.
    • 정규 표현식 규칙: 정규 표현식 패턴이 전체 입력 콘텐츠와 일치하는 경우에만 일치합니다.
    • 스트리밍 지원: 버퍼링된 스트리밍 모드(STREAMING_MODE_BUFFERED)에서만 지원됩니다. 자세한 내용은 스트리밍 정제의 제외 규칙을 참조하세요.

정제 중 제외 규칙 재정의

템플릿에 제외 규칙이 포함된 경우 Model Armor는 프롬프트 인젝션 및 탈옥 감지(PROMPT_INJECTION_AND_JAILBREAK) 또는 책임감 있는 AI(RESPONSIBLE_AI) 필터가 잠재적 일치 항목을 식별할 때마다 프롬프트 및 모델 응답 정제 중에 해당 규칙을 평가합니다.

  • 규칙이 입력과 일치: 제외 규칙이 하위 문자열(MATCHING_SCOPE_PARTIAL_MATCH, 기본값) 또는 전체 입력(MATCHING_SCOPE_FULL_MATCH)과 일치하는 경우 Model Armor는 MATCH_FOUND 또는 EXECUTION_SKIPPED 필터 결과를 재정의하고 입력 내의 개별 구문이나 범위를 제외하는 대신 해당 지원되는 필터 유형(RESPONSIBLE_AI의 모든 책임감 있는 AI 안전 카테고리 포함)에 대해 matchState를 NO_MATCH_FOUND로 설정합니다. 정제 응답에서 악성 항목이 감지되지 않거나 제외 규칙이 필터 결과를 재정의하는 경우 filterMatchState은 NO_MATCH_FOUND입니다. 문제 해결을 위해 템플릿에서 정제 작업(logSanitizeOperations)에 대해 Cloud Logging을 사용 설정하고 modelarmor.googleapis.com/exclusion_rule_overridden_filters 또는 modelarmor.googleapis.com/exclusion_rule_skipped_filters 라벨을 필터링합니다. Model Armor는 제외 규칙이 필터 결과를 재정의하거나 필터의 executionState가 EXECUTION_SKIPPED인 경우 이러한 라벨을 로깅합니다. 자세한 내용은 제외 규칙 로그 보기를 참조하세요.
  • 규칙이 전체 입력과 일치하지 않음(MATCHING_SCOPE_FULL_MATCH): 입력에 구성된 구문 또는 패턴 이외의 추가 텍스트가 포함된 경우 규칙이 일치하지 않고 필터가 MATCH_FOUND를 유지합니다.
  • 입력이 130,000개 토큰(0.5MB)을 초과함: 제외 규칙은 입력 텍스트의 처음 130,000개 토큰(0.5MB)만 평가합니다. 0.5MB 페이로드는 영어 텍스트의 경우 약 130,000개의 토큰을 지원합니다(토큰당 약 4자). 영어가 아닌 텍스트의 경우 영어가 아닌 문자는 문자당 더 많은 바이트가 필요하므로 지원되는 토큰 수가 언어에 따라 다를 수 있습니다. 입력이 130,000개 토큰(0.5MB)을 초과하고 필터가 처음 스캔된 부분 외부에서 일치 항목을 감지하면 필터는 EXECUTION_SKIPPED를 반환합니다. messageItems 값 및 페이로드 한도에 대한 자세한 내용은 제외 규칙 시스템 한도를 참조하세요.

제외 규칙을 사용하여 프롬프트 및 모델 응답을 정리하는 예시는 제외 규칙을 사용하여 프롬프트 정리 및 제외 규칙을 사용하여 응답 정리를 참조하세요.

스트리밍 정제의 제외 규칙

Model Armor는 StreamSanitizeUserPrompt 및 StreamSanitizeModelResponse 스트리밍 메서드에서 제외 규칙을 지원합니다. Model Armor가 제외 규칙을 평가하는 방식은 요청에 지정된 스트리밍 모드(streamingMode)에 따라 다릅니다.

  • 버퍼링 모드(STREAMING_MODE_BUFFERED): MATCHING_SCOPE_PARTIAL_MATCH(기본값) 및 MATCHING_SCOPE_FULL_MATCH를 모두 지원합니다. Model Armor는 모든 스트리밍 청크를 수집하고 전체 스트리밍 콘텐츠에 대해 제외 규칙을 평가합니다.
    • 부분 일치(MATCHING_SCOPE_PARTIAL_MATCH): 사전 문구 또는 정규 표현식 패턴이 스트리밍된 콘텐츠 내의 하위 문자열과 일치하는 경우 Model Armor는 필터 결과를 재정의하고 해당 필터 유형에 대해 matchState를 NO_MATCH_FOUND로 설정합니다.
    • 전체 일치 (MATCHING_SCOPE_FULL_MATCH): 사전 문구 또는 정규 표현식 패턴이 스트리밍된 전체 콘텐츠와 처음부터 끝까지 일치하는 경우 Model Armor는 필터 결과를 재정의하고 해당 필터 유형에 대해 matchState를 NO_MATCH_FOUND로 설정합니다. 청크가 구성된 구문 또는 패턴을 초과하여 텍스트를 추가하면 규칙이 일치하지 않고 필터가 MATCH_FOUND를 유지합니다.
  • 실시간 모드(STREAMING_MODE_REALTIME, 기본값): MATCHING_SCOPE_PARTIAL_MATCH(기본값)를 지원하고 MATCHING_SCOPE_FULL_MATCH를 지원하지 않습니다.
    • 부분 일치 (MATCHING_SCOPE_PARTIAL_MATCH): Model Armor는 처리된 각 청크를 독립적으로 평가합니다(filterMatchState가 NO_MATCH_FOUND인 경우 sanitizationMetadata.streamChunkProcessed에서 반환됨). 처리된 청크 내에서 사전 문구 또는 정규 표현식 패턴이 일치하면 Model Armor는 필터 결과를 재정의하고 해당 청크에 대해 matchState를 NO_MATCH_FOUND로 설정하는 한편 스트림의 후속 청크를 독립적으로 계속 평가합니다. 제외된 구문 또는 패턴이 별도의 처리된 청크로 분할되면 부분 프래그먼트가 일치하지 않습니다. 이전 청크가 제외 규칙과 일치하지 않고 MATCH_FOUND 판정을 트리거하는 경우 후속 청크에 대해 스트림이 차단된 상태로 유지됩니다.
    • 전체 일치 (MATCHING_SCOPE_FULL_MATCH): 지원되지 않습니다. 템플릿에 MATCHING_SCOPE_FULL_MATCH가 있는 제외 규칙이 포함되어 있고 요청이 실시간 스트리밍 모드를 사용하는 경우 Model Armor는 다음 INVALID_ARGUMENT 오류와 함께 요청을 거부합니다. Invalid filter rule settings: FULL_MATCH matching scope is not supported in real-time streaming mode. UsePARTIAL_MATCHorSTREAMING_MODE_BUFFERED` 대신 사용합니다.

제외 규칙을 사용한 스트리밍 정제 예시는 제외 규칙을 사용하여 스트리밍 프롬프트 정제 및 제외 규칙을 사용하여 스트리밍 응답 정제를 참조하세요.

고려사항

제외 규칙을 구성할 때는 다음 사항을 고려하세요.

  • 제외 규칙은 정의한 템플릿에만 적용됩니다. 템플릿 간에 제외 규칙을 공유할 수 없습니다.
  • 템플릿에서 해당 필터가 사용 설정된 경우에만 지원되는 필터 유형에 대한 제외 규칙을 구성할 수 있습니다. 프롬프트 인젝션 및 탈옥 감지(PROMPT_INJECTION_AND_JAILBREAK)의 경우 piAndJailbreakFilterSettings에서 filterEnforcement를 ENABLED로 설정합니다. 책임감 있는 AI 안전 필터(RESPONSIBLE_AI)를 사용 설정하려면 raiSettings.raiFilters에서 책임감 있는 AI 안전 카테고리를 하나 이상 구성합니다.
  • Model Armor는 최소 기준 설정에서 제외 규칙을 지원하지 않습니다.
  • 스트리밍 정제에서 Model Armor는 버퍼링 모드(STREAMING_MODE_BUFFERED)에서만 전체 일치 제외 규칙(MATCHING_SCOPE_FULL_MATCH)을 지원합니다. 실시간 모드 (STREAMING_MODE_REALTIME, 기본 스트리밍 모드)에서 MATCHING_SCOPE_FULL_MATCH를 사용하면 INVALID_ARGUMENT 오류가 반환됩니다. 대신 Invalid filter rule settings: FULL_MATCH matching scope is not supported in real-time streaming mode. UsePARTIAL_MATCHorSTREAMING_MODE_BUFFERED` 를 사용하세요.
  • Model Armor는 익명화 또는 번역과 같은 텍스트 변환을 수행하기 전에 원시 입력 텍스트에 대해 제외 규칙을 평가합니다. 제외 규칙은 다국어 감지 또는 자동 번역을 지원하지 않습니다. 여러 언어의 콘텐츠를 제외하려면 각 도착어에 언어별 구문 또는 정규 표현식 패턴을 추가하세요.
  • 제외 규칙은 비라틴어 스크립트 언어 및 멀티바이트 UTF-8 문자를 제한적으로 지원합니다. 특히 사전 규칙(wordList)은 결합 표시를 사용하는 스크립트(예: 인도 스크립트) 또는 단어 사이에 공백이 없는 스크립트(예: 중국어 및 일본어)에 대해 예상대로 일치하지 않을 수 있습니다. 전체 일치 규칙(MATCHING_SCOPE_FULL_MATCH)은 멀티바이트 UTF-8 문자가 포함된 입력과 일치하지 않습니다. 라틴어가 아닌 스크립트의 콘텐츠 또는 멀티바이트 문자가 있는 입력을 제외할 때는 MATCHING_SCOPE_PARTIAL_MATCH와 함께 정규 표현식 규칙(regex)을 사용합니다.
  • 제외 규칙에는 시스템 한도가 적용됩니다. 자세한 내용은 제외 규칙 시스템 한도를 참조하세요.

제외 규칙이 있는 템플릿 만들기

제외 규칙이 있는 템플릿을 만들려면 POST 요청의 filterConfig 내에 filterRuleSettings 객체를 포함합니다.

다음 예시에서는 프롬프트 인젝션 및 탈옥 감지와 책임감 있는 AI 안전 필터를 사용 설정하고 부분 일치(MATCHING_SCOPE_PARTIAL_MATCH)가 있는 제외 규칙 두 개를 구성하는 템플릿을 만듭니다.

  • 프롬프트 인젝션 및 탈옥 감지(PROMPT_INJECTION_AND_JAILBREAK): 사전 규칙을 사용하여 ignore case when sorting this list 또는 ignore empty rows와 같은 지정된 구문이 포함된 입력을 프롬프트 인젝션 및 탈옥 감지에서 제외합니다.
  • 책임감 있는 AI(RESPONSIBLE_AI): 정규 표현식 규칙을 사용하여 지정된 패턴(예: (?i)kill process [0-9]+)과 일치하는 입력을 책임감 있는 AI 안전 감지에서 제외합니다.
export TEMPLATE_WITH_EXCLUSIONS='{
  "filterConfig": {
    "piAndJailbreakFilterSettings": {
      "filterEnforcement": "ENABLED",
      "confidenceLevel": "LOW_AND_ABOVE"
    },
    "raiSettings": {
      "raiFilters": [
        {
          "filterType": "DANGEROUS",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HARASSMENT",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HATE_SPEECH",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "SEXUALLY_EXPLICIT",
          "confidenceLevel": "LOW_AND_ABOVE"
        }
      ]
    },
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "EXCLUDED_PHRASE_1",
                      "EXCLUDED_PHRASE_2"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        },
        {
          "filterTypes": [
            "RESPONSIBLE_AI"
          ],
          "rules": [
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "EXCLUDED_REGEX_PATTERN"
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
  }
}'

curl -X POST \
    -d "$TEMPLATE_WITH_EXCLUSIONS" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates?template_id=TEMPLATE_ID"

다음을 바꿉니다.

  • EXCLUDED_PHRASE_1 및 EXCLUDED_PHRASE_2: 프롬프트 인젝션 및 탈옥 감지에서 제외할 사전 단어 또는 문구입니다(예: ignore case when sorting this list 및 ignore empty rows).
  • EXCLUDED_REGEX_PATTERN: 책임감 있는 AI 안전 감지에서 제외할 정규 표현식 패턴입니다(예: (?i)kill process [0-9]+).
  • PROJECT_ID: 템플릿이 속한 프로젝트의 ID
  • LOCATION: 템플릿의 위치
  • TEMPLATE_ID: 템플릿의 ID

이 명령어는 다음과 비슷한 응답을 반환합니다.

{
  "filterConfig": {
    "raiSettings": {
      "raiFilters": [
        {
          "filterType": "DANGEROUS",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HARASSMENT",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "HATE_SPEECH",
          "confidenceLevel": "LOW_AND_ABOVE"
        },
        {
          "filterType": "SEXUALLY_EXPLICIT",
          "confidenceLevel": "LOW_AND_ABOVE"
        }
      ]
    },
    "piAndJailbreakFilterSettings": {
      "filterEnforcement": "ENABLED",
      "confidenceLevel": "LOW_AND_ABOVE"
    },
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "ignore case when sorting this list",
                      "ignore empty rows"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        },
        {
          "filterTypes": [
            "RESPONSIBLE_AI"
          ],
          "rules": [
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "(?i)kill process [0-9]+"
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
  },
  "templateMetadata": {
    "dataResidencyCompliant": true
  }
}

템플릿의 제외 규칙 업데이트

기존 템플릿의 제외 규칙을 업데이트하려면 updateMask를 filterConfig.filterRuleSettings로 설정하여 PATCH 요청을 전송합니다. 업데이트는 전체 filterRuleSettings 필드를 대체하므로 수정사항과 함께 유지하려는 모든 규칙을 포함합니다.

다음 예시에서는 PROMPT_INJECTION_AND_JAILBREAK 규칙 집합에 정규 표현식 규칙을 추가하고 RESPONSIBLE_AI 규칙 집합을 삭제하여 이전 예시의 제외 규칙을 업데이트합니다.

export EXCLUSION_RULES_UPDATE='{
  "filterConfig": {
    "filterRuleSettings": {
      "ruleSets": [
        {
          "filterTypes": [
            "PROMPT_INJECTION_AND_JAILBREAK"
          ],
          "rules": [
            {
              "exclusionRule": {
                "dictionary": {
                  "wordList": {
                    "words": [
                      "EXCLUDED_PHRASE_1",
                      "EXCLUDED_PHRASE_2"
                    ]
                  }
                },
                "matchingScope": "MATCHING_SCOPE_PARTIAL_MATCH"
              }
            },
            {
              "exclusionRule": {
                "regex": {
                  "pattern": "EXCLUDED_REGEX_PATTERN"
                },
                "matchingScope": "MATCHING_SCOPE_FULL_MATCH"
              }
            }
          ]
        }
      ]
    }
  }
}'

curl -X PATCH \
    -d "$EXCLUSION_RULES_UPDATE" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID?updateMask=filterConfig.filterRuleSettings"

다음을 바꿉니다.

  • EXCLUDED_PHRASE_1 및 EXCLUDED_PHRASE_2: 프롬프트 인젝션 및 탈옥 감지에서 제외할 사전 단어 또는 문구입니다(예: ignore case when sorting this list 및 ignore empty rows).
  • EXCLUDED_REGEX_PATTERN: 프롬프트 인젝션 및 탈옥 감지에서 제외할 정규 표현식 패턴입니다(예: (?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b).
  • PROJECT_ID: 템플릿이 속한 프로젝트의 ID
  • LOCATION: 템플릿의 위치
  • TEMPLATE_ID: 템플릿의 ID

정규 표현식 제외 패턴 예시

정규 표현식 제외 규칙을 작성할 때는 Model Armor가 실제 보안 또는 안전 위반을 무시하지 않고 알려진 거짓양성을 제외하도록 패턴의 범위를 특정 도메인 용어나 대상 명사로 지정합니다. JSON 요청 본문("pattern") 내에서 정규 표현식 패턴을 전달할 때는 각 백슬래시를 두 번째 백슬래시로 이스케이프 처리합니다(예: \\b 및 \\s 사용).

프롬프트 인젝션 및 탈옥 감지 예시

ignore, disregard, bypass, override와 같은 명령형 동사는 적대적 프롬프트 인젝션과 이메일 분류, 데이터 형식 지정, 오류 처리 또는 시스템 구성에 대한 합법적인 지침 모두에서 자주 나타납니다. 광범위한 프롬프트 카테고리를 제외하지 않으려면 단어 경계(\\b), 비캡처 그룹((?:...)), 대소문자를 구분하지 않는 플래그((?i))를 MATCHING_SCOPE_PARTIAL_MATCH와 결합하여 정규 표현식을 특정 운영 대상 명사에 고정합니다.

다음 표에서는 일반적인 프롬프트 인젝션 및 탈옥 거짓양성 시나리오에 대한 부분 일치 정규 표현식 패턴(JSON 이스케이프 백슬래시 포함)과 프롬프트 예시를 보여줍니다.

요청 사항 카테고리 트리거 용어 오탐 시나리오 부분 일치 정규 표현식 패턴 예시 프롬프트 예시
콘텐츠 분류 및 필터링 ignore, disregard 이메일 분류, 오류 처리, 초안 검토 (?i)\\b(?:ignore\\s+(?:the\\s+)?(?:emails?|spams?|warnings?|drafts?|typos?|duplicates?|noise))\\b Summarize my inbox and ignore the emails from the marketing vendor.

책임감 있는 AI 안전 필터 예시

기술 문서, 시스템 관리 명령어, 일반적인 관용구에는 책임감 있는 AI 안전 카테고리와 중복되는 단어가 포함되는 경우가 많습니다. 더 큰 프롬프트 또는 응답에서 거짓양성을 완화하려면 단어 경계(\\b), 비캡처 그룹((?:...)), 대소문자를 구분하지 않는 플래그((?i))를 MATCHING_SCOPE_PARTIAL_MATCH와 결합합니다.

다음 표에는 부분 일치 정규 표현식 패턴(JSON 이스케이프 처리된 백슬래시 포함)의 예시와 일반적인 책임감 있는 AI 거짓양성 시나리오의 프롬프트 예시가 나와 있습니다.

위험 카테고리 트리거 용어 오탐 시나리오 부분 일치 정규 표현식 패턴 예시 프롬프트 예시
폭력 또는 상해 kill 프로세스 종료, 전기 또는 HVAC 스위치, 일반적인 관용구 (?i)\\b(?:kill\\s+(?:-9|all|process(?:es)?|switch(?:es)?|jobs?|pods?|sessions?|bill|lights?)|time\\s+to\\s+kill|dressed\\s+to\\s+kill)\\b Please kill all pods in the namespace.
악성 또는 불쾌감을 주는 표현 abort, terminate 데이터베이스 트랜잭션, 미션 수명 주기, 고용 또는 계약 조건 (?i)\\b(?:abort\\s+(?:transactions?|missions?|requests?|connections?|retry|retries)|terminate\\s+(?:contracts?|sessions?|threads?|instances?|connections?))\\b Abort retry.
도메인 용어의 하위 문자열 일치 중복되는 문자 하위 문자열 학술 용어, 식물학, 조류학, 항공, 고유명사 (?i)\\b(?:class(?:room|ic)?|assess(?:ment)?|associate|passive|peacock|cockpit|cocktail|dickens)\\b I love reading Dickens.
무기 또는 폭발물 bomb, blast, detonate 생물정보학, 엔터테인먼트 관용구, 산업 장비 또는 청소 (?i)\\b(?:blast\\s+(?:search|alignment|radius|furnace)|box\\s+office\\s+bomb|had\\s+a\\s+blast)\\b Run a blast search on the genetic sequence.

제외 규칙 로그 보기

제외 규칙 평가 결과를 로깅하려면 템플릿에서 로깅을 구성할 때 logSanitizeOperations를 true로 설정합니다. 로깅이 사용 설정되면 Model Armor는 modelarmor.googleapis.com/SanitizeOperation 모니터링 리소스의 SanitizeOperationLogEntry 로그 항목을 Cloud Logging에 기록합니다.

정제 로그를 사용 설정하고 쿼리하는 방법에 대한 자세한 내용은 로깅 구성을 참조하세요.

제외 규칙 구성 권장사항

템플릿의 보안 상황을 약화시키지 않고 거짓양성을 최소화하려면 다음 권장사항을 따르세요.

  • 규칙 범위를 특정 컨텍스트로 좁히기: 단일 동사나 광범위한 용어(예: ignore, kill, abort)를 제외하거나 제한 없는 와일드 카드(예: .*ignore.*)를 사용하지 마세요. MATCHING_SCOPE_PARTIAL_MATCH는 하위 문자열이 일치할 때마다 전체 필터에 대해 matchState를 NO_MATCH_FOUND로 재정의하므로 지나치게 광범위한 규칙은 동일한 프롬프트 또는 대답의 다른 위치에서 실제 위반을 가릴 수 있습니다. 항상 트리거 동사를 특정 대상 명사(예: ignore case when sorting this list 또는 (?i)kill process [0-9]+)와 페어링합니다.
  • 단어 경계 사용 및 패턴 통합: 정규 표현식 규칙에서 단어 경계(\b)를 사용하여 관련 없는 단어 내에서 실수로 하위 문자열이 일치하지 않도록 합니다. 비캡처 그룹((?:...)) 및 대체(|)를 사용하여 관련 구문을 단일 정규 표현식으로 통합하여 규칙 집합당 규칙 10개의 시스템 한도를 유지합니다.
  • 예측 가능한 입력에 MATCHING_SCOPE_FULL_MATCH 선호: 사전 정의된 UI 프롬프트, 미리 준비된 명령어 또는 자동화된 테스트 페이로드를 제외할 때는 matchingScope를 MATCHING_SCOPE_FULL_MATCH로 설정하거나 ^ 및 $로 정규 표현식을 고정합니다. 전체 일치 범위 지정을 사용하면 사용자가 제외된 구문에 적대적 안내를 추가하여 감지를 우회하는 것을 방지할 수 있습니다.
  • 변환되지 않은 원시 텍스트에 대한 규칙 작성: Model Armor는 익명화 또는 번역 전에 제외 규칙을 평가합니다. 패턴이 익명화 전의 원래 형식과 일치하는지 확인하고 애플리케이션에서 지원하는 각 언어에 대해 언어별 구문 또는 정규 표현식 패턴을 추가합니다.
  • 필터 업그레이드 후 임시 규칙 검토 및 사용 중지: 템플릿을 최신 필터 버전으로 업그레이드할 때 거짓양성 테스트 사례를 다시 평가하고 업데이트된 감지 모델로 해결된 제외 규칙을 삭제합니다.

다음 단계