En esta página, se describe en detalle cómo sanear las instrucciones y las respuestas. Model Armor ofrece un conjunto de filtros para proteger tus aplicaciones de IA. Model Armor verifica las instrucciones y las respuestas según los niveles de confianza de detección configurados.
Antes de comenzar
Crea una plantilla siguiendo las instrucciones en Cómo crear plantillas.
Obtén los permisos necesarios
Para obtener los permisos que necesitas para sanear instrucciones y respuestas, pídele a tu administrador que te otorgue los siguientes roles de IAM en Model Armor:
- Usuario de Model Armor (
roles/modelarmor.user) - Visualizador de Model Armor (
roles/modelarmor.viewer)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
En el proyecto que contiene la plantilla de Sensitive Data Protection, otorga el rol de usuario de DLP (roles/dlp.user) y el rol de lector de DLP (roles/dlp.reader) al agente de servicio creado como parte del paso de protección de datos sensibles avanzada de Crear plantillas. Omite este paso si la plantilla de Sensitive Data Protection se encuentra en el mismo proyecto que la plantilla de 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
Reemplaza lo siguiente:
SDP_PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla avanzada de Sensitive Data Protection.PROJECT_NUMBER: Es el número del proyecto al que pertenece la plantilla.
Habilita las APIs
Para poder usar Model Armor, debes habilitar la API de Model Armor.
Console
Habilita la API de Model Armor.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.Elige el proyecto en el que quieres activar Model Armor.
gcloud
Antes de empezar, sigue estos pasos a través de la Google Cloud CLI con la API de Model Armor:
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Configura la anulación del extremo de API con la gcloud CLI.
Cómo configurar la anulación del extremo de API con la gcloud CLI
Este paso solo es necesario si usas la gcloud CLI para habilitar la API de Model Armor. Debes configurar manualmente la anulación del extremo de API para asegurarte de que la gcloud CLI enrute correctamente las solicitudes al servicio de Model Armor.
Ejecuta el siguiente comando para configurar el extremo de API del servicio de Model Armor.
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
Reemplaza LOCATION por la región en la que quieres usar Model Armor.
Limpiar instrucciones
Sanea las instrucciones para evitar entradas maliciosas y garantizar que se envíen instrucciones seguras y adecuadas a tus LLMs.
Instrucciones de texto
Model Armor analiza el texto y aplica diferentes filtros para identificar y mitigar posibles amenazas, y así depurar los prompts de texto.
REST
Usa el siguiente comando para sanear una instrucción de texto en 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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto para la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Esto genera la siguiente respuesta. Ten en cuenta que MATCH_FOUND se encuentra en la categoría Peligroso.
{ "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 ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# y, luego, instala el SDK de C# para Model Armor.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Model Armor.
PHP
Para ejecutar este código, primero configura un entorno de desarrollo de PHP y, luego, instala el SDK de PHP para Model Armor.
Python
Para ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
Esto genera la siguiente respuesta.
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ácticas recomendadas para limpiar instrucciones en la IA conversacional
Cuando usas Model Armor para sanear las entradas en una aplicación de IA conversacional, es importante comprender qué incluir en el campo userPromptData del método SanitizeUserPrompt.
Sanea cada entrada del usuario por separado: Llama a la API de
SanitizeUserPromptpara cada mensaje nuevo que recibas del usuario. Esto garantiza que cada entrada del usuario se analice en busca de posibles amenazas antes de que tu LLM la procese. El campouserPromptDatadebe contener solo el contenido del mensaje más reciente del usuario en la conversación actual.No incluyas el historial de conversación: Evita concatenar todo el historial de chat en el campo
userPromptData.No incluyas instrucciones del sistema: Excluye la instrucción del sistema del campo
userPromptData. Model Armor se enfoca en detectar amenazas solo en las entradas proporcionadas por el usuario.
Limpiar las instrucciones de texto con la detección en varios idiomas habilitada
Para habilitar la detección de varios idiomas por solicitud, establece la marca enableMultiLanguageDetection en true para cada solicitud individual. De manera opcional, puedes especificar el idioma de origen para obtener resultados más precisos.
- Si no especificas el idioma de origen, Model Armor lo detectará automáticamente para brindar asistencia en varios idiomas.
- Si especificas el idioma de origen, Model Armor lo usará para evaluar la instrucción de texto y no realizará la detección automática del idioma.
Usa el siguiente comando para limpiar una instrucción de texto en Model Armor con la detección multilingüe habilitada a nivel de la solicitud.
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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto para la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Limpia las instrucciones de texto de transmisión
Los métodos de transmisión de Model Armor sanitizan las instrucciones y las respuestas en tiempo real como transmisiones de texto, sin esperar a que esté disponible todo el contenido. Esta capacidad es particularmente útil para las aplicaciones que controlan cargas útiles de texto grandes o que requieren interacciones de baja latencia con LLMs.
Usa estos métodos para habilitar la transmisión:
- StreamSanitizeUserPrompt: Transmite y depura el texto proporcionado por el usuario.
- StreamSanitizeModelResponse: Transmite y corrige el texto generado por el LLM.
Model Armor ofrece los siguientes modos de transmisión:
- Modo de búfer: Recopila todos los fragmentos transmitidos y los procesa juntos como una sola unidad.
- Modo en tiempo real: Procesa cada fragmento de forma individual a medida que se recibe y proporciona comentarios continuos.
Model Armor admite una cantidad ilimitada de tokens cuando se usa el modo de transmisión en tiempo real, mientras que el modo almacenado en búfer está sujeto a límites de tokens.
La transmisión funciona de la siguiente manera:
- Entrada en fragmentos: Tu aplicación envía texto a Model Armor en fragmentos más pequeños en lugar de enviar todo el cuerpo del texto de una vez.
- Procesamiento en tiempo real: Model Armor procesa estos fragmentos a medida que llegan y aplica los filtros de seguridad configurados en tu plantilla.
- Comentarios continuos: Según el modo (en tiempo real o almacenado en búfer), Model Armor devuelve resultados por fragmento procesado o después de que se reciben todos los fragmentos.
Usa el siguiente comando para sanear una instrucción de texto de transmisión.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
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 ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
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 ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
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()
Ten en cuenta lo siguiente cuando apliques el saneamiento a una instrucción o respuesta de texto de transmisión:
- Para limpiar el contenido de manera eficaz, asegúrate de que los fragmentos individuales no superen los límites de tokens.
- Los métodos de transmisión de Model Armor solo admiten entrada de texto, no archivos adjuntos como imágenes y archivos.
- Usa el ID de correlación para hacer un seguimiento de los registros de saneamiento de transmisión para una solicitud determinada.
- Los métodos de transmisión de Model Armor no admiten la desidentificación de Sensitive Data Protection.
Instrucciones basadas en archivos
Para sanear una instrucción almacenada en un archivo, proporciona el contenido del archivo en formato base64. Model Armor no detecta automáticamente el tipo de archivo. Debes configurar de forma explícita el campo byteDataType para indicar el formato del archivo. Si falta el campo o no se especifica, la solicitud falla. Los valores posibles de byteDataType son PLAINTEXT_UTF8, PDF, WORD_DOCUMENT, EXCEL_DOCUMENT, POWERPOINT_DOCUMENT, TXT y CSV. La desidentificación de la Protección de datos sensibles no se admite para las instrucciones basadas en archivos.
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"
Reemplaza los parámetros que se indican a continuación:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.FILE_TYPE: Es el formato del archivo de entrada.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# y, luego, instala el SDK de C# para Model Armor.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Model Armor.
PHP
Para ejecutar este código, primero configura un entorno de desarrollo de PHP y, luego, instala el SDK de PHP para Model Armor.
Python
Para ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
Configuración básica de Sensitive Data Protection
Model Armor se integra con Sensitive Data Protection para ayudar a evitar la exposición accidental de información privada. Crea una plantilla con la configuración básica de Sensitive Data Protection habilitada. La Protección de datos sensibles básica te ayuda a detectar un conjunto fijo de infotipos de Protección de datos sensibles.
En todas las regiones, se analizan los siguientes infoTypes de Sensitive Data Protection en la instrucción:
CREDIT_CARD_NUMBER: Un número de tarjeta de crédito tiene entre 12 y 19 dígitos. Se usa para transacciones de pago en todo el mundo.FINANCIAL_ACCOUNT_NUMBER: Es un número que hace referencia a una cuenta financiera específica, por ejemplo, un número de cuenta bancaria o de cuenta de jubilación.GCP_CREDENTIALS: Google Cloud Credenciales de cuenta de servicio. Son credenciales que se pueden usar para autenticarse con {api_client_lib_name} y cuentas de servicio.GCP_API_KEY: Google Cloud Clave de API. Es una cadena encriptada que se usa cuando se llama a Google Cloud APIs que no requieren acceso a datos privados del usuario.PASSWORD: Contraseñas en texto simple presentes en las configuraciones, el código y otros textos.
En las regiones de EE.UU., se analizan los siguientes infotipos adicionales de Sensitive Data Protection en la instrucción:
US_SOCIAL_SECURITY_NUMBER: Un número de seguridad social (NSS) de Estados Unidos es un número de 9 dígitos que se emite a los ciudadanos, los residentes permanentes y los residentes temporales de ese país. El detector no mostrará coincidencias de números que solo tengan ceros en alguno de los grupos de dígitos (es decir, 000-##-####, ###-00-#### o ###-##-0000), ni que tengan 666 en el primer grupo de dígitos, ni de números cuyo primer dígito sea 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: El número de identificación fiscal individual (ITIN) de Estados Unidos es un tipo de número de identificación fiscal (TIN) que emite el Internal Revenue Service (IRS). Es un número de procesamiento fiscal disponible solo para algunos extranjeros residentes y no residentes, sus cónyuges y dependientes que no pueden obtener un número de identificación personal (NSS).
A continuación, se muestra un ejemplo de configuración básica de Sensitive Data Protection:
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
Reemplaza lo siguiente:
TEMPLATE_ID: Es el ID de la plantilla.LOCATION: Es la ubicación de la plantilla.
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"
Reemplaza los parámetros que se indican a continuación:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# y, luego, instala el SDK de C# para Model Armor.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Model Armor.
PHP
Para ejecutar este código, primero configura un entorno de desarrollo de PHP y, luego, instala el SDK de PHP para Model Armor.
Python
Para ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
Usa la plantilla creada para revisar tus instrucciones. Por ejemplo:
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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Este ejemplo devuelve la siguiente respuesta:
{ "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" } } } ] } } } ] } }
Configuración avanzada de Sensitive Data Protection
Model Armor analiza las instrucciones y respuestas del LLM con el parámetro de configuración avanzado de Sensitive Data Protection. Esto te permite usar las capacidades de Sensitive Data Protection más allá de los infoTypes que se ofrecen en el parámetro de configuración básico de Sensitive Data Protection.
Para usar el filtro avanzado de Sensitive Data Protection en Model Armor, las plantillas de Sensitive Data Protection deben estar en la misma ubicación de la nube que la plantilla de Model Armor.
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
Reemplaza lo siguiente:
TEMPLATE_ID: Es el ID de la plantilla.LOCATION: Es la ubicación de la plantilla.
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"
Reemplaza los parámetros que se indican a continuación:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Este ejemplo devuelve la siguiente respuesta:
{ "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 ejecutar este código, primero configura un entorno de desarrollo de C# y, luego, instala el SDK de C# para Model Armor.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Model Armor.
PHP
Para ejecutar este código, primero configura un entorno de desarrollo de PHP y, luego, instala el SDK de PHP para Model Armor.
Python
Para ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
Usa la plantilla creada para revisar tus instrucciones. Por ejemplo:
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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Este ejemplo devuelve la siguiente respuesta:
{ "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"] } } } ] } }
Limpia la respuesta del modelo
A veces, los LLMs pueden generar respuestas dañinas. Para reducir los riesgos asociados con el uso de LLMs en tus aplicaciones, es importante depurar sus respuestas.
Este es un ejemplo de un comando para limpiar una respuesta del modelo en 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"
Reemplaza los parámetros que se indican a continuación:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.Este ejemplo devuelve la siguiente respuesta:
{ "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 ejecutar este código, primero configura un entorno de desarrollo de C# y, luego, instala el SDK de C# para Model Armor.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Model Armor.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Model Armor.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Model Armor.
PHP
Para ejecutar este código, primero configura un entorno de desarrollo de PHP y, luego, instala el SDK de PHP para Model Armor.
Python
Para ejecutar este código, configura un entorno de desarrollo de Python y instala el SDK de Python para Model Armor.
Limpia la respuesta del modelo con la detección en varios idiomas habilitada
Para habilitar la detección de varios idiomas por solicitud, configura la marca enableMultiLanguageDetection en true para cada respuesta individual.
De manera opcional, puedes especificar el idioma de origen para obtener resultados más precisos.
- Si no especificas el idioma de origen, Model Armor lo detectará automáticamente para brindar asistencia en varios idiomas.
- Si especificas el idioma de origen, Model Armor lo usará para evaluar la respuesta del modelo y no realizará la detección automática del 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"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.LOCATION: Es la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla.
Limpiar la respuesta del modelo en todos los proyectos
Para habilitar la administración centralizada de la seguridad de la IA, las organizaciones suelen almacenar plantillas de Model Armor en un proyecto dedicado (proyecto A: TEMPLATE_PROJECT_ID), mientras que sus aplicaciones se ejecutan en proyectos separados (proyecto B).
Para permitir que una cuenta de servicio (CALLER_SERVICE_ACCOUNT) del proyecto B acceda a una plantilla del proyecto A, debes agregar una vinculación de política de IAM al proyecto de plantilla.
Para otorgar los permisos necesarios entre proyectos, ejecuta el siguiente comando:
gcloud projects add-iam-policy-binding TEMPLATE_PROJECT_ID \ --member='serviceAccount:CALLER_SERVICE_ACCOUNT' \ --role='roles/modelarmor.user'
Reemplaza lo siguiente:
TEMPLATE_PROJECT_ID: Es el ID del proyecto en el que se aloja la plantilla.CALLER_SERVICE_ACCOUNT: Es la cuenta de servicio del proyecto que realiza la solicitud a la API.
¿Qué sigue?
- Obtén más información sobre Model Armor.
- Obtén más información sobre la configuración mínima de Model Armor.
- Obtén información sobre las plantillas de Model Armor.
- Soluciona problemas de Model Armor.