使用 Guardrails 有选择地评估带有标签的用户输入 - Amazon Bedrock

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

使用 Guardrails 有选择地评估带有标签的用户输入

输入标签允许您在输入文本中标记要由 Guardrails 处理的特定内容。当你想将护栏应用于输入的某些部分,而对其他部分不进行处理时,这很有用。

例如,RAG 应用程序中的输入提示可能包含系统提示、来自可信文档来源的搜索结果和用户查询。由于系统提示由开发人员提供,并且搜索结果来自可信来源,因此您可能只需要对用户查询进行Guardrails评估即可。

在另一个示例中,对话应用程序中的输入提示可能包含系统提示、对话历史记录和当前用户输入。系统提示是开发者特定的说明,对话历史记录包含历史用户输入和模型响应,Guardrails可能已经对其进行了评估。在这种情况下,您可能只想评估当前的用户输入。

通过使用输入标签,您可以更好地控制输入提示的哪些部分应由 Guardrails 处理和评估,从而确保根据您的用例定制保护措施。这还有助于提高性能和降低成本,因为您可以灵活地评估输入中相对较短且相关的部分,而不是整个输入提示。

护栏的标签内容

要标记内容以供 Guardrails 处理,请使用由保留前缀和自定义前缀组合而成的 XML 标签。tagSuffix例如:

{ "inputText": """ You are a helpful assistant. Here is some information about my account: - There are 10,543 objects in an S3 bucket. - There are no active EC2 instances. Based on the above, answer the following question: Question: <amazon-bedrock-guardrails-guardContent_xyz> How many objects do I have in my S3 bucket? </amazon-bedrock-guardrails-guardContent_xyz> ... Here are other user queries: ≪amazon-bedrock-guardrails-guardContent_xyz> How do I download files from my S3 bucket? ≪/amazon-bedrock-guardrails-guardContent_xyz> """, "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz" } }

在前面的示例中,内容 “我的 S3 存储桶中有多少个对象? `和 "“如何从我的 S3 存储桶下载文件? “ 使用标签标记用于护栏处理。<amazon-bedrock-guardrails-guardContent_xyz>请注意,该前缀由 Guar amazon-bedrock-guardrails-guardContent drails 保留。

标签后缀

标签后缀(xyz在前面的示例中)是一个动态值,您必须在中的tagSuffix字段中提供该值amazon-bedrock-guardrailConfig才能使用输入标记。通过使标签结构不可预测,这有助于缓解潜在的即时注入攻击。静态标签可导致恶意用户关闭 xml 标签并在标签关闭后附加恶意内容,从而导致注入攻击。您只能使用长度介于 1 到 20 个字符(含)之间的字母数字字符。使用示例后缀xyz,您必须使用带有后缀:<amazon-bedrock-guardrails-guardContent_xyz>. 的 xml 标签以及您的内容来封装所有需要保护的内容。</amazon-bedrock-guardrails-guardContent_xyz>我们建议UUID为每个请求使用动态作为标签后缀

多个标签

您可以在输入文本中多次使用相同的标签结构来标记内容的不同部分,以便 Guardrails 处理。不允许嵌套标签。

未加标签的内容

Guardrails 不会处理输入标签之外的任何内容。这允许您添加说明、示例对话、知识库或其他您认为安全且不想被 Guardrails 处理的内容。如果输入提示中没有标签,则完整的提示将由 Guardrails 处理。唯一的例外是要求存在输入标签的即时攻击过滤器。