Nettoyer les requêtes et les réponses

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 :

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.

Activer les API

Vous devez activer les API Model Armor avant de pouvoir utiliser Model Armor.

Console

  1. Enable the Model Armor API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. 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 :

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 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.

  3. Exécutez la commande suivante pour activer Model Armor.

      gcloud services enable modelarmor.googleapis.com --project=PROJECT_ID
       

    Remplacez PROJECT_ID par l'ID du projet.

    Dans le projet contenant le modèle Sensitive Data Protection, attribuez 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 "Protection avancée des données sensibles" de Créer des modèles. Ignorez cette étape si le modèle de protection des données sensibles 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.

    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.

    
    import (
    	"context"
    	"fmt"
    	"io"
    
    	modelarmor "cloud.google.com/go/modelarmor/apiv1"
    	modelarmorpb "cloud.google.com/go/modelarmor/apiv1/modelarmorpb"
    	"google.golang.org/api/option"
    )
    
    // sanitizeUserPrompt sanitizes a user prompt based on the project, location, and template settings.
    //
    // w io.Writer: The writer to use for logging.
    // projectID string: The ID of the project.
    // locationID string: The ID of the location.
    // templateID string: The ID of the template.
    // userPrompt string: The user prompt to sanitize.
    func sanitizeUserPrompt(w io.Writer, projectID, locationID, templateID, userPrompt string) error {
    	ctx := context.Background()
    
    	//Create options for Model Armor client.
    	opts := option.WithEndpoint(fmt.Sprintf("modelarmor.%s.rep.googleapis.com:443", locationID))
    
    	// Create the Model Armor client.
    	client, err := modelarmor.NewClient(ctx, opts)
    	if err != nil {
    		return fmt.Errorf("failed to create client for location %s: %w", locationID, err)
    	}
    	defer client.Close()
    
    	// Initialize request argument(s)
    	userPromptData := &modelarmorpb.DataItem{
    		DataItem: &modelarmorpb.DataItem_Text{
    			Text: userPrompt,
    		},
    	}
    
    	// Prepare request for sanitizing user prompt.
    	req := &modelarmorpb.SanitizeUserPromptRequest{
    		Name:           fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, locationID, templateID),
    		UserPromptData: userPromptData,
    	}
    
    	// Sanitize the user prompt.
    	response, err := client.SanitizeUserPrompt(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to sanitize user prompt for template %s: %w", templateID, err)
    	}
    
    	// Sanitization Result.
    	fmt.Fprintf(w, "Sanitization Result: %v\n", response)
    
    	return nil
    }
    

    Java

    Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.

    
    import com.google.cloud.modelarmor.v1.DataItem;
    import com.google.cloud.modelarmor.v1.ModelArmorClient;
    import com.google.cloud.modelarmor.v1.ModelArmorSettings;
    import com.google.cloud.modelarmor.v1.SanitizeUserPromptRequest;
    import com.google.cloud.modelarmor.v1.SanitizeUserPromptResponse;
    import com.google.cloud.modelarmor.v1.TemplateName;
    import com.google.protobuf.util.JsonFormat;
    import java.io.IOException;
    
    public class SanitizeUserPrompt {
    
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace these variables before running the sample.
    
        // 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";
        // Specify the user prompt.
        String userPrompt = "Unsafe user prompt";
    
        sanitizeUserPrompt(projectId, locationId, templateId, userPrompt);
      }
    
      public static SanitizeUserPromptResponse sanitizeUserPrompt(String projectId, String locationId,
          String templateId, String userPrompt) throws IOException {
    
        // Endpoint to call the Model Armor server.
        String apiEndpoint = String.format("modelarmor.%s.rep.googleapis.com:443", locationId);
        ModelArmorSettings modelArmorSettings = ModelArmorSettings.newBuilder()
            .setEndpoint(apiEndpoint)
            .build();
    
        try (ModelArmorClient client = ModelArmorClient.create(modelArmorSettings)) {
          // Build the resource name of the template.
          String templateName = TemplateName.of(projectId, locationId, templateId).toString();
    
          // Prepare the request.
          SanitizeUserPromptRequest request = SanitizeUserPromptRequest.newBuilder()
              .setName(templateName)
              .setUserPromptData(DataItem.newBuilder().setText(userPrompt).build())
              .build();
    
          SanitizeUserPromptResponse response = client.sanitizeUserPrompt(request);
          System.out.println("Result for the provided user prompt: "
              + JsonFormat.printer().print(response.getSanitizationResult()));
    
          return response;
        }
      }
    }

    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.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const projectId = process.env.PROJECT_ID || 'your-project-id';
    // const locationId = process.env.LOCATION_ID || 'us-central1';
    // const templateId = process.env.TEMPLATE_ID || 'template-id';
    // const userPrompt = 'unsafe user prompt';
    const {ModelArmorClient} = require('@google-cloud/modelarmor').v1;
    
    const client = new ModelArmorClient({
      apiEndpoint: `modelarmor.${locationId}.rep.googleapis.com`,
    });
    
    const request = {
      name: `projects/${projectId}/locations/${locationId}/templates/${templateId}`,
      userPromptData: {
        text: userPrompt,
      },
    };
    
    const [response] = await client.sanitizeUserPrompt(request);
    console.log(JSON.stringify(response, null, 2));
    return response;

    PHP

    Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.

    use Google\Cloud\ModelArmor\V1\Client\ModelArmorClient;
    use Google\Cloud\ModelArmor\V1\SanitizeUserPromptRequest;
    use Google\Cloud\ModelArmor\V1\DataItem;
    
    /**
     * Sanitizes a user prompt using the specified template.
     *
     * @param string $projectId The ID of your Google Cloud Platform project (e.g. 'my-project').
     * @param string $locationId The ID of the location where the template is stored (e.g. 'us-central1').
     * @param string $templateId The ID of the template (e.g. 'my-template').
     * @param string $userPrompt The user prompt to sanitize (e.g. 'my-user-prompt').
     */
    function sanitize_user_prompt(
        string $projectId,
        string $locationId,
        string $templateId,
        string $userPrompt
    ): void {
        $options = ['apiEndpoint' => "modelarmor.$locationId.rep.googleapis.com"];
        $client = new ModelArmorClient($options);
    
        $userPromptRequest = (new SanitizeUserPromptRequest())
            ->setName("projects/$projectId/locations/$locationId/templates/$templateId")
            ->setUserPromptData((new DataItem())->setText($userPrompt));
    
        $response = $client->sanitizeUserPrompt($userPromptRequest);
    
        printf('Result for Sanitize User Prompt: %s' . PHP_EOL, $response->serializeToJsonString());
    }

    Python

    Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.

    
    from google.api_core.client_options import ClientOptions
    from google.cloud import modelarmor_v1
    
    # TODO(Developer): Uncomment these variables.
    # project_id = "YOUR_PROJECT_ID"
    # location_id = "us-central1"
    # template_id = "template_id"
    # user_prompt = "Prompt entered by the user"
    
    # Create the Model Armor client.
    client = modelarmor_v1.ModelArmorClient(
        transport="rest",
        client_options=ClientOptions(
            api_endpoint=f"modelarmor.{location_id}.rep.googleapis.com"
        ),
    )
    
    # Initialize request argument(s).
    user_prompt_data = modelarmor_v1.DataItem(text=user_prompt)
    
    # Prepare request for sanitizing the defined prompt.
    request = modelarmor_v1.SanitizeUserPromptRequest(
        name=f"projects/{project_id}/locations/{location_id}/templates/{template_id}",
        user_prompt_data=user_prompt_data,
    )
    
    # Sanitize the user prompt.
    response = client.sanitize_user_prompt(request=request)
    
    # Sanitization Result.
    print(response)
    

    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
      }
      

    Nettoyer les requêtes textuelles 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 requête individuelle. Vous pouvez éventuellement spécifier la langue source pour obtenir des résultats plus précis. Si la langue source n'est pas spécifiée, elle est automatiquement détectée pour permettre la prise en charge multilingue.

    Utilisez la commande suivante pour assainir une invite de texte 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.

    Requêtes basées sur des fichiers

    Pour assainir une requête stockée 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.

    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.

    
    import (
    	"context"
    	"fmt"
    	"io"
    	"os"
    
    	modelarmor "cloud.google.com/go/modelarmor/apiv1"
    	modelarmorpb "cloud.google.com/go/modelarmor/apiv1/modelarmorpb"
    	"google.golang.org/api/option"
    )
    
    // screenPDFFile screens a PDF file.
    //
    // This method screens a PDF file based on the project, location, and template settings.
    //
    // w io.Writer: The writer to use for logging.
    // projectID string: The ID of the project.
    // locationID string: The ID of the location.
    // templateID string: The ID of the template.
    // pdfFilePath string: The path to the PDF file to be screened.
    func screenPDFFile(w io.Writer, projectID, locationID, templateID, pdfFilePath string) error {
    	ctx := context.Background()
    
    	// Create options for Model Armor client.
    	opts := option.WithEndpoint(fmt.Sprintf("modelarmor.%s.rep.googleapis.com:443", locationID))
    	// Create the Model Armor client.
    	client, err := modelarmor.NewClient(ctx, opts)
    	if err != nil {
    		return fmt.Errorf("failed to create client: %w", err)
    	}
    	defer client.Close()
    
    	// Read PDF file content into bytes
    	pdfBytes, err := os.ReadFile(pdfFilePath)
    	if err != nil {
    		return fmt.Errorf("failed to read PDF file: %w", err)
    	}
    
    	// Initialize request argument(s)
    	userPromptData := &modelarmorpb.DataItem{
    		DataItem: &modelarmorpb.DataItem_ByteItem{
    			ByteItem: &modelarmorpb.ByteDataItem{
    				ByteDataType: modelarmorpb.ByteDataItem_PDF,
    				ByteData:     pdfBytes,
    			},
    		},
    	}
    
    	// Prepare request for sanitizing the defined prompt.
    	req := &modelarmorpb.SanitizeUserPromptRequest{
    		Name:           fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, locationID, templateID),
    		UserPromptData: userPromptData,
    	}
    
    	// Sanitize the user prompt.
    	response, err := client.SanitizeUserPrompt(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to sanitize PDF content for template %s: %w", templateID, err)
    	}
    
    	// Sanitization Result.
    	fmt.Fprintf(w, "PDF screening sanitization result: %v\n", response)
    
    	return nil
    }
    

    Java

    Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.

    
    import com.google.cloud.modelarmor.v1.ByteDataItem;
    import com.google.cloud.modelarmor.v1.ByteDataItem.ByteItemType;
    import com.google.cloud.modelarmor.v1.DataItem;
    import com.google.cloud.modelarmor.v1.ModelArmorClient;
    import com.google.cloud.modelarmor.v1.ModelArmorSettings;
    import com.google.cloud.modelarmor.v1.SanitizeUserPromptRequest;
    import com.google.cloud.modelarmor.v1.SanitizeUserPromptResponse;
    import com.google.cloud.modelarmor.v1.TemplateName;
    import com.google.protobuf.ByteString;
    import com.google.protobuf.util.JsonFormat;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class ScreenPdfFile {
    
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace these variables before running the sample.
    
        // 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";
        // Specify the PDF file path. Replace with your PDF file path.
        String pdfFilePath = "src/main/resources/test_sample.pdf";
    
        screenPdfFile(projectId, locationId, templateId, pdfFilePath);
      }
    
      public static SanitizeUserPromptResponse screenPdfFile(String projectId, String locationId,
          String templateId, String pdfFilePath) throws IOException {
    
        // Endpoint to call the Model Armor server.
        String apiEndpoint = String.format("modelarmor.%s.rep.googleapis.com:443", locationId);
        ModelArmorSettings modelArmorSettings = ModelArmorSettings.newBuilder().setEndpoint(apiEndpoint)
            .build();
    
        try (ModelArmorClient client = ModelArmorClient.create(modelArmorSettings)) {
          // Build the resource name of the template.
          String name = TemplateName.of(projectId, locationId, templateId).toString();
    
          // Read the PDF file content and encode it to Base64.
          byte[] fileContent = Files.readAllBytes(Paths.get(pdfFilePath));
    
          // Prepare the request.
          DataItem userPromptData = DataItem.newBuilder()
              .setByteItem(
                ByteDataItem.newBuilder()
                  .setByteDataType(ByteItemType.PDF)
                  .setByteData(ByteString.copyFrom(fileContent))
                  .build())
              .build();
    
          SanitizeUserPromptRequest request =
              SanitizeUserPromptRequest.newBuilder()
                  .setName(name)
                  .setUserPromptData(userPromptData)
                  .build();
    
          // Send the request and get the response.
          SanitizeUserPromptResponse response = client.sanitizeUserPrompt(request);
    
          // Print the sanitization result.
          System.out.println("Result for the provided PDF file: "
              + JsonFormat.printer().print(response.getSanitizationResult()));
    
          return response;
        }
      }
    }

    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.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const projectId = process.env.PROJECT_ID || 'your-project-id';
    // const locationId = process.env.LOCATION_ID || 'us-central1';
    // const templateId = process.env.TEMPLATE_ID || 'template-id';
    // const pdfContentFilename = 'path/to/file.pdf';
    
    // Imports the Model Armor library
    const modelarmor = require('@google-cloud/modelarmor');
    const {ModelArmorClient} = modelarmor.v1;
    const {protos} = modelarmor;
    const ByteItemType =
      protos.google.cloud.modelarmor.v1.ByteDataItem.ByteItemType;
    
    const fs = require('fs');
    
    const pdfContent = fs.readFileSync(pdfContentFilename);
    const pdfContentBase64 = pdfContent.toString('base64');
    
    const client = new ModelArmorClient({
      apiEndpoint: `modelarmor.${locationId}.rep.googleapis.com`,
    });
    
    const request = {
      name: `projects/${projectId}/locations/${locationId}/templates/${templateId}`,
      userPromptData: {
        byteItem: {
          byteDataType: ByteItemType.PDF,
          byteData: pdfContentBase64,
        },
      },
    };
    
    const [response] = await client.sanitizeUserPrompt(request);
    console.log(JSON.stringify(response, null, 2));
    return response;

    PHP

    Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.

    use Google\Cloud\ModelArmor\V1\Client\ModelArmorClient;
    use Google\Cloud\ModelArmor\V1\SanitizeUserPromptRequest;
    use Google\Cloud\ModelArmor\V1\ByteDataItem;
    use Google\Cloud\ModelArmor\V1\ByteDataItem\ByteItemType;
    use Google\Cloud\ModelArmor\V1\DataItem;
    
    /**
     * Screens a PDF file using the ModelArmor service.
     *
     * @param string $projectId The Google Cloud project ID (e.g. 'my-project').
     * @param string $locationId The location ID of the ModelArmor service (e.g. 'us-central1').
     * @param string $templateId The ID of the template to use for the screener (e.g. 'my-template').
     * @param string $filePath The path to the PDF file to screen (e.g. 'path/to/file.pdf').
     */
    function screen_pdf_file(
        string $projectId,
        string $locationId,
        string $templateId,
        string $filePath
    ): void {
        $options = ['apiEndpoint' => "modelarmor.$locationId.rep.googleapis.com"];
        $client = new ModelArmorClient($options);
    
        // Read the file content and encode it in base64.
        $pdfContent = file_get_contents($filePath);
        $pdfContentBase64 = base64_encode($pdfContent);
    
        $userPromptRequest = (new SanitizeUserPromptRequest())
            ->setName("projects/$projectId/locations/$locationId/templates/$templateId")
            ->setUserPromptData((new DataItem())
                ->setByteItem((new ByteDataItem())->setByteData($pdfContentBase64)
                    ->setByteDataType(ByteItemType::PDF)));
    
        $response = $client->sanitizeUserPrompt($userPromptRequest);
    
        printf('Result for Screen PDF File: %s' . PHP_EOL, $response->serializeToJsonString());
    }

    Python

    Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.

    
    import base64
    from google.api_core.client_options import ClientOptions
    from google.cloud import modelarmor_v1
    
    # TODO(Developer): Uncomment these variables.
    # project_id = "YOUR_PROJECT_ID"
    # location_id = "us-central1"
    # template_id = "template_id"
    # pdf_content_filename = "path/to/file.pdf"
    
    # Encode the PDF file into base64
    with open(pdf_content_filename, "rb") as f:
        pdf_content_base64 = base64.b64encode(f.read())
    
    # Create the Model Armor client.
    client = modelarmor_v1.ModelArmorClient(
        transport="rest",
        client_options=ClientOptions(
            api_endpoint=f"modelarmor.{location_id}.rep.googleapis.com"
        ),
    )
    
    # Initialize request argument(s).
    user_prompt_data = modelarmor_v1.DataItem(
        byte_item=modelarmor_v1.ByteDataItem(
            byte_data_type=modelarmor_v1.ByteDataItem.ByteItemType.PDF,
            byte_data=pdf_content_base64,
        )
    )
    
    request = modelarmor_v1.SanitizeUserPromptRequest(
        name=f"projects/{project_id}/locations/{location_id}/templates/{template_id}",
        user_prompt_data=user_prompt_data,
    )
    
    # Sanitize the user prompt.
    response = client.sanitize_user_prompt(request=request)
    
    # Sanitization Result.
    print(response)
    

    Configuration de base de la protection des données sensibles

    Model Armor s'intègre à la protection des données sensibles pour éviter l'exposition accidentelle d'informations privées. Créez un modèle avec les paramètres de base de la protection des données sensibles 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 de protection des données sensibles suivants sont analysés dans l'invite 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 et {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 la protection des données sensibles :

    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.

    
    import (
    	"context"
    	"fmt"
    	"io"
    
    	modelarmor "cloud.google.com/go/modelarmor/apiv1"
    	modelarmorpb "cloud.google.com/go/modelarmor/apiv1/modelarmorpb"
    	"google.golang.org/api/option"
    )
    
    // createModelArmorTemplateWithBasicSDP method creates a new Model Armor template with basic SDP settings.
    //
    // w io.Writer: The writer to use for logging.
    // projectID string: The ID of the Google Cloud project.
    // locationID string: The ID of the Google Cloud location.
    // templateID string: The ID of the template to create.
    func createModelArmorTemplateWithBasicSDP(w io.Writer, projectID, locationID, templateID string) error {
    	ctx := context.Background()
    
    	// Create options for Model Armor client.
    	opts := option.WithEndpoint(fmt.Sprintf("modelarmor.%s.rep.googleapis.com:443", locationID))
    	// Create the Model Armor client.
    	client, err := modelarmor.NewClient(ctx, opts)
    	if err != nil {
    		return fmt.Errorf("failed to create client for project %s, location %s: %w", projectID, locationID, err)
    	}
    	defer client.Close()
    
    	parent := fmt.Sprintf("projects/%s/locations/%s", projectID, locationID)
    
    	// Build the Model Armor template with your preferred filters.
    	// For more details on filters, please refer to the following doc:
    	// [https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters](https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters)
    	template := &modelarmorpb.Template{
    		FilterConfig: &modelarmorpb.FilterConfig{
    			RaiSettings: &modelarmorpb.RaiFilterSettings{
    				RaiFilters: []*modelarmorpb.RaiFilterSettings_RaiFilter{
    					{
    						FilterType:      modelarmorpb.RaiFilterType_DANGEROUS,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_HARASSMENT,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_MEDIUM_AND_ABOVE,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_HATE_SPEECH,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_SEXUALLY_EXPLICIT,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    				},
    			},
    			SdpSettings: &modelarmorpb.SdpFilterSettings{
    				SdpConfiguration: &modelarmorpb.SdpFilterSettings_BasicConfig{
    					BasicConfig: &modelarmorpb.SdpBasicConfig{
    						FilterEnforcement: modelarmorpb.SdpBasicConfig_ENABLED,
    					},
    				},
    			},
    		},
    	}
    
    	// Prepare the request for creating the template.
    	req := &modelarmorpb.CreateTemplateRequest{
    		Parent:     parent,
    		TemplateId: templateID,
    		Template:   template,
    	}
    
    	// Create the template.
    	response, err := client.CreateTemplate(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to create template: %w", err)
    	}
    
    	// Print the new template name using fmt.Fprintf with the io.Writer.
    	fmt.Fprintf(w, "Created Template with basic SDP: %s\n", response.Name)
    
    	return err
    }
    

    Java

    Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.

    
    import com.google.cloud.modelarmor.v1.CreateTemplateRequest;
    import com.google.cloud.modelarmor.v1.FilterConfig;
    import com.google.cloud.modelarmor.v1.LocationName;
    import com.google.cloud.modelarmor.v1.ModelArmorClient;
    import com.google.cloud.modelarmor.v1.ModelArmorSettings;
    import com.google.cloud.modelarmor.v1.SdpBasicConfig;
    import com.google.cloud.modelarmor.v1.SdpBasicConfig.SdpBasicConfigEnforcement;
    import com.google.cloud.modelarmor.v1.SdpFilterSettings;
    import com.google.cloud.modelarmor.v1.Template;
    import java.io.IOException;
    
    public class CreateTemplateWithBasicSdp {
    
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace these variables before running the sample.
    
        // 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";
    
        createTemplateWithBasicSdp(projectId, locationId, templateId);
      }
    
      public static Template createTemplateWithBasicSdp(
          String projectId, String locationId, String templateId) throws IOException {
    
        // Construct the API endpoint URL.
        String apiEndpoint = String.format("modelarmor.%s.rep.googleapis.com:443", locationId);
        ModelArmorSettings modelArmorSettings = ModelArmorSettings.newBuilder().setEndpoint(apiEndpoint)
            .build();
    
        // Initialize the client that will be used to send requests. This client
        // only needs to be created once, and can be reused for multiple requests.
        try (ModelArmorClient client = ModelArmorClient.create(modelArmorSettings)) {
          String parent = LocationName.of(projectId, locationId).toString();
    
          // Build the Model Armor template with your preferred filters.
          // For more details on filters, please refer to the following doc:
          // https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters
    
          // Configure Basic SDP Filter.
          SdpBasicConfig basicSdpConfig = SdpBasicConfig.newBuilder()
              .setFilterEnforcement(SdpBasicConfigEnforcement.ENABLED)
              .build();
    
          SdpFilterSettings sdpSettings = SdpFilterSettings.newBuilder()
              .setBasicConfig(basicSdpConfig)
              .build();
    
          FilterConfig modelArmorFilter = FilterConfig.newBuilder()
              .setSdpSettings(sdpSettings)
              .build();
    
          Template template = Template.newBuilder()
              .setFilterConfig(modelArmorFilter)
              .build();
    
          CreateTemplateRequest request = CreateTemplateRequest.newBuilder()
              .setParent(parent)
              .setTemplateId(templateId)
              .setTemplate(template)
              .build();
    
          Template createdTemplate = client.createTemplate(request);
          System.out.println("Created template with basic SDP filter: " + createdTemplate.getName());
    
          return createdTemplate;
        }
      }
    }

    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.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const projectId = 'your-project-id';
    // const locationId = 'us-central1';
    // const templateId = 'template-id';
    
    const parent = `projects/${projectId}/locations/${locationId}`;
    
    // Imports the Model Armor library
    const modelarmor = require('@google-cloud/modelarmor');
    const {ModelArmorClient} = modelarmor.v1;
    const {protos} = modelarmor;
    
    const RaiFilterType = protos.google.cloud.modelarmor.v1.RaiFilterType;
    const DetectionConfidenceLevel =
      protos.google.cloud.modelarmor.v1.DetectionConfidenceLevel;
    const SdpBasicConfigEnforcement =
      protos.google.cloud.modelarmor.v1.SdpBasicConfig.SdpBasicConfigEnforcement;
    
    // Instantiates a client
    const client = new ModelArmorClient({
      apiEndpoint: `modelarmor.${locationId}.rep.googleapis.com`,
    });
    
    // Configuration for the template with basic SDP settings
    const templateConfig = {
      filterConfig: {
        raiSettings: {
          raiFilters: [
            {
              filterType: RaiFilterType.DANGEROUS,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
            {
              filterType: RaiFilterType.HARASSMENT,
              confidenceLevel: DetectionConfidenceLevel.MEDIUM_AND_ABOVE,
            },
            {
              filterType: RaiFilterType.HATE_SPEECH,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
            {
              filterType: RaiFilterType.SEXUALLY_EXPLICIT,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
          ],
        },
        sdpSettings: {
          basicConfig: {
            filterEnforcement: SdpBasicConfigEnforcement.ENABLED,
          },
        },
      },
    };
    
    // Construct request
    const request = {
      parent,
      templateId,
      template: templateConfig,
    };
    
    const [response] = await client.createTemplate(request);
    return response;

    PHP

    Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.

    use Google\Cloud\ModelArmor\V1\Client\ModelArmorClient;
    use Google\Cloud\ModelArmor\V1\SdpBasicConfig\SdpBasicConfigEnforcement;
    use Google\Cloud\ModelArmor\V1\SdpBasicConfig;
    use Google\Cloud\ModelArmor\V1\SdpFilterSettings;
    use Google\Cloud\ModelArmor\V1\FilterConfig;
    use Google\Cloud\ModelArmor\V1\CreateTemplateRequest;
    use Google\Cloud\ModelArmor\V1\Template;
    
    /**
     * Create a Model Armor template with Basic SDP Filter.
     *
     * @param string $projectId The ID of the project (e.g. 'my-project').
     * @param string $locationId The ID of the location (e.g. 'us-central1').
     * @param string $templateId The ID of the template (e.g. 'my-template').
     */
    function create_template_with_basic_sdp(string $projectId, string $locationId, string $templateId): void
    {
        $options = ['apiEndpoint' => "modelarmor.$locationId.rep.googleapis.com"];
        $client = new ModelArmorClient($options);
        $parent = $client->locationName($projectId, $locationId);
    
        // Build the Model Armor template with your preferred filters.
        // For more details on filters, please refer to the following doc:
        // https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters
    
        // Configure Basic SDP Filter.
        $sdpBasicConfig = (new SdpBasicConfig())->setFilterEnforcement(SdpBasicConfigEnforcement::ENABLED);
        $sdpSettings = (new SdpFilterSettings())->setBasicConfig($sdpBasicConfig);
    
        $templateFilterConfig = (new FilterConfig())
            ->setSdpSettings($sdpSettings);
    
        $template = (new Template())->setFilterConfig($templateFilterConfig);
    
        $request = (new CreateTemplateRequest())
            ->setParent($parent)
            ->setTemplateId($templateId)
            ->setTemplate($template);
    
        $response = $client->createTemplate($request);
    
        printf('Template created: %s' . PHP_EOL, $response->getName());
    }

    Python

    Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.

    
    from google.api_core.client_options import ClientOptions
    from google.cloud import modelarmor_v1
    
    # TODO(Developer): Uncomment these variables.
    # project_id = "YOUR_PROJECT_ID"
    # location_id = "us-central1"
    # template_id = "template_id"
    
    # Create the Model Armor client.
    client = modelarmor_v1.ModelArmorClient(
        client_options=ClientOptions(
            api_endpoint=f"modelarmor.{location_id}.rep.googleapis.com"
        )
    )
    
    parent = f"projects/{project_id}/locations/{location_id}"
    
    # Build the Model Armor template with your preferred filters.
    # For more details on filters, please refer to the following doc:
    # https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters
    template = modelarmor_v1.Template(
        filter_config=modelarmor_v1.FilterConfig(
            rai_settings=modelarmor_v1.RaiFilterSettings(
                rai_filters=[
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.DANGEROUS,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.HARASSMENT,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.MEDIUM_AND_ABOVE,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.HATE_SPEECH,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.SEXUALLY_EXPLICIT,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                ]
            ),
            sdp_settings=modelarmor_v1.SdpFilterSettings(
                basic_config=modelarmor_v1.SdpBasicConfig(
                    filter_enforcement=modelarmor_v1.SdpBasicConfig.SdpBasicConfigEnforcement.ENABLED
                )
            ),
        ),
    )
    
    # Prepare the request for creating the template.
    create_template = modelarmor_v1.CreateTemplateRequest(
        parent=parent, template_id=template_id, template=template
    )
    
    # Create the template.
    response = client.create_template(request=create_template)
    
    # Print the new template name.
    print(f"Created template: {response.name}")
    

    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 filtre les prompts 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 de protection des données sensibles au-delà des infoTypes proposés dans le paramètre de base de protection des données sensibles.

    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"
            }
          }
        }
    }

    Go

    Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.

    
    import (
    	"context"
    	"fmt"
    	"io"
    
    	modelarmor "cloud.google.com/go/modelarmor/apiv1"
    	modelarmorpb "cloud.google.com/go/modelarmor/apiv1/modelarmorpb"
    	"google.golang.org/api/option"
    )
    
    // createModelArmorTemplateWithAdvancedSDP method creates a
    // new Model Armor template with advanced SDP settings,
    // including inspect and deidentify templates.
    //
    // w io.Writer: The writer to use for logging.
    // projectID string: The ID of the Google Cloud project.
    // locationID string: The ID of the Google Cloud location.
    // templateID string: The ID of the template to create.
    // inspectTemplate string: The ID of the inspect template to use.
    // deidentifyTemplate string: The ID of the deidentify template to use.
    func createModelArmorTemplateWithAdvancedSDP(w io.Writer, projectID, locationID, templateID, inspectTemplate, deidentifyTemplate string) error {
    	ctx := context.Background()
    
    	// Create options for Model Armor client.
    	opts := option.WithEndpoint(fmt.Sprintf("modelarmor.%s.rep.googleapis.com:443", locationID))
    	// Create the Model Armor client.
    	client, err := modelarmor.NewClient(ctx, opts)
    	if err != nil {
    		return fmt.Errorf("failed to create client for project %s, location %s: %w", projectID, locationID, err)
    	}
    	defer client.Close()
    
    	parent := fmt.Sprintf("projects/%s/locations/%s", projectID, locationID)
    
    	// Build the Model Armor template with your preferred filters.
    	template := &modelarmorpb.Template{
    		FilterConfig: &modelarmorpb.FilterConfig{
    			RaiSettings: &modelarmorpb.RaiFilterSettings{
    				RaiFilters: []*modelarmorpb.RaiFilterSettings_RaiFilter{
    					{
    						FilterType:      modelarmorpb.RaiFilterType_DANGEROUS,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_HARASSMENT,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_MEDIUM_AND_ABOVE,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_HATE_SPEECH,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    					{
    						FilterType:      modelarmorpb.RaiFilterType_SEXUALLY_EXPLICIT,
    						ConfidenceLevel: modelarmorpb.DetectionConfidenceLevel_HIGH,
    					},
    				},
    			},
    			SdpSettings: &modelarmorpb.SdpFilterSettings{
    				SdpConfiguration: &modelarmorpb.SdpFilterSettings_AdvancedConfig{
    					AdvancedConfig: &modelarmorpb.SdpAdvancedConfig{
    						InspectTemplate:    inspectTemplate,
    						DeidentifyTemplate: deidentifyTemplate,
    					},
    				},
    			},
    		},
    	}
    
    	// Prepare the request for creating the template.
    	req := &modelarmorpb.CreateTemplateRequest{
    		Parent:     parent,
    		TemplateId: templateID,
    		Template:   template,
    	}
    
    	// Create the template.
    	response, err := client.CreateTemplate(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to create template: %w", err)
    	}
    
    	// Print the new template name using fmt.Fprint with the io.Writer.
    	fmt.Fprintf(w, "Created Template with advanced SDP: %s\n", response.Name)
    
    	return err
    }
    

    Java

    Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.

    
    import com.google.cloud.modelarmor.v1.CreateTemplateRequest;
    import com.google.cloud.modelarmor.v1.FilterConfig;
    import com.google.cloud.modelarmor.v1.LocationName;
    import com.google.cloud.modelarmor.v1.ModelArmorClient;
    import com.google.cloud.modelarmor.v1.ModelArmorSettings;
    import com.google.cloud.modelarmor.v1.SdpAdvancedConfig;
    import com.google.cloud.modelarmor.v1.SdpFilterSettings;
    import com.google.cloud.modelarmor.v1.Template;
    import com.google.privacy.dlp.v2.DeidentifyTemplateName;
    import com.google.privacy.dlp.v2.InspectTemplateName;
    import java.io.IOException;
    
    public class CreateTemplateWithAdvancedSdp {
    
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace these variables before running the sample.
    
        // 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";
        // Specify the Inspect template ID.
        String inspectTemplateId = "your-inspect-template-id";
        // Specify the Deidentify template ID.
        String deidentifyTemplateId = "your-deidentify-template-id";
    
        createTemplateWithAdvancedSdp(projectId, locationId, templateId, inspectTemplateId,
            deidentifyTemplateId);
      }
    
      public static Template createTemplateWithAdvancedSdp(String projectId, String locationId,
          String templateId, String inspectTemplateId, String deidentifyTemplateId) throws IOException {
    
        // Construct the API endpoint URL.
        String apiEndpoint = String.format("modelarmor.%s.rep.googleapis.com:443", locationId);
        ModelArmorSettings modelArmorSettings = ModelArmorSettings.newBuilder().setEndpoint(apiEndpoint)
            .build();
    
        // Initialize the client that will be used to send requests. This client
        // only needs to be created once, and can be reused for multiple requests.
        try (ModelArmorClient client = ModelArmorClient.create(modelArmorSettings)) {
          String parent = LocationName.of(projectId, locationId).toString();
    
          String inspectTemplateName = InspectTemplateName
              .ofProjectLocationInspectTemplateName(projectId, locationId, inspectTemplateId)
              .toString();
    
          String deidentifyTemplateName = DeidentifyTemplateName
              .ofProjectLocationDeidentifyTemplateName(projectId, locationId, deidentifyTemplateId)
              .toString();
    
          // Build the Model Armor template with Advanced SDP Filter.
    
          // Note: If you specify only Inspect template, Model Armor reports the filter matches if
          // sensitive data is detected. If you specify Inspect template and De-identify template, Model
          // Armor returns the de-identified sensitive data and sanitized version of prompts or
          // responses in the deidentifyResult.data.text field of the finding.
          SdpAdvancedConfig advancedSdpConfig =
              SdpAdvancedConfig.newBuilder()
                  .setInspectTemplate(inspectTemplateName)
                  .setDeidentifyTemplate(deidentifyTemplateName)
                  .build();
    
          SdpFilterSettings sdpSettings = SdpFilterSettings.newBuilder()
              .setAdvancedConfig(advancedSdpConfig).build();
    
          FilterConfig modelArmorFilter = FilterConfig.newBuilder().setSdpSettings(sdpSettings).build();
    
          Template template = Template.newBuilder().setFilterConfig(modelArmorFilter).build();
    
          CreateTemplateRequest request = CreateTemplateRequest.newBuilder()
              .setParent(parent)
              .setTemplateId(templateId)
              .setTemplate(template)
              .build();
    
          Template createdTemplate = client.createTemplate(request);
          System.out.println("Created template with Advanced SDP filter: " + createdTemplate.getName());
    
          return createdTemplate;
        }
      }
    }

    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.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const projectId = 'your-project-id';
    // const locationId = 'us-central1';
    // const templateId = 'template-id';
    // const inspectTemplate = `projects/${projectId}/locations/${locationId}/inspectTemplates/inspect-template-id`;
    // const deidentifyTemplate = `projects/${projectId}/locations/${locationId}/deidentifyTemplates/deidentify-template-id`;
    
    const parent = `projects/${projectId}/locations/${locationId}`;
    
    // Imports the Model Armor library
    const modelarmor = require('@google-cloud/modelarmor');
    const {ModelArmorClient} = modelarmor.v1;
    const {protos} = modelarmor;
    
    const RaiFilterType = protos.google.cloud.modelarmor.v1.RaiFilterType;
    const DetectionConfidenceLevel =
      protos.google.cloud.modelarmor.v1.DetectionConfidenceLevel;
    
    // Instantiates a client
    const client = new ModelArmorClient({
      apiEndpoint: `modelarmor.${locationId}.rep.googleapis.com`,
    });
    
    // Configuration for the template with advanced SDP settings
    const templateConfig = {
      filterConfig: {
        raiSettings: {
          raiFilters: [
            {
              filterType: RaiFilterType.DANGEROUS,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
            {
              filterType: RaiFilterType.HARASSMENT,
              confidenceLevel: DetectionConfidenceLevel.MEDIUM_AND_ABOVE,
            },
            {
              filterType: RaiFilterType.HATE_SPEECH,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
            {
              filterType: RaiFilterType.SEXUALLY_EXPLICIT,
              confidenceLevel: DetectionConfidenceLevel.HIGH,
            },
          ],
        },
        sdpSettings: {
          advancedConfig: {
            inspectTemplate: inspectTemplate,
            deidentifyTemplate: deidentifyTemplate,
          },
        },
      },
    };
    
    // Construct request
    const request = {
      parent,
      templateId,
      template: templateConfig,
    };
    
    // Create the template
    const [response] = await client.createTemplate(request);
    return response;

    PHP

    Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.

    use Google\Cloud\ModelArmor\V1\Client\ModelArmorClient;
    use Google\Cloud\ModelArmor\V1\SdpAdvancedConfig;
    use Google\Cloud\ModelArmor\V1\Template;
    use Google\Cloud\ModelArmor\V1\FilterConfig;
    use Google\Cloud\ModelArmor\V1\CreateTemplateRequest;
    use Google\Cloud\ModelArmor\V1\SdpFilterSettings;
    
    /**
     * Create a Model Armor template with an Advanced SDP Filter.
     *
     * @param string $projectId The ID of the project (e.g. 'my-project').
     * @param string $locationId The ID of the location (e.g. 'us-central1').
     * @param string $templateId The ID of the template (e.g. 'my-template').
     * @param string $inspectTemplate The resource name of the inspect template.
              (e.g. 'organizations/{organization}/inspectTemplates/{inspect_template}')
     * @param string $deidentifyTemplate The resource name of the de-identify template.
              (e.g. 'organizations/{organization}/deidentifyTemplates/{deidentify_template}')
     */
    function create_template_with_advanced_sdp(
        string $projectId,
        string $locationId,
        string $templateId,
        string $inspectTemplate,
        string $deidentifyTemplate
    ): void {
        $options = ['apiEndpoint' => "modelarmor.$locationId.rep.googleapis.com"];
        $client = new ModelArmorClient($options);
        $parent = $client->locationName($projectId, $locationId);
    
        // Build the Model Armor template with Advanced SDP Filter.
    
        // Note: If you specify only Inspect template, Model Armor reports the filter matches if
        // sensitive data is detected. If you specify Inspect template and De-identify template, Model
        // Armor returns the de-identified sensitive data and sanitized version of prompts or
        // responses in the deidentifyResult.data.text field of the finding.
        $sdpAdvancedConfig = (new SdpAdvancedConfig())
            ->setInspectTemplate($inspectTemplate)
            ->setDeidentifyTemplate($deidentifyTemplate);
    
        $sdpSettings = (new SdpFilterSettings())->setAdvancedConfig($sdpAdvancedConfig);
    
        $templateFilterConfig = (new FilterConfig())
            ->setSdpSettings($sdpSettings);
    
        $template = (new Template())->setFilterConfig($templateFilterConfig);
    
        $request = (new CreateTemplateRequest())
            ->setParent($parent)
            ->setTemplateId($templateId)
            ->setTemplate($template);
    
        $response = $client->createTemplate($request);
    
        printf('Template created: %s' . PHP_EOL, $response->getName());
    }

    Python

    Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.

    
    from google.api_core.client_options import ClientOptions
    from google.cloud import modelarmor_v1
    
    # TODO(Developer): Uncomment these variables.
    # project_id = "YOUR_PROJECT_ID"
    # location_id = "us-central1"
    # template_id = "template_id"
    # inspect_template = f"projects/{project_id}/inspectTemplates/{inspect_template_id}"
    # deidentify_template = f"projects/{project_id}/deidentifyTemplates/{deidentify_template_id}"
    
    # Create the Model Armor client.
    client = modelarmor_v1.ModelArmorClient(
        transport="rest",
        client_options=ClientOptions(
            api_endpoint=f"modelarmor.{location_id}.rep.googleapis.com"
        ),
    )
    
    parent = f"projects/{project_id}/locations/{location_id}"
    
    # Build the Model Armor template with your preferred filters.
    # For more details on filters, please refer to the following doc:
    # https://cloud.google.com/security-command-center/docs/key-concepts-model-armor#ma-filters
    template = modelarmor_v1.Template(
        filter_config=modelarmor_v1.FilterConfig(
            rai_settings=modelarmor_v1.RaiFilterSettings(
                rai_filters=[
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.DANGEROUS,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.HARASSMENT,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.MEDIUM_AND_ABOVE,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.HATE_SPEECH,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                    modelarmor_v1.RaiFilterSettings.RaiFilter(
                        filter_type=modelarmor_v1.RaiFilterType.SEXUALLY_EXPLICIT,
                        confidence_level=modelarmor_v1.DetectionConfidenceLevel.HIGH,
                    ),
                ]
            ),
            sdp_settings=modelarmor_v1.SdpFilterSettings(
                advanced_config=modelarmor_v1.SdpAdvancedConfig(
                    inspect_template=inspect_template,
                    deidentify_template=deidentify_template,
                )
            ),
        ),
    )
    
    # Prepare the request for creating the template.
    create_template = modelarmor_v1.CreateTemplateRequest(
        parent=parent, template_id=template_id, template=template
    )
    
    # Create the template.
    response = client.create_template(request=create_template)
    
    # Print the new template name.
    print(f"Created template: {response.name}")
    

    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 du modèle dans Model Armor.

    REST

     curl -X POST \
         -d '{"text":"IP address of the current network is ##.##.##.##"}' \
         -H "Content-Type: application/json" \
         -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeModelResponse"
    

    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"
      }
      },
      }
      }
      }

    Go

    Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Model Armor pour Go.

    
    import (
    	"context"
    	"fmt"
    	"io"
    
    	modelarmor "cloud.google.com/go/modelarmor/apiv1"
    	modelarmorpb "cloud.google.com/go/modelarmor/apiv1/modelarmorpb"
    	"google.golang.org/api/option"
    )
    
    // sanitizeModelResponse method sanitizes a model
    // response based on the project, location, and template settings.
    //
    // w io.Writer: The writer to use for logging.
    // projectID string: The ID of the project.
    // locationID string: The ID of the location.
    // templateID string: The ID of the template.
    // modelResponse string: The model response to sanitize.
    func sanitizeModelResponse(w io.Writer, projectID, locationID, templateID, modelResponse string) error {
    	ctx := context.Background()
    
    	// Create options for Model Armor client.
    	opts := option.WithEndpoint(fmt.Sprintf("modelarmor.%s.rep.googleapis.com:443", locationID))
    	// Create the Model Armor client.
    	client, err := modelarmor.NewClient(ctx, opts)
    	if err != nil {
    		return fmt.Errorf("failed to create client for location %s: %w", locationID, err)
    	}
    	defer client.Close()
    
    	// Initialize request argument(s)
    	modelResponseData := &modelarmorpb.DataItem{
    		DataItem: &modelarmorpb.DataItem_Text{
    			Text: modelResponse,
    		},
    	}
    
    	// Prepare request for sanitizing model response.
    	req := &modelarmorpb.SanitizeModelResponseRequest{
    		Name:              fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, locationID, templateID),
    		ModelResponseData: modelResponseData,
    	}
    
    	// Sanitize the model response.
    	response, err := client.SanitizeModelResponse(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to sanitize model response with user prompt for template %s: %w", templateID, err)
    	}
    
    	// Sanitization Result.
    	fmt.Fprintf(w, "Sanitization Result: %v\n", response)
    
    	return nil
    }
    

    Java

    Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Model Armor pour Java.

    
    import com.google.cloud.modelarmor.v1.DataItem;
    import com.google.cloud.modelarmor.v1.ModelArmorClient;
    import com.google.cloud.modelarmor.v1.ModelArmorSettings;
    import com.google.cloud.modelarmor.v1.SanitizeModelResponseRequest;
    import com.google.cloud.modelarmor.v1.SanitizeModelResponseResponse;
    import com.google.cloud.modelarmor.v1.TemplateName;
    import com.google.protobuf.util.JsonFormat;
    import java.io.IOException;
    
    public class SanitizeModelResponse {
    
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace these variables before running the sample.
    
        // 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";
        // Specify the model response.
        String modelResponse = "Unsanitized model output";
    
        sanitizeModelResponse(projectId, locationId, templateId, modelResponse);
      }
    
      public static SanitizeModelResponseResponse sanitizeModelResponse(String projectId,
          String locationId, String templateId, String modelResponse) throws IOException {
    
        // Endpoint to call the Model Armor server.
        String apiEndpoint = String.format("modelarmor.%s.rep.googleapis.com:443", locationId);
        ModelArmorSettings modelArmorSettings = ModelArmorSettings.newBuilder().setEndpoint(apiEndpoint)
            .build();
    
        try (ModelArmorClient client = ModelArmorClient.create(modelArmorSettings)) {
          // Build the resource name of the template.
          String name = TemplateName.of(projectId, locationId, templateId).toString();
    
          // Prepare the request.
          SanitizeModelResponseRequest request = 
              SanitizeModelResponseRequest.newBuilder()
                .setName(name)
                .setModelResponseData(
                  DataItem.newBuilder().setText(modelResponse)
                  .build())
                .build();
    
          SanitizeModelResponseResponse response = client.sanitizeModelResponse(request);
          System.out.println("Result for the provided model response: "
              + JsonFormat.printer().print(response.getSanitizationResult()));
    
          return response;
        }
      }
    }

    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.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const projectId = process.env.PROJECT_ID || 'your-project-id';
    // const locationId = process.env.LOCATION_ID || 'us-central1';
    // const templateId = process.env.TEMPLATE_ID || 'template-id';
    // const modelResponse = 'unsanitized model output';
    const {ModelArmorClient} = require('@google-cloud/modelarmor').v1;
    
    const client = new ModelArmorClient({
      apiEndpoint: `modelarmor.${locationId}.rep.googleapis.com`,
    });
    
    const request = {
      name: `projects/${projectId}/locations/${locationId}/templates/${templateId}`,
      modelResponseData: {
        text: modelResponse,
      },
    };
    
    const [response] = await client.sanitizeModelResponse(request);
    console.log(JSON.stringify(response, null, 2));

    PHP

    Pour exécuter ce code, commencez par configurer un environnement de développement PHP et installez le SDK Model Armor pour PHP.

    use Google\Cloud\ModelArmor\V1\Client\ModelArmorClient;
    use Google\Cloud\ModelArmor\V1\SanitizeModelResponseRequest;
    use Google\Cloud\ModelArmor\V1\DataItem;
    
    /**
     * Sanitizes a model response using the specified template.
     *
     * @param string $projectId The ID of your Google Cloud Platform project (e.g. 'my-project').
     * @param string $locationId The ID of the location where the template is stored (e.g. 'us-central1').
     * @param string $templateId The ID of the template (e.g. 'my-template').
     * @param string $modelResponse The model response to sanitize (e.g. 'my-model-response').
     */
    function sanitize_model_response(
        string $projectId,
        string $locationId,
        string $templateId,
        string $modelResponse
    ): void {
        $options = ['apiEndpoint' => "modelarmor.$locationId.rep.googleapis.com"];
        $client = new ModelArmorClient($options);
    
        $modelResponseRequest = (new SanitizeModelResponseRequest())
            ->setName("projects/$projectId/locations/$locationId/templates/$templateId")
            ->setModelResponseData((new DataItem())->setText($modelResponse));
    
        $response = $client->sanitizeModelResponse($modelResponseRequest);
    
        printf('Result for Model Response Sanitization: %s' . PHP_EOL, $response->serializeToJsonString());
    }

    Python

    Pour exécuter ce code, configurez un environnement de développement Python et installez le SDK Model Armor pour Python.

    
    from google.api_core.client_options import ClientOptions
    from google.cloud import modelarmor_v1
    
    # TODO(Developer): Uncomment these variables.
    # project_id = "YOUR_PROJECT_ID"
    # location_id = "us-central1"
    # template_id = "template_id"
    # model_response = "The model response data to sanitize"
    
    # Create the Model Armor client.
    client = modelarmor_v1.ModelArmorClient(
        client_options=ClientOptions(
            api_endpoint=f"modelarmor.{location_id}.rep.googleapis.com"
        )
    )
    
    # Initialize request argument(s)
    model_response_data = modelarmor_v1.DataItem(text=model_response)
    
    # Prepare request for sanitizing model response.
    request = modelarmor_v1.SanitizeModelResponseRequest(
        name=f"projects/{project_id}/locations/{location_id}/templates/{template_id}",
        model_response_data=model_response_data,
    )
    
    # Sanitize the model response.
    response = client.sanitize_model_response(request=request)
    
    # Sanitization Result.
    print(response)
    

    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 la langue source n'est pas spécifiée, elle est automatiquement détectée pour permettre la prise en charge multilingue.

    curl -X POST \
    -d  '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeModelResponse"

    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.

    Étapes suivantes