测试护栏 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

测试护栏

创建护栏后,即可获得工作草稿 (DRAFT) 版本。工作草案是护栏的一个版本,你可以不断对其进行编辑和迭代,直到为你的用例找到令人满意的配置。您可以测试护栏的工作草稿或其他版本,以查看配置是否适合您的用例。编辑工作草稿中的配置并测试不同的提示,以查看护栏对提示或响应的评估和拦截效果如何。如果您对配置感到满意,则可以创建护栏的版本,该版本在创建版本时用作工作草案配置的快照。每次修改护栏时,您都可以使用版本来简化向生产应用程序部署护栏的流程。除非您在应用程序中专门使用新版本,否则对工作草案或创建的新版本的任何更改都不会反映在您的生成式 AI 应用程序中。

Console
测试护栏
  1. 登录并打开 Amazon Bedrock 控制台,网址为 https://console.aws.amazon.com/bedrock/。 AWS Management Console

  2. 从左侧导航窗格中选择 Guardrails。然后,在护栏部分选择护栏

  3. 右侧会出现一个测试窗口。测试窗口中有以下选项:

    1. 默认情况下,在测试窗口中使用护栏的工作草稿。要测试其他版本的护栏,请选择测试窗口顶部的工作草稿,然后选择版本。

    2. 要选择模型,请选择选择模型。做出选择后,选择 “应用”。要更改模型,请选择更改

    3. 在 “提示” 框中输入提示

    4. 要获得模型响应,请选择运行

    5. 模型在最终响应框中返回响应(可通过护栏进行修改)。如果护栏屏蔽或过滤了提示或模型响应,则在 Guardrail 检查下方会显示一条消息,告知您护栏检测到了多少违规行为。

    6. 要查看提示或回复中已识别并允许通过筛选器或被过滤器屏蔽的主题或有害类别,请选择查看跟踪

    7. 使用 “提示” 和 “模型响应” 选项卡查看被护栏筛选或屏蔽的主题或有害类别。

你也可以在文字操场上测试护栏。在测试提示之前,选择操场并在 “配置” 窗格中选择护栏

API

要在模型调用中使用护栏,请发送或请求。InvokeModelInvokeModelWithResponseStream

请求格式

调用模型的请求端点(无论是否使用流媒体)如下所示。将 modelID 替换为要使用的模型的 ID。

  • InvokeModel— POST /model/ modeliD /invoke HTTP/1.1

  • InvokeModelWithResponseStream— POST /model/ modeliD/ HTTP/1.1 invoke-with-response-stream

这两个 API 操作的标头均采用以下格式。

Accept: accept Content-Type: contentType X-Amzn-Bedrock-Trace: trace X-Amzn-Bedrock-GuardrailIdentifier: guardrailIdentifier X-Amzn-Bedrock-GuardrailVersion: guardrailVersion

参数说明如下。

  • 设置Accept为响应中推理主体的 MIME 类型。默认值为 application/json

  • 设置Content-Type为请求中输入数据的 MIME 类型。默认值为 application/json

  • 设置X-Amzn-Bedrock-TraceENABLED为可启用追踪功能,除其他外,可以查看哪些内容被 Guardrails 屏蔽以及为什么...

  • X-Amzn-Bedrock-GuardrailIdentifier使用要应用于请求和模型响应的护栏标识符进行设置。

  • X-Amzn-Bedrock-GuardrailVersion 使用要应用于请求和模型响应的护栏版本进行设置。

以下示例显示了常规请求正文格式。该tagSuffix属性仅用于输入标记。您也可以使用配置同步或异步流式传输的护栏。streamProcessingMode这仅适用于InvokeModelWithResponseStream

{ <see model details>, "amazon-bedrock-guardrailConfig": { "tagSuffix": "string", "streamProcessingMode": "SYNCHRONOUS" | "ASYNCHRONOUS" } }
警告

在以下情况下,您将收到错误消息

  • 您启用了护栏,但请求正文中没有amazon-bedrock-guardrailConfig字段。

  • 您禁用了护栏,但在请求正文中指定了一个amazon-bedrock-guardrailConfig字段。

  • 您启用了护栏,但未启contentType用。application/json

要查看不同模型的请求正文,请参阅根基模型的推理参数

注意

对于CohereCommand模型,如果使用护栏,则只能在num_generations字段中指定一代。

如果您启用了护栏及其跟踪,则调用模型的响应的一般格式,无论是否使用流式传输,均如下所示。要查看每个模型的其余部分body的格式,请参阅根基模型的推理参数ContentTyp e 与您在请求中指定的内容相匹配。

  • InvokeModel

    HTTP/1.1 200 Content-Type: contentType { <see model details for model-specific fields>, "completion": "<model response>", "amazon-bedrock-guardrailAction": "INTERVENED | NONE", "amazon-bedrock-trace": { "guardrail": { "modelOutput": [ "<see model details for model-specific fields>" ], "input": { "<sample-guardrailId>": { "topicPolicy": { "topics": [ { "name": "string", "type": "string", "action": "string" } ] }, "contentPolicy": { "filters": [ { "type": "string", "confidence": "string", "action": "string" } ] }, "wordPolicy": { "customWords": [ { "match": "string", "action": "string" } ], "managedWordLists": [ { "match": "string", "type": "string", "action": "string" } ] }, "sensitiveInformationPolicy": { "piiEntities": [ { "type": "string", "match": "string", "action": "string" } ], "regexes": [ { "name": "string", "regex": "string", "match": "string", "action": "string" } ] } } }, "outputs": ["<same guardrail trace format as input>"] } } }
  • InvokeModelWithResponseStream— 每个响应都会返回一个,chunk其文本在bytes字段中,以及出现的任何异常。仅返回最后一块的护栏轨迹。

    HTTP/1.1 200 X-Amzn-Bedrock-Content-Type: contentType Content-type: application/json { "chunk": { "bytes": "<blob>" }, "internalServerException": {}, "modelStreamErrorException": {}, "throttlingException": {}, "validationException": {}, "amazon-bedrock-guardrailAction": "INTERVENED | NONE", "amazon-bedrock-trace": { "guardrail": { "modelOutput": ["<see model details for model-specific fields>"], "input": { "<sample-guardrailId>": { "topicPolicy": { "topics": [ { "name": "string", "type": "string", "action": "string" } ] }, "contentPolicy": { "filters": [ { "type": "string", "confidence": "string", "action": "string" } ] }, "wordPolicy": { "customWords": [ { "match": "string", "action": "string" } ], "managedWordLists": [ { "match": "string", "type": "string", "action": "string" } ] }, "sensitiveInformationPolicy": { "piiEntities": [ { "type": "string", "match": "string", "action": "string" } ], "regexes": [ { "name": "string", "regex": "string", "match": "string", "action": "string" } ] } } }, "outputs": ["<same guardrail trace format as input>"] } } }

如果您启用了护栏,则响应会返回以下字段。

  • amazon-bedrock-guardrailAssessment— 指定是否设置护栏 INTERVENED () NONE

  • amazon-bedrock-trace— 仅在启用跟踪时才会出现。包含跟踪列表,每条轨迹都提供有关护栏屏蔽的内容的信息。该跟踪包含以下字段:

    • modelOutput— 一个包含被屏蔽的模型输出的对象。

    • input— 包含有关护栏对提示的评估的以下详细信息:

      • topicPolicy— 包含topics违反的每个主题政策的评估列表。每个主题都包含以下字段:

        • name— 主题策略的名称。

        • type— 指定是否拒绝该主题。

        • action— 指定该主题已被屏蔽

      • contentPolicy— 包含filters,每个违规内容过滤器的评估列表。每个筛选器都包含以下字段:

        • type— 内容过滤器的类别。

        • confidence— 输出可归类为有害类别的可信度。

        • action— 指定内容已被屏蔽。此结果取决于护栏中设置的过滤器的强度。

      • wordPolicy— 包含一组自定义单词和经过筛选的托管单词以及对这些单词的相应评估。每个列表都包含以下字段:

        • customWords— 与筛选条件匹配的自定义单词列表。

          • match— 与筛选条件匹配的单词或短语。

          • action— 指定该单词已被屏蔽。

        • managedWordLists— 与筛选条件匹配的托管单词列表。

          • match— 与筛选条件匹配的单词或短语。

          • type— 指定与筛选条件匹配的托管单词的类型。例如,PROFANITY如果它与亵渎过滤器匹配。

          • action— 指定该单词已被屏蔽。

      • sensitiveInformationPolicy— 包含以下对象,其中包含对个人身份信息 (PII) 的评估和违规的正则表达式过滤器:

        • piiEntities— 每个 PII 过滤器违规的评估列表。每个过滤器都包含以下字段:

          • type— 找到的 PII 类型。

          • match— 与筛选条件匹配的单词或短语。

          • action— 指定该单词是用标识符 () BLOCKED 还是替换为标识符 (ANONYMIZED)。

        • regexes— 每个被违反的正则表达式过滤器的评估列表。每个过滤器都包含以下字段:

          • name— 正则表达式过滤器的名称。

          • regex— 找到的 PII 类型。

          • match— 与筛选条件匹配的单词或短语。

          • action— 指定该单词是用标识符 () BLOCKED 还是替换为标识符 (ANONYMIZED)。

    • outputs— 有关护栏对模型响应的评估的详细信息清单。列表中的每个项目都是一个与对象格式相匹配的input对象。有关更多详细信息,请参阅字input段。