本页面详细介绍了如何清理提示和回答。 Model Armor 提供了一组过滤器来保护您的 AI 应用。Model Armor 会针对已配置的过滤置信度级别检查提示和回答。
准备工作
按照创建模板中的说明创建模板。
获取所需的权限
如需获得清理提示和回答所需的权限,请让您的管理员为您授予 Model Armor 的以下 IAM 角色:
-
Model Armor User (
roles/modelarmor.user
) -
Model Armor Viewer (
roles/modelarmor.viewer
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
启用 API
您必须先启用 Model Armor API,然后才能使用 Model Armor。
控制台
Enable the Model Armor API.
选择要启用 Model Armor 的项目。
gcloud
在开始之前,请使用 Google Cloud CLI 和 Model Armor API 按照以下步骤操作:
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
运行以下命令,为 Model Armor 服务设置 API 端点。
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
将
LOCATION
替换为您要使用 Model Armor 的区域。SDP_PROJECT_ID
:高级敏感数据保护模板所属项目的 ID。PROJECT_NUMBER
:模板所属项目的编号。PROJECT_ID
:模板的项目 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。PROJECT_ID
:模板的项目 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。FILE_TYPE
:输入文件的格式。CREDIT_CARD_NUMBER
:信用卡号由 12 至 19 位数字组成。可用于全球付款交易。FINANCIAL_ACCOUNT_NUMBER
:指向特定金融账号的编号,例如银行账号或退休账号。GCP_CREDENTIALS
: Google Cloud 服务账号凭证。这些凭据可用于通过 {api_client_lib_name} 和服务账号进行身份验证。GCP_API_KEY
: Google Cloud API密钥。在调用不需要访问私有用户数据的 Google Cloud API 时使用的加密字符串。PASSWORD
:配置、代码和其他文本中的明文密码。US_SOCIAL_SECURITY_NUMBER
:美国社会保障号 (SSN) 是核发给美国公民、永久居民和临时居民的一个 9 位数号码。此检测器不会与任何数字群组中全为零的数字(即 000-###-####、###-00-#### 或 ###-####-0000)、第一个数字群组中为 666 的数字或第一个数字为 9 的数字进行比对。US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
:美国个人纳税人识别号码 (ITIN) 是由美国国税局 (IRS) 核发的一种税号 (TIN)。ITIN 是一种税务处理编号,仅适用于无法获得社会保障号 (SSN) 的某些居民外籍人士和非居民外籍人士,以及他们的配偶和家属。TEMPLATE_ID
:模板的 ID。LOCATION
:模板的位置。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。TEMPLATE_ID
:模板的 ID。LOCATION
:模板的位置。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。此示例会返回以下响应:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "dangerous": { "confidenceLevel": "MEDIUM_AND_ABOVE", "matchState": "MATCH_FOUND" }, "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, } } }
PROJECT_ID
:模板所属项目的 ID。LOCATION
:模板的位置。TEMPLATE_ID
:模板的 ID。- 详细了解 Model Armor。
- 了解 Model Armor 下限设置。
- 了解 Model Armor 模板。
- 排查 Model Armor 问题。
运行以下命令以启用 Model Armor。
gcloud services enable modelarmor.googleapis.com --project=PROJECT_ID
将 PROJECT_ID
替换为相应项目的 ID。
在包含 Sensitive Data Protection 模板的项目中,将 DLP User 角色 (roles/dlp.user
) 和 DLP Reader 角色 (roles/dlp.reader
) 授予作为创建模板的高级 Sensitive Data Protection 步骤的一部分创建的服务代理。
如果 Sensitive Data Protection 模板与 Model Armor 模板位于同一项目中,请跳过此步骤。
gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.user gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.reader
替换以下内容:
清理提示
清理提示,以防止恶意输入,并帮助确保发送给 LLM 的提示安全且适当。
文本提示
Model Armor 会通过分析文本并应用不同的过滤条件来清理文本提示,以识别和缓解潜在威胁。
REST
使用以下命令可在 Model Armor 中清理文本提示。
curl -X POST \
-d '{"userPromptData":{"text":"[UNSAFE TEXT]"}}' \
-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:sanitizeUserPrompt"
替换以下内容:
这会返回以下响应。请注意,MATCH_FOUND
属于“危险”类别。
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" }, "dangerous": { "matchState": "MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND" } }, "sdp": { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } } } } } }
Go
Java
Node.js
PHP
Python
如需运行此代码,请设置 Python 开发环境并安装 Model Armor Python SDK。
这会返回以下响应。
sanitization_result { filter_match_state: MATCH_FOUND filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "dangerous" value { confidence_level: HIGH match_state: MATCH_FOUND } } } } } filter_results { key: "pi_and_jailbreak" value { pi_and_jailbreak_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND confidence_level: HIGH } } } filter_results { key: "malicious_uris" value { malicious_uri_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } filter_results { key: "csam" value { csam_filter_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } invocation_result: SUCCESS }
在启用多语言检测的情况下清理文本提示
通过为各个请求将 enableMultiLanguageDetection
标志设置为 true
,按请求启用多语言检测。您可以选择性地指定源语言,以获得更准确的结果。如果未指定源语言,系统会自动检测源语言,以提供多语言支持。
使用以下命令在请求级别启用多语言检测时,清理 Model Armor 中的文本提示。
curl -X POST \ -d '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -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:sanitizeUserPrompt"
替换以下内容:
基于文件的提示
如需清理存储在文件中的提示,请以 base64 格式提供文件内容。Model Armor 不会自动检测文件类型。您必须明确设置 byteDataType
字段以指明文件格式。如果缺少或未指定该字段,请求会失败。可能的 byteDataType
值包括 PLAINTEXT_UTF8
、PDF
、WORD_DOCUMENT
、EXCEL_DOCUMENT
、POWERPOINT_DOCUMENT
、TXT
和 CSV
。
REST
curl -X POST \ -d "$(jq -n \ --arg data "$(base64 -w 0 -i sample.pdf)" \ '{userPromptData: {byteItem: {byteDataType: "FILE_TYPE", byteData: $data}}}')" \ -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:sanitizeUserPrompt"
替换以下内容:
Go
Java
Node.js
PHP
Python
如需运行此代码,请设置 Python 开发环境并安装 Model Armor Python SDK。
基本 Sensitive Data Protection 配置
Model Armor 与 Sensitive Data Protection 集成,有助于防止私密信息意外泄露。创建一个启用了基本 Sensitive Data Protection 设置的模板。基本 Sensitive Data Protection 可帮助您过滤一组固定的 Sensitive Data Protection infoType。
所有区域的提示中都会扫描以下 Sensitive Data Protection infoType:
美国区域的提示中都会扫描以下额外的 Sensitive Data Protection infoType:
以下是基本 Sensitive Data Protection 配置示例:
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
替换以下内容:
REST
export FILTER_CONFIG_SDP_BASIC='{ "filterConfig": { "sdpSettings": { "basicConfig": { "filterEnforcement": "ENABLED" } } } }' curl -X PATCH \ -d "$FILTER_CONFIG_SDP_BASIC" \ -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.sdpSettings.basicConfig.filterEnforcement"
替换以下内容:
Go
Java
Node.js
PHP
Python
如需运行此代码,请设置 Python 开发环境并安装 Model Armor Python SDK。
使用创建的模板来筛选提示。示例如下:
curl -X POST \ -d '{"userPromptData":{"text":"can you remember my ITIN : ###-##-####"}}' \ -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:sanitizeUserPrompt"
替换以下内容:
此示例会返回以下响应:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "findings": [ { "infoType": "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER", "likelihood": "LIKELY", "location": { "byteRange": { "start": "26", "end": "37" }, "codepointRange": { "start": "26", "end": "37" } } } ] } } } ] } }
高级 Sensitive Data Protection 配置
Model Armor 使用高级 Sensitive Data Protection 配置设置来过滤 LLM 提示和回答。这样,您就可以使用基本 Sensitive Data Protection 设置中提供的 infoType 之外的 Sensitive Data Protection 功能。
如需在 Model Armor 中使用 Sensitive Data Protection 高级过滤器,Sensitive Data Protection 模板必须位于与 Model Armor 模板相同的云位置。
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
替换以下内容:
REST
export FILTER_CONFIG_SDP_ADV='{ "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }' curl -X POST \ -d "$FILTER_CONFIG_SDP_ADV" \ -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.sdpSettings.advancedConfig"
替换以下内容:
此示例会返回以下响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/templates/all-filters-test", "createTime": "2024-12-16T17:08:19.626693819Z", "updateTime": "2024-12-16T17:08:19.626693819Z", "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }
Go
Java
Node.js
PHP
Python
如需运行此代码,请设置 Python 开发环境并安装 Model Armor Python SDK。
使用创建的模板来筛选提示。示例如下:
curl -X POST \ -d '{"userPromptData":{"text":"is there anything malicious running on 1.1.1.1?"}}' \ -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:sanitizeUserPrompt"
替换以下内容:
此示例会返回以下响应:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "deidentifyResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "data": { "text": "is there anything malicious running on [IP_ADDRESS]?" }, "transformedBytes": "7", "infoTypes": ["IP_ADDRESS"] } } } ] } }
清理模型响应
LLM 有时会生成有害的回答。为了降低在应用中使用 LLM 带来的风险,请务必清理其回答。
以下是用于在 Model Armor 中清理模型回答的命令示例。
REST
curl -X POST \
-d '{"text":"IP address of the current network is ##.##.##.##"}' \
-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:sanitizeModelResponse"
替换以下内容:
Go
Java
Node.js
PHP
Python
如需运行此代码,请设置 Python 开发环境并安装 Model Armor Python SDK。
在启用多语言检测的情况下清理模型回答
通过为各个回应将 enableMultiLanguageDetection
标志设置为 true
,按请求启用多语言检测。
您可以选择性地指定源语言,以获得更准确的结果。如果未指定源语言,系统会自动检测源语言,以提供多语言支持。
curl -X POST \ -d '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -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:sanitizeModelResponse"
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-19。