애플리케이션에서 사용 ApplyGuardrail API - Amazon Bedrock

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

애플리케이션에서 사용 ApplyGuardrail API

Guardrails는 사용 사례에 맞게 사용자 지정되고 책임 있는 AI 정책에 부합하는 생성형 AI 애플리케이션에 대한 보호 기능을 구현하는 데 사용됩니다. 가드레일을 사용하면 거부된 주제를 구성하고, 유해한 콘텐츠를 필터링하고, 민감한 정보를 제거할 수 있습니다.

ApplyGuardrail API 를 사용하여 파운데이션 모델을 호출하지 않고도 사전 구성된 Amazon Bedrock 가드레일을 사용하여 모든 텍스트를 평가할 수 있습니다.

의 기능ApplyGuardrailAPI:

  • Content Validation - 텍스트 입력 또는 출력을 로 전송ApplyGuardrailAPI하여 정의된 주제 회피 규칙, 콘텐츠 필터, PII 탐지기 및 워드 블록 목록과 비교할 수 있습니다. 사용자 입력과 FM 생성 출력을 독립적으로 평가할 수 있습니다.

  • 유연한 배포 - 결과를 처리하거나 사용자에게 제공하기 전에 애플리케이션 흐름의 ApplyGuardrail API 모든 를 통합하여 데이터를 검증할 수 있습니다. 예를 들어 RAG 애플리케이션을 사용하는 경우 이제 최종 응답 생성까지 기다리는 대신 검색을 수행하기 전에 사용자 입력을 평가할 수 있습니다.

  • 에서 분리되었습니다FMs. - 기본 모델에서 ApplyGuardrail API 분리됩니다. 이제 파운데이션 모델을 호출하지 않고도 Guardrail을 사용할 수 있습니다. 평가 결과를 사용하여 생성형 AI 애플리케이션에 대한 경험을 설계할 수 있습니다.

앱 흐름에서 호출 ApplyGuardrail API

이 요청을 통해 고객은 정의된 Guardrail을 사용하여 보호해야 하는 모든 콘텐츠를 전달할 수 있습니다. 평가할 콘텐츠가 일반적으로 LLM 프롬프트인 사용자로부터 온 경우 소스 필드를 “INPUT”로 설정해야 합니다. 모델 출력 Guardrails를 적용해야 하는 경우 일반적으로 LLM 응답을 통해 소스를 “OUTPUT”로 설정해야 합니다.

주제

    와 함께 사용할 가드레일 구성 ApplyGuardrail API

    guardrailConfig 입력 파라미터에서 가드레일의 구성 정보를 지정합니다. 구성에는 사용하려는 가드레일의 ID와 버전이 포함됩니다. 가드레일이 차단한 콘텐츠에 대한 정보를 제공하는 가드레일에 대한 추적을 활성화할 수도 있습니다.

    ApplyGuardrail API Request
    POST /guardrail/{guardrailIdentifier}/version/{guardrailVersion}/apply HTTP/1.1 { "source": "INPUT" | "OUTPUT", "content": [ { "text": { "text": "string", } }, ] }
    ApplyGuardrail API Response
    { "usage": { "topicPolicyUnits": "integer", "contentPolicyUnits": "integer", "wordPolicyUnits": "integer", "sensitiveInformationPolicyUnits": "integer", "sensitiveInformationPolicyFreeUnits": "integer", "contextualGroundingPolicyUnits": "integer" }, "action": "GUARDRAIL_INTERVENED" | "NONE", "output": [ // if guardrail intervened and output is masked we return request in same format // with masking // if guardrail intervened and blocked, output is a single text with canned message // if guardrail did not intervene, output is empty array { "text": "string", }, ], "assessments": [{ "topicPolicy": { "topics": [{ "name": "string", "type": "DENY", "action": "BLOCKED", }] }, "contentPolicy": { "filters": [{ "type": "INSULTS | HATE | SEXUAL | VIOLENCE | MISCONDUCT |PROMPT_ATTACK", "confidence": "NONE" | "LOW" | "MEDIUM" | "HIGH", "filterStrength": "NONE" | "LOW" | "MEDIUM" | "HIGH", "action": "BLOCKED" }] }, "wordPolicy": { "customWords": [{ "match": "string", "action": "BLOCKED" }], "managedWordLists": [{ "match": "string", "type": "PROFANITY", "action": "BLOCKED" }] }, "sensitiveInformationPolicy": { "piiEntities": [{ // for all types see: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GuardrailPiiEntityConfig.html#bedrock-Type-GuardrailPiiEntityConfig-type "type": "ADDRESS" | "AGE" | ..., "match": "string", "action": "BLOCKED" | "ANONYMIZED" }], "regexes": [{ "name": "string", "regex": "string", "match": "string", "action": "BLOCKED" | "ANONYMIZED" }], "contextualGroundingPolicy": { "filters": [{ "type": "GROUNDING | RELEVANCE", "threshold": "double", "score": "double", "action": "BLOCKED | NONE" }] }, "invocationMetrics": { "guardrailProcessingLatency": "integer", "usage": { "topicPolicyUnits": "integer", "contentPolicyUnits": "integer", "wordPolicyUnits": "integer", "sensitiveInformationPolicyUnits": "integer", "sensitiveInformationPolicyFreeUnits": "integer", "contextualGroundingPolicyUnits": "integer" }, "guardrailCoverage": { "textCharacters": { "guarded":"integer", "total": "integer" } } } }, "guardrailCoverage": { "textCharacters": { "guarded": "integer", "total": "integer" } } ] }

    사용 사례의 ApplyGuardrail API 예

    ApplyGuardrail 요청의 출력은 전달된 콘텐츠에서 수행한 작업 가드레일에 따라 달라집니다.

    • 콘텐츠가 마스킹된 경우에만 가드레일이 개입되면 마스킹이 적용된 상태로 정확한 콘텐츠가 반환됩니다.

    • 가드레일이 개입하여 요청 콘텐츠를 차단한 경우 출력 필드는 단일 텍스트로, 가드레일 구성을 기반으로 미리 구성된 메시지입니다.

    • 요청 콘텐츠에 가드레일 작업이 수행되지 않은 경우 출력 배열이 비어 있습니다.

    No guardrail intervention

    요청 예제

    { "source": "OUTPUT", "content": [ "text": { "text": "Hi, my name is Zaid. Which car brand is reliable?", } ] }

    Guardrails가 개입하지 않은 경우의 응답

    { "usage": { "topicPolicyUnitsProcessed": 1, "contentPolicyUnitsProcessed": 1, "wordPolicyUnitsProcessed": 0, "sensitiveInformationPolicyFreeUnits": 0 }, "action": "NONE", "outputs": [], "assessments": [{}] }
    Guardrails intervened with BLOCKED action

    응답 예제

    { "usage": { "topicPolicyUnitsProcessed": 1, "contentPolicyUnitsProcessed": 1, "wordPolicyUnitsProcessed": 0, "sensitiveInformationPolicyFreeUnits": 0 }, "action": "GUARDRAIL_INTERVENED", "outputs": [{ "text": "Configured guardrial canned message, i.e cannot respond", }], "assessments": [{ "topicPolicy": { "topics": [{ "name": "Cars", "type": "DENY", "action": "BLOCKED" }] }, "sensitiveInformationPolicy": { "piiEntities": [{ "type": "NAME", "match": "ZAID", "action": "ANONYMIZED" }], "regexes": [] } }] }
    Guardrails intervened with MASKED action

    응답 예제

    이름 마스킹에 개입된 가드레일(이름은 마스킹됨)

    { "usage": { "topicPolicyUnitsProcessed": 1, "contentPolicyUnitsProcessed": 1, "wordPolicyUnitsProcessed": 0, "sensitiveInformationPolicyFreeUnits": 0 }, "action": "GUARDRAIL_INTERVENED", "outputs": [ { "text": "Hi, my name is {NAME}. Which car brand is reliable?" }, { "text": "Hello {NAME}, ABC Cars are reliable..", } ], "assessments": [{ "sensitiveInformationPolicy": { "piiEntities": [{ "type": "NAME", "match": "ZAID", "action": "MASKED" }], "regexes": [] } }] }
    AWS CLI Example

    입력 예제

    # Make sure preview CLI is downloaded and setup aws bedrock-runtime apply-guardrail \ --cli-input-json '{ "guardrailIdentifier": "someGuardrailId", "guardrailVersion": "DRAFT", "source": "INPUT", "content": [ { "text": { "text": "How should I invest for my retirement? I want to be able to generate $5,000 a month" } } ] }' \ --region us-east-1 \ --output json

    출력 예시

    { "usage": { "topicPolicyUnits": 1, "contentPolicyUnits": 1, "wordPolicyUnits": 1, "sensitiveInformationPolicyUnits": 1, "sensitiveInformationPolicyFreeUnits": 0 }, "action": "GUARDRAIL_INTERVENED", "outputs": [ { "text": "I apologize, but I am not able to provide fiduciary advice. =" } ], "assessments": [ { "topicPolicy": { "topics": [ { "name": "Fiduciary Advice", "type": "DENY", "action": "BLOCKED" } ] } } ] }