Nesta página, descrevemos como limpar comandos e respostas em detalhes. O Model Armor oferece um conjunto de filtros para proteger seus aplicativos de IA. O Model Armor verifica comandos e respostas de acordo com os níveis de confiança de triagem configurados.
Antes de começar
Crie um modelo seguindo as instruções em Criar modelos.
Receber as permissões necessárias
Para receber as permissões necessárias para limpar comandos e respostas, peça ao administrador que conceda a você os seguintes papéis do IAM no Model Armor:
- Usuário do Model Armor (
roles/modelarmor.user) - Leitor do Model Armor (
roles/modelarmor.viewer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
No projeto que contém o modelo da Proteção de Dados Sensíveis, conceda os papéis Usuário da DLP (roles/dlp.user) e Leitor da DLP (roles/dlp.reader) ao agente de serviço criado como parte da etapa de Proteção de Dados Sensíveis avançada de Criar modelos.
Pule esta etapa se o modelo da Proteção de dados sensíveis estiver no mesmo projeto que o modelo do 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
Substitua:
SDP_PROJECT_ID: o ID do projeto a que o modelo avançado da Proteção de dados sensíveis pertence.PROJECT_NUMBER: o número do projeto a que o modelo pertence.
Ativar APIs
É necessário ativar a API Model Armor antes de usar o Model Armor.
Console
Ativar a API Model Armor.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.Selecione o projeto em que você quer ativar o Model Armor.
gcloud
Antes de começar, siga estas etapas usando a Google Cloud CLI com a API Model Armor:
No console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Defina a substituição do endpoint de API usando a CLI gcloud.
Definir a substituição do endpoint de API usando a CLI gcloud
Esta etapa só é necessária se você estiver usando a CLI gcloud para ativar a API Model Armor. É necessário definir manualmente a substituição do endpoint de API para garantir que a CLI gcloud roteie corretamente as solicitações para o serviço Model Armor.
Execute o comando a seguir para definir o endpoint de API do serviço Model Armor.
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
Substitua LOCATION pela região em que você quer usar o
Model Armor.
Limpar comandos
Limpe os comandos para evitar entradas maliciosas e garantir que comandos seguros e adequados sejam enviados aos seus LLMs.
Comandos de texto
O Model Armor higieniza os comandos de texto analisando o texto e aplicando diferentes filtros para identificar e reduzir possíveis ameaças.
REST
Use o comando a seguir para limpar um comando de texto no 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"
Substitua:
PROJECT_ID: o ID do projeto para o modelo.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Isso resulta na seguinte resposta. Observe que MATCH_FOUND está na categoria
"Conteúdo perigoso".
{ "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
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento em C# e instale o SDK do Model Armor para C#.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Model Armor para Node.js.
PHP
Para executar esse código, primeiro configure um ambiente de desenvolvimento PHP e instale o SDK do Model Armor para PHP.
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
Isso resulta na seguinte resposta.
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 }
Práticas recomendadas para higienizar comandos na IA conversacional
Ao usar o Model Armor para limpar entradas em um aplicativo de IA conversacional,
é importante entender o que incluir no campo userPromptData
para o método SanitizeUserPrompt.
Limpe cada entrada do usuário separadamente: chame a API
SanitizeUserPromptpara cada nova mensagem recebida do usuário. Isso garante que cada parte da entrada do usuário seja analisada em busca de possíveis ameaças antes de ser processada pelo seu LLM. O campouserPromptDataprecisa conter apenas o conteúdo da última mensagem do usuário na conversa atual.Não inclua o histórico de conversas: evite concatenar todo o histórico de chat no campo
userPromptData.Não inclua comandos do sistema: exclua o comando do sistema do campo
userPromptData. O Model Armor se concentra em detectar ameaças apenas nas entradas fornecidas pelo usuário.
Remover informações sensíveis de comandos de texto com a detecção de vários idiomas ativada
Ative a detecção multilíngue por solicitação definindo a flag
enableMultiLanguageDetection como true para cada solicitação individual.
Se quiser, especifique o idioma de origem para ter resultados mais precisos.
- Se você não especificar o idioma de origem, o Model Armor vai detectar automaticamente o idioma para oferecer suporte a vários idiomas.
- Se você especificar o idioma de origem, o Model Armor vai usar esse idioma para avaliar o comando de texto e não vai realizar a detecção automática de idioma.
Use o comando a seguir para limpar um comando de texto no Model Armor com a detecção multilíngue ativada no nível da solicitação.
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"
Substitua:
PROJECT_ID: o ID do projeto para o modelo.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Limpar comandos de texto de streaming
Os métodos de streaming do Model Armor higienizam comandos e respostas em tempo real como fluxos de texto, sem esperar que todo o conteúdo fique disponível. Essa capacidade é especialmente útil para aplicativos que processam grandes payloads de texto ou que exigem interações de baixa latência com LLMs.
Use estes métodos para ativar o streaming:
- StreamSanitizeUserPrompt: transmite e higieniza o texto fornecido pelo usuário.
- StreamSanitizeModelResponse: transmite e higieniza o texto gerado pelo LLM.
O Model Armor oferece os seguintes modos de transmissão:
- Modo de buffer:coleta todos os blocos transmitidos e os processa juntos como uma única unidade.
- Modo em tempo real:processa cada bloco individualmente à medida que é recebido, fornecendo feedback contínuo.
O Model Armor oferece suporte a tokens ilimitados ao usar o modo de streaming em tempo real, enquanto o modo armazenado em buffer está sujeito a limites de token.
O streaming funciona da seguinte maneira:
- Entrada em partes: seu aplicativo envia texto para o Model Armor em partes menores (chunks) em vez de enviar todo o corpo do texto de uma vez.
- Processamento em tempo real: o Model Armor processa esses blocos à medida que chegam e aplica os filtros de segurança configurados no seu modelo.
- Feedback contínuo: dependendo do modo (em tempo real ou armazenado em buffer), o Model Armor retorna resultados por parte processada ou depois que todas as partes são recebidas.
Use o comando a seguir para limpar um comando de texto de streaming.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
package main
import (
"context"
"fmt"
"io"
"log"
modelarmor "cloud.google.com/go/modelarmor/apiv1beta"
modelarmorpb "cloud.google.com/go/modelarmor/apiv1beta/modelarmorpb"
"google.golang.org/api/option"
"google.golang.org/protobuf/encoding/protojson"
)
func main() {
ctx := context.Background()
// Define variables for project, location, and template ID
projectID := "your-project-id"
location := "your-location-id"
templateID := "your-template-id"
// 1. Create the client with the custom regional endpoint.
opts := option.WithEndpoint("modelarmor.us-central1.rep.googleapis.com:443")
c, err := modelarmor.NewClient(ctx, opts)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
defer c.Close()
// 2. Start the StreamSanitizeUserPrompt bidirectional stream.
stream, err := c.StreamSanitizeUserPrompt(ctx)
if err != nil {
log.Fatalf("failed to initialize stream: %v", err)
}
// 3. Use a goroutine to send the requests.
go func() {
// Define the user prompt data
userPromptData := &modelarmorpb.DataItem{
DataItem: &modelarmorpb.DataItem_Text{
// Specify the user prompt.
Text: "This is a sample user prompt",
},
}
// Create the request object
req := &modelarmorpb.SanitizeUserPromptRequest{ // Use fmt.Sprintf to construct the resource name
Name: fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, location, templateID),
UserPromptData: userPromptData,
}
reqs := []*modelarmorpb.SanitizeUserPromptRequest{req}
for _, r := range reqs {
if err := stream.Send(r); err != nil {
log.Printf("Failed to send request: %v", err)
return
}
}
stream.CloseSend()
}()
// 4. Iterate over the responses from the stream.
for {
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
log.Fatalf("failed to receive response: %v", err)
}
// Marshal the proto message to a formatted JSON string
b, _ := protojson.MarshalOptions{
Multiline: true,
Indent: " ",
}.Marshal(resp)
// Results can be consumed or assigned here in production workflows
}
}
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
package com.example.armor;
import com.google.api.gax.rpc.BidiStream;
import com.google.cloud.modelarmor.v1beta.DataItem;
import com.google.cloud.modelarmor.v1beta.ModelArmorClient;
import com.google.cloud.modelarmor.v1beta.ModelArmorSettings;
import com.google.cloud.modelarmor.v1beta.SanitizationResult;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptRequest;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptResponse;
import com.google.cloud.modelarmor.v1beta.StreamingMode;
import com.google.cloud.modelarmor.v1beta.TemplateName;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class StreamSanitizeUserPrompt {
public static void main(String[] args) {
try {
streamSanitizeUserPromptExample();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void streamSanitizeUserPromptExample()
throws IOException, InterruptedException, ExecutionException {
// Specify the Google Project ID.
String projectId = "your-project-id";
// Specify the location ID. For example, us-central1.
String locationId = "your-location-id";
// Specify the template ID.
String templateId = "your-template-id";
String customApiEndpoint = "modelarmor.us-central1.rep.googleapis.com:443";
List<String> promptChunks = Arrays.asList(
"This is the first part of the user prompt. ",
"This is the second part. ",
"And this is the final part."
);
// ModelArmorSettings is now properly imported and recognized here
try (
ModelArmorClient modelArmorClient = ModelArmorClient.create(
ModelArmorSettings.newBuilder()
.setEndpoint(customApiEndpoint)
.build()
)
) {
BidiStream<SanitizeUserPromptRequest, SanitizeUserPromptResponse> stream =
modelArmorClient.streamSanitizeUserPromptCallable().call();
String resourceName = TemplateName.of(projectId, locationId, templateId).toString();
// --- Send First Request ---
SanitizeUserPromptRequest firstRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(0)))
.setStreamingMode(StreamingMode.STREAMING_MODE_BUFFERED)
.build();
stream.send(firstRequest);
// --- Send Subsequent Requests ---
for (int i = 1; i < promptChunks.size(); i++) {
SanitizeUserPromptRequest subsequentRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(i)))
.build();
stream.send(subsequentRequest);
}
stream.closeSend();
// --- Receive Responses ---
for (SanitizeUserPromptResponse response : stream) {
if (response.hasSanitizationResult()) {
SanitizationResult result = response.getSanitizationResult();
// Results can be consumed or assigned here in production workflows
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
from google.cloud import modelarmor_v1beta
def sample_stream_sanitize_user_prompt():
# Create a client
client = modelarmor_v1beta.ModelArmorClient(transport="grpc", client_options = {"api_endpoint" : "modelarmor.us-central1.rep.googleapis.com"})
# Specify the Google Project ID.
project_id = "your-project-id"
# Specify the location ID. For example, us-central1.
location = "your-location-id"
# Specify the template ID.
template_id = "your-template-id"
template_name = client.template_path(project_id, location, template_id)
# Initialize request argument(s)
user_prompt_data = modelarmor_v1beta.DataItem()
# Specify the user prompt.
user_prompt_data.text = "This is a sample user prompt"
request = modelarmor_v1beta.SanitizeUserPromptRequest(
name=template_name,
user_prompt_data=user_prompt_data,
)
# This method expects an iterator which contains
# 'modelarmor_v1beta.SanitizeUserPromptRequest' objects
# Here we create a generator that yields a single `request` for
# demonstrative purposes.
requests = [request]
def request_generator():
for request in requests:
yield request
# Make the request
stream = client.stream_sanitize_user_prompt(requests=request_generator())
# Handle the response
for response in stream:
# Results can be consumed or assigned here in production workflows
sample_stream_sanitize_user_prompt()
Considere o seguinte ao higienizar um comando ou uma resposta de texto transmitida por streaming:
- Para higienizar o conteúdo de maneira eficaz, verifique se os blocos individuais não excedem os limites de token.
- Os métodos de streaming do Model Armor só aceitam entradas de texto, não anexos como imagens e arquivos.
- Use o ID de correlação para rastrear registros de limpeza de streaming de uma determinada solicitação.
- Os métodos de streaming do Model Armor não oferecem suporte à desidentificação da Proteção de Dados Sensíveis.
Comandos baseados em arquivos
Para limpar um comando armazenado em um arquivo, forneça o conteúdo do arquivo no formato base64. O Model Armor não detecta automaticamente o tipo de arquivo. Você precisa definir explicitamente o campo byteDataType para indicar o formato do arquivo. Se o campo estiver faltando ou não for especificado, a solicitação vai falhar. Os valores possíveis de byteDataType são PLAINTEXT_UTF8, PDF, WORD_DOCUMENT, EXCEL_DOCUMENT, POWERPOINT_DOCUMENT, TXT e CSV.
A desidentificação da Proteção de Dados Sensíveis está indisponível para comandos baseados em arquivos.
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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.FILE_TYPE: o formato do arquivo de entrada.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento em C# e instale o SDK do Model Armor para C#.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Model Armor para Node.js.
PHP
Para executar esse código, primeiro configure um ambiente de desenvolvimento PHP e instale o SDK do Model Armor para PHP.
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
Configuração básica da Proteção de Dados Sensíveis
O Model Armor se integra à Proteção de Dados Sensíveis para evitar a exposição acidental de informações particulares. Crie um modelo com as configurações básicas da Proteção de Dados Sensíveis ativadas. A Proteção de Dados Sensíveis básica ajuda você a rastrear um conjunto fixo de infoTypes da Proteção de Dados Sensíveis.
Os seguintes infoTypes da Proteção de Dados Sensíveis são verificados no comando para todas as regiões:
CREDIT_CARD_NUMBER: um número de cartão tem de 12 a 19 dígitos. Ele é usado para transações de pagamento em todo o mundo.FINANCIAL_ACCOUNT_NUMBER: um número referente a uma conta financeira específica, por exemplo, um número de conta bancária ou de conta de aposentadoria.GCP_CREDENTIALS:credenciais da conta de serviço Google Cloud . Credenciais que podem ser usadas para autenticação com {api_client_lib_name} e contas de serviço.GCP_API_KEY: Google Cloud chave de API. Uma string criptografada usada ao chamar APIs Google Cloud que não precisam acessar dados do usuário.PASSWORD: limpe senhas de texto não criptografado em configurações, códigos e outros textos.
Os seguintes infoTypes extras da Proteção de Dados Sensíveis são verificados no comando para regiões localizadas nos EUA:
US_SOCIAL_SECURITY_NUMBER: O Número da Previdência Social (SSN, na sigla em inglês) dos Estados Unidos é um número de nove dígitos emitido para cidadãos, residentes permanentes e temporários. Este detector não fará a correspondência com números compostos apenas por zeros em qualquer grupo de dígitos (isto é, 000-##-####, ###-00-#### ou ###-##-0000), com 666 no primeiro grupo de dígitos ou que começam com 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: um Número de Identificação do Contribuinte Individual (ITIN) dos Estados Unidos é um tipo de Número de Identificação Fiscal (TIN) emitido pelo Internal Revenue Service (IRS). O ITIN é um número de processamento fiscal disponível somente para determinados estrangeiros não residentes e residentes, seus cônjuges e dependentes que não podem ter um Número de Previdência Social (SSN).
Confira um exemplo de configuração básica da Proteção de Dados Sensíveis:
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
Substitua:
TEMPLATE_ID: o ID do modelo.LOCATION: o local do modelo.
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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento em C# e instale o SDK do Model Armor para C#.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Model Armor para Node.js.
PHP
Para executar esse código, primeiro configure um ambiente de desenvolvimento PHP e instale o SDK do Model Armor para PHP.
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
Use o modelo criado para analisar seus comandos. Veja um exemplo:
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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Este exemplo retorna a seguinte resposta:
{ "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" } } } ] } } } ] } }
Configuração avançada da Proteção de Dados Sensíveis
O Model Armor examina os comandos e respostas do LLM usando a configuração avançada de Proteção de dados sensíveis. Assim, você pode usar recursos da Proteção de Dados Sensíveis além dos infoTypes oferecidos na configuração básica da Proteção de Dados Sensíveis.
Para usar o filtro avançado da Proteção de Dados Sensíveis no Model Armor, os modelos da Proteção de Dados Sensíveis precisam estar no mesmo local da nuvem que o modelo do Model Armor.
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
Substitua:
TEMPLATE_ID: o ID do modelo.LOCATION: o local do modelo.
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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Este exemplo retorna a seguinte resposta:
{ "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" } } } }
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento em C# e instale o SDK do Model Armor para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Model Armor para Node.js.
PHP
Para executar esse código, primeiro configure um ambiente de desenvolvimento PHP e instale o SDK do Model Armor para PHP.
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
Use o modelo criado para analisar seus comandos. Veja um exemplo:
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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Este exemplo retorna a seguinte resposta:
{ "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"] } } } ] } }
Limpar resposta do modelo
Às vezes, os LLMs podem gerar respostas prejudiciais. Para reduzir os riscos associados ao uso de LLMs nos seus aplicativos, é importante higienizar as respostas deles.
Confira um exemplo de comando para limpar uma resposta do modelo no Model Armor.
REST
curl -X POST \
-d '{"modelResponseData":{"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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.Este exemplo retorna a seguinte resposta:
{ "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" } }, } } }
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento em C# e instale o SDK do Model Armor para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Go e instale o SDK do Model Armor para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Model Armor para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Model Armor para Node.js.
PHP
Para executar esse código, primeiro configure um ambiente de desenvolvimento PHP e instale o SDK do Model Armor para PHP.
Python
Para executar esse código, configure um ambiente de desenvolvimento Python e instale o SDK do Model Armor para Python.
Higienizar a resposta do modelo com a detecção de vários idiomas ativada
Ative a detecção de vários idiomas por solicitação definindo a flag
enableMultiLanguageDetection como true para cada resposta individual.
Se quiser, especifique o idioma de origem para ter resultados mais precisos.
- Se você não especificar o idioma de origem, o Model Armor vai detectar automaticamente o idioma para oferecer suporte a vários idiomas.
- Se você especificar o idioma de origem, o Model Armor vai usar esse idioma para avaliar a resposta do modelo e não vai realizar a detecção automática de idioma.
curl -X POST \ -d '{"modelResponseData":{"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"
Substitua:
PROJECT_ID: o ID do projeto a que o modelo pertence.LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo.
Limpar a resposta do modelo em vários projetos
Para ativar o gerenciamento centralizado da segurança de IA, as organizações geralmente armazenam modelos do Model Armor em um projeto dedicado (projeto A: TEMPLATE_PROJECT_ID), enquanto os aplicativos são executados em projetos separados (projeto B).
Para permitir que uma conta de serviço (CALLER_SERVICE_ACCOUNT) do projeto B acesse
um modelo no projeto A, adicione uma vinculação de política do IAM ao
projeto de modelo.
Para conceder as permissões necessárias entre projetos, execute o seguinte comando:
gcloud projects add-iam-policy-binding TEMPLATE_PROJECT_ID \ --member='serviceAccount:CALLER_SERVICE_ACCOUNT' \ --role='roles/modelarmor.user'
Substitua:
TEMPLATE_PROJECT_ID: o ID do projeto em que o modelo está hospedado.CALLER_SERVICE_ACCOUNT: a conta de serviço do projeto que faz a solicitação de API.
A seguir
- Saiba mais sobre o Model Armor.
- Saiba mais sobre as configurações mínimas do Model Armor.
- Saiba mais sobre os modelos do Model Armor.
- Resolver problemas do Model Armor.