アプリケーションで ApplyGuardrail APIを使用する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アプリケーションで ApplyGuardrail APIを使用する

ガードレールは、生成 AI アプリケーションに保護を実装するために使用されます。この保護は、ユースケースに合わせてカスタマイズされ、責任のある AI ポリシーに合わせて調整されます。ガードレールを使用すると、拒否されたトピックの設定、有害なコンテンツのフィルタリング、機密情報の削除を行うことができます。

を使用してApplyGuardrailAPI、基盤モデルを呼び出すことなく、事前設定された Amazon Bedrock Guardrails を使用してテキストを評価できます。

の特徴ApplyGuardrailAPI:

  • コンテンツ検証 – テキスト入力または出力を に送信ApplyGuardrailAPIして、定義されたトピック回避ルール、コンテンツフィルター、PIIディテクター、単語ブロックリストと比較できます。ユーザー入力と FM 生成出力を個別に評価できます。

  • 柔軟なデプロイ — アプリケーションフローのApplyGuardrailAPI任意の場所を統合して、結果を処理またはユーザーに配信する前にデータを検証できます。例えば、RAGアプリケーションを使用している場合は、最終レスポンス生成まで待つ代わりに、取得を実行する前にユーザー入力を評価できるようになりました。

  • から分離されましたFMs。– ApplyGuardrailAPIは基本モデルから分離されます。Foundation Models を呼び出すことなく Guardrails を使用できるようになりました。評価結果を使用して、生成 AI アプリケーションでの経験を設計できます。

アプリケーションフローで ApplyGuardrail APIを呼び出す

このリクエストにより、お客様は定義された Guardrails を使用して保護する必要があるすべてのコンテンツを渡すことができます。評価対象のコンテンツがユーザー、通常はLLMプロンプトからのものである場合は、ソースフィールドをINPUT「」に設定する必要があります。モデル出力ガードレールを適用する必要がある場合、ソースはOUTPUT「」に設定する必要があります。通常はLLMレスポンスです。

トピック

    で使用するガードレールの設定 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 リクエストの出力は、渡されたコンテンツに対してガードレールが取ったアクションによって異なります。

    • コンテンツがマスクされているのみの場所にガードレールが介入した場合、正確なコンテンツはマスキングが適用された状態で返されます。

    • ガードレールがリクエストコンテンツを介入してブロックした場合、出力フィールドは 1 つのテキストになります。これはガードレール設定に基づく固定メッセージです。

    • リクエストコンテンツに対してガードレールアクションが実行されなかった場合、出力配列は空です。

    No guardrail intervention

    リクエストの例

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

    ガードレールが介入しなかった場合のレスポンス

    { "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" } ] } } ] }