Cette page décrit en détail comment assainir les requêtes et les réponses. Model Armor propose un ensemble de filtres pour protéger vos applications d'IA. Model Armor vérifie les requêtes et les réponses en fonction des niveaux de confiance de filtrage configurés.
Avant de commencer
Créez un modèle en suivant les instructions de la section Créer des modèles.
Obtenir les autorisations requises
Pour obtenir les autorisations nécessaires pour assainir les requêtes et les réponses, demandez à votre administrateur de vous accorder les rôles IAM suivants sur Model Armor :
- Utilisateur Model Armor (
roles/modelarmor.user) - Lecteur Model Armor (
roles/modelarmor.viewer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Dans le projet contenant le modèle Sensitive Data Protection, accordez le rôle Utilisateur DLP (roles/dlp.user) et le rôle Lecteur DLP (roles/dlp.reader) à l'agent de service créé dans l'étape de protection avancée des données sensibles de Créer des modèles.
Ignorez cette étape si le modèle Sensitive Data Protection se trouve dans le même projet que le modèle 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
Remplacez les éléments suivants :
SDP_PROJECT_ID: ID du projet auquel appartient le modèle Sensitive Data Protection avancé.PROJECT_NUMBER: numéro du projet auquel appartient le modèle.
Activer les API
Vous devez activer l'API Model Armor avant de pouvoir utiliser Model Armor.
Console
Activez l'API Model Armor.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.Sélectionnez le projet dans lequel vous souhaitez activer Model Armor.
gcloud
Avant de commencer, suivez ces étapes à l'aide de la Google Cloud CLI avec l'API Model Armor :
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Définissez le remplacement du point de terminaison de l'API à l'aide de la gcloud CLI.
Définir le remplacement du point de terminaison de l'API à l'aide de la gcloud CLI
Cette étape n'est nécessaire que si vous utilisez la gcloud CLI pour activer l'API Model Armor. Vous devez définir manuellement le remplacement du point de terminaison de l'API pour vous assurer que gcloud CLI achemine correctement les requêtes vers le service Model Armor.
Exécutez la commande suivante pour définir le point de terminaison de l'API pour le service Model Armor.
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
Remplacez LOCATION par la région dans laquelle vous souhaitez utiliser Model Armor.
Nettoyer les requêtes
Nettoyez les requêtes pour éviter les entrées malveillantes et vous assurer que des requêtes sécurisées et appropriées sont envoyées à vos LLM.
Requêtes textuelles
Model Armor assainit les requêtes textuelles en analysant le texte et en appliquant différents filtres pour identifier et atténuer les menaces potentielles.
REST
Utilisez la commande suivante pour assainir une requête textuelle dans 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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet pour le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Cela génère la réponse suivante. Notez que MATCH_FOUND se trouve dans la catégorie "Dangereux".
{ "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
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Model Armor pour C#.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js et installez le SDK Model Armor pour Node.js.
PHP
Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.
Python
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.
Cela génère la réponse suivante.
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 }
Bonnes pratiques pour assainir les requêtes dans l'IA conversationnelle
Lorsque vous utilisez Model Armor pour assainir les entrées dans une application d'IA conversationnelle, il est important de comprendre ce qu'il faut inclure dans le champ userPromptData pour la méthode SanitizeUserPrompt.
Nettoyez chaque entrée utilisateur séparément : appelez l'API
SanitizeUserPromptpour chaque nouveau message reçu de l'utilisateur. Cela garantit que chaque entrée utilisateur est analysée pour détecter les menaces potentielles avant d'être traitée par votre LLM. Le champuserPromptDatane doit contenir que le contenu du dernier message de l'utilisateur dans la conversation en cours.N'incluez pas l'historique des conversations : évitez de concaténer l'intégralité de l'historique des discussions dans le champ
userPromptData.N'incluez pas les invites système : excluez l'invite système du champ
userPromptData. Model Armor se concentre sur la détection des menaces uniquement dans les entrées fournies par l'utilisateur.
Nettoyer les requêtes textuelles avec la détection multilingue activée
Activez la détection multilingue pour chaque requête en définissant l'indicateur enableMultiLanguageDetection sur true pour chaque requête individuelle.
Vous pouvez éventuellement spécifier la langue source pour obtenir des résultats plus précis.
- Si vous ne spécifiez pas la langue source, Model Armor la détecte automatiquement pour fournir une assistance multilingue.
- Si vous spécifiez la langue source, Model Armor l'utilise pour évaluer la requête textuelle et n'effectue pas de détection automatique de la langue.
Utilisez la commande suivante pour nettoyer un prompt textuel dans Model Armor avec la détection multilingue activée au niveau de la requête.
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet pour le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Nettoyer les requêtes textuelles en flux continu
Les méthodes de streaming de Model Armor assainissent les requêtes et les réponses en temps réel, sous forme de flux de texte, sans attendre que l'intégralité du contenu soit disponible. Cette fonctionnalité est particulièrement utile pour les applications qui gèrent de grandes charges utiles de texte ou qui nécessitent des interactions à faible latence avec les LLM.
Utilisez ces méthodes pour activer le streaming :
- StreamSanitizeUserPrompt : diffuse et assainit le texte fourni par l'utilisateur.
- StreamSanitizeModelResponse : diffuse et assainit le texte généré par le LLM.
Model Armor propose les modes de streaming suivants :
- Mode mis en mémoire tampon : collecte tous les blocs transmis en streaming et les traite ensemble comme une seule unité.
- Mode temps réel : traite chaque bloc individuellement à mesure qu'il est reçu, ce qui permet d'obtenir un retour continu.
Model Armor accepte un nombre illimité de jetons en mode streaming en temps réel, tandis que le mode mis en mémoire tampon est soumis à des limites de jetons.
Le streaming fonctionne comme suit :
- Entrée segmentée : votre application envoie le texte à Model Armor par petits morceaux (segments) au lieu d'envoyer l'intégralité du corps du texte en une seule fois.
- Traitement en temps réel : Model Armor traite ces blocs à mesure qu'ils arrivent et applique les filtres de sécurité configurés dans votre modèle.
- Commentaires continus : selon le mode (mode temps réel ou mode mis en mémoire tampon), Model Armor renvoie les résultats par bloc traité ou après réception de tous les blocs.
Utilisez la commande suivante pour assainir une invite de texte de streaming.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour 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
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour 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
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour 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()
Tenez compte des points suivants lorsque vous assainissez une requête ou une réponse textuelle en streaming :
- Pour assainir efficacement le contenu, assurez-vous que les blocs individuels ne dépassent pas les limites de jetons.
- Les méthodes de streaming Model Armor n'acceptent que les entrées textuelles, et non les pièces jointes telles que les images et les fichiers.
- Utilisez l'ID de corrélation pour suivre les journaux de désinfection du flux pour une requête donnée.
- Les méthodes de streaming Model Armor ne sont pas compatibles avec l'anonymisation Sensitive Data Protection.
Requêtes basées sur des fichiers
Pour nettoyer un prompt stocké dans un fichier, fournissez le contenu du fichier au format base64. Model Armor ne détecte pas automatiquement le type de fichier. Vous devez définir explicitement le champ byteDataType pour indiquer le format du fichier. Si le champ est manquant ou non spécifié, la requête échoue. Les valeurs byteDataType possibles sont PLAINTEXT_UTF8, PDF, WORD_DOCUMENT, EXCEL_DOCUMENT, POWERPOINT_DOCUMENT, TXT et CSV.
L'anonymisation Sensitive Data Protection n'est pas compatible avec les requêtes basées sur des fichiers.
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.FILE_TYPE: format du fichier d'entrée.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Model Armor pour C#.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js et installez le SDK Model Armor pour Node.js.
PHP
Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.
Python
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.
Configuration de base de Sensitive Data Protection
Model Armor s'intègre à Sensitive Data Protection pour aider à prévenir l'exposition accidentelle d'informations privées. Créez un modèle avec les paramètres de base de Sensitive Data Protection activés. La protection de base des données sensibles vous aide à filtrer un ensemble fixe d'infoTypes de protection des données sensibles.
Les infoTypes Sensitive Data Protection suivants sont analysés dans le prompt pour toutes les régions :
CREDIT_CARD_NUMBER: un numéro de carte de crédit comporte de 12 à 19 chiffres. Il est utilisé pour les transactions de paiement dans le monde entier.FINANCIAL_ACCOUNT_NUMBER: numéro de compte financier spécifique, par exemple un numéro de compte bancaire ou de compte de retraite.GCP_CREDENTIALS: identifiants du compte de service Google Cloud . Ils peuvent être utilisés pour l'authentification via les comptes de service ou {api_client_lib_name}.GCP_API_KEY: clé API Google Cloud . Chaîne chiffrée utilisée lors de l'appel d'API Google Cloud qui n'ont pas besoin d'accéder à des données utilisateur privées.PASSWORD: mots de passe en texte clair figurant dans les configurations, le code et autres textes.
Les infoTypes Sensitive Data Protection supplémentaires suivants sont analysés dans la requête pour les régions basées aux États-Unis :
US_SOCIAL_SECURITY_NUMBER: Aux États-Unis, un numéro de sécurité sociale (SSN) composé de neuf chiffres est attribué aux citoyens américains, aux résidents permanents et aux résidents temporaires. Ce détecteur ne fera pas correspondre les numéros dont l'un des groupes de chiffres ne comporte que des zéros (c'est-à-dire 000-##-####, ###-00-####, ou ###-##-0000), les numéros dont le premier groupe de chiffres est 666, ou les numéros dont le premier chiffre est 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: un numéro ITIN (Individual Taxpayer Identification Number) est un type de numéro d'identification fiscale (TIN, Tax Identification Number) émis par l'Internal Revenue Service (IRS). Un ITIN est un numéro de traitement fiscal spécifique, utilisé uniquement pour les étrangers non-résidents et résidents (ainsi que leurs conjoints et les personnes à leur charge) qui ne peuvent pas bénéficier d'un numéro de sécurité sociale (SSN).
Voici un exemple de configuration de base de Sensitive Data Protection :
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
Remplacez les éléments suivants :
TEMPLATE_ID: ID du modèle.LOCATION: emplacement du modèle.
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.
C#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Model Armor pour C#.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js et installez le SDK Model Armor pour Node.js.
PHP
Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.
Python
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.
Utilisez le modèle créé pour filtrer vos requêtes. Exemple :
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Cet exemple renvoie la réponse suivante :
{ "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" } } } ] } } } ] } }
Configuration avancée de la protection des données sensibles
Model Armor analyse les requêtes et les réponses des LLM à l'aide du paramètre de configuration avancée de protection des données sensibles. Cela vous permet d'utiliser les fonctionnalités Sensitive Data Protection au-delà des infoTypes proposés dans le paramètre Sensitive Data Protection de base.
Pour utiliser le filtre avancé Sensitive Data Protection dans Model Armor, les modèles Sensitive Data Protection doivent se trouver au même emplacement cloud que le modèle Model Armor.
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
Remplacez les éléments suivants :
TEMPLATE_ID: ID du modèle.LOCATION: emplacement du modèle.
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Cet exemple renvoie la réponse suivante :
{ "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#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Model Armor pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js et installez le SDK Model Armor pour Node.js.
PHP
Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.
Python
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.
Utilisez le modèle créé pour filtrer vos requêtes. Exemple :
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Cet exemple renvoie la réponse suivante :
{ "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"] } } } ] } }
Nettoyer la réponse du modèle
Les LLM peuvent parfois générer des réponses dangereuses. Pour réduire les risques associés à l'utilisation de LLM dans vos applications, il est important de nettoyer leurs réponses.
Voici un exemple de commande permettant de nettoyer une réponse de modèle dans 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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.Cet exemple renvoie la réponse suivante :
{ "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#
Pour exécuter ce code, commencez par configurer un environnement de développement C#, puis installez le SDK Model Armor pour C#.
Go
Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.
Java
Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.
Node.js
Pour exécuter ce code, commencez par configurer un environnement de développement Node.js et installez le SDK Model Armor pour Node.js.
PHP
Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.
Python
Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.
Nettoyer la réponse du modèle avec la détection multilingue activée
Activez la détection multilingue pour chaque requête en définissant le flag enableMultiLanguageDetection sur true pour chaque réponse individuelle.
Vous pouvez éventuellement spécifier la langue source pour obtenir des résultats plus précis.
- Si vous ne spécifiez pas la langue source, Model Armor la détecte automatiquement pour fournir une assistance multilingue.
- Si vous spécifiez la langue source, Model Armor l'utilise pour évaluer la réponse du modèle et n'effectue pas de détection automatique de la langue.
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"
Remplacez les éléments suivants :
PROJECT_ID: ID du projet auquel appartient le modèle.LOCATION: emplacement du modèle.TEMPLATE_ID: ID du modèle.
Nettoyer la réponse du modèle dans plusieurs projets
Pour activer la gestion centralisée de la sécurité de l'IA, les organisations stockent souvent des modèles Model Armor dans un projet dédié (projet A : TEMPLATE_PROJECT_ID), tandis que leurs applications s'exécutent dans des projets distincts (projet B).
Pour autoriser un compte de service (CALLER_SERVICE_ACCOUNT) du projet B à accéder à un modèle du projet A, vous devez ajouter une liaison de stratégie IAM au projet de modèle.
Pour accorder les autorisations inter-projets nécessaires, exécutez la commande suivante :
gcloud projects add-iam-policy-binding TEMPLATE_PROJECT_ID \ --member='serviceAccount:CALLER_SERVICE_ACCOUNT' \ --role='roles/modelarmor.user'
Remplacez les éléments suivants :
TEMPLATE_PROJECT_ID: ID du projet dans lequel le modèle est hébergé.CALLER_SERVICE_ACCOUNT: compte de service du projet qui envoie la requête API.
Étapes suivantes
- En savoir plus sur Model Armor
- En savoir plus sur les paramètres de plancher Model Armor
- En savoir plus sur les modèles Model Armor
- Résoudre les problèmes liés à Model Armor