Questa pagina descrive in dettaglio come sanificare prompt e risposte. Model Armor offre un insieme di filtri per proteggere le tue applicazioni di AI. Model Armor controlla prompt e risposte in base ai livelli di confidenza di screening configurati.
Prima di iniziare
Crea un modello seguendo le istruzioni riportate in Creare modelli.
Ottenere le autorizzazioni richieste
Per ottenere le autorizzazioni necessarie per sanificare prompt e risposte, chiedi all'amministratore di concederti i seguenti ruoli IAM su Model Armor:
- Model Armor User (
roles/modelarmor.user) - Visualizzatore Model Armor (
roles/modelarmor.viewer)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Nel progetto contenente il modello Sensitive Data Protection, concedi il
ruolo Utente DLP (roles/dlp.user)
e il ruolo Lettore DLP (roles/dlp.reader)
all'agente di servizio creato nell'ambito del passaggio Protezione avanzata dei dati sensibili di
Crea modelli.
Salta questo passaggio se il modello Sensitive Data Protection si trova nello stesso progetto del modello 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
Sostituisci quanto segue:
SDP_PROJECT_ID: l'ID del progetto a cui appartiene il modello avanzato di Sensitive Data Protection.PROJECT_NUMBER: il numero del progetto a cui appartiene il modello.
Abilita API
Prima di poter utilizzare Model Armor, devi abilitare l'API Model Armor.
Console
Abilita l'API Model Armor.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.Seleziona il progetto in cui vuoi attivare Model Armor.
gcloud
Prima di iniziare, segui questi passaggi utilizzando Google Cloud CLI con l'API Model Armor:
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Imposta l'override dell'endpoint API utilizzando gcloud CLI.
Imposta l'override dell'endpoint API utilizzando gcloud CLI
Questo passaggio è necessario solo se utilizzi gcloud CLI per abilitare l'API Model Armor. Devi impostare manualmente l'override dell'endpoint API per assicurarti che gcloud CLI indirizzi correttamente le richieste al servizio Model Armor.
Esegui questo comando per impostare l'endpoint API per il servizio Model Armor.
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
Sostituisci LOCATION con la regione in cui vuoi utilizzare Model Armor.
Sanifica i prompt
Sanitizza i prompt per impedire input dannosi e contribuire a garantire che vengano inviati prompt sicuri e appropriati ai tuoi LLM.
Prompt di testo
Model Armor sanifica i prompt di testo analizzando il testo e applicando diversi filtri per identificare e mitigare potenziali minacce.
REST
Utilizza il seguente comando per sanificare un prompt di testo in 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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto per il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Il risultato è la seguente risposta. Tieni presente che MATCH_FOUND rientra nella categoria
Contenuti dannosi.
{ "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
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
C#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Model Armor.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
Node.js
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Model Armor.
PHP
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo PHP e installare l'SDK PHP Model Armor.
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
Il risultato è la seguente risposta.
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 }
Best practice per la sanificazione dei prompt nell'AI conversazionale
Quando utilizzi Model Armor per sanificare gli input in un'applicazione di AI conversazionale,
è importante capire cosa includere nel campo userPromptData
per il metodo SanitizeUserPrompt.
Sanitizza ogni input utente separatamente: chiama l'API
SanitizeUserPromptper ogni nuovo messaggio ricevuto dall'utente. In questo modo, ogni input dell'utente viene analizzato per rilevare potenziali minacce prima di essere elaborato dal tuo LLM. Il campouserPromptDatadeve contenere solo i contenuti dell'ultimo messaggio dell'utente nella conversazione corrente.Non includere la cronologia delle conversazioni: evita di concatenare l'intera cronologia della chat nel campo
userPromptData.Non includere prompt di sistema: escludi il prompt di sistema dal campo
userPromptData. Model Armor si concentra sul rilevamento delle minacce solo negli input forniti dall'utente.
Sanitizzare i prompt di testo con il rilevamento multilingue abilitato
Abilita il rilevamento multilingue su base per richiesta impostando il flag
enableMultiLanguageDetection su true per ogni singola richiesta.
Se vuoi, puoi specificare la lingua di origine
per risultati più precisi.
- Se non specifichi la lingua di origine, Model Armor la rileva automaticamente per fornire il supporto multilingue.
- Se specifichi la lingua di origine, Model Armor la utilizza per valutare il prompt di testo e non esegue il rilevamento automatico della lingua.
Utilizza il seguente comando per sanificare un prompt di testo in Model Armor con il rilevamento multilingue abilitato a livello di richiesta.
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto per il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Sanificare i prompt di testo in modalità flusso
I metodi di streaming di Model Armor sanificano i prompt e le risposte in tempo reale come flussi di testo, senza attendere che l'intero contenuto diventi disponibile. Questa funzionalità è particolarmente utile per le applicazioni che gestiscono payload di testo di grandi dimensioni o che richiedono interazioni a bassa latenza con i LLM.
Utilizza questi metodi per attivare lo streaming:
- StreamSanitizeUserPrompt: trasmette e sanifica il testo fornito dall'utente.
- StreamSanitizeModelResponse: trasmette e sanifica il testo generato dall'LLM.
Model Armor offre le seguenti modalità di streaming:
- Modalità bufferizzata: raccoglie tutti i blocchi trasmessi in streaming ed elabora come una singola unità.
- Modalità in tempo reale: elabora ogni blocco singolarmente man mano che viene ricevuto, fornendo un feedback continuo.
Model Armor supporta un numero illimitato di token quando si utilizza la modalità di streaming in tempo reale, mentre la modalità bufferizzata è soggetta a limiti di token.
Lo streaming funziona nel seguente modo:
- Input suddiviso in blocchi: la tua applicazione invia il testo a Model Armor in parti più piccole (blocchi) anziché inviare l'intero corpo del testo contemporaneamente.
- Elaborazione in tempo reale: Model Armor elabora questi blocchi man mano che arrivano e applica i filtri di sicurezza configurati nel modello.
- Feedback continuo: a seconda della modalità (in tempo reale o bufferizzata), Model Armor restituisce i risultati per ogni blocco elaborato o dopo aver ricevuto tutti i blocchi.
Utilizza il seguente comando per sanificare un prompt di testo in streaming.
Go
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
package main
import (
"context"
"fmt"
"io"
"log"
modelarmor "cloud.google.com/go/modelarmor/apiv1beta"
modelarmorpb "cloud.google.com/go/modelarmor/apiv1beta/modelarmorpb"
"google.golang.org/api/option"
"google.golang.org/protobuf/encoding/protojson"
)
func main() {
ctx := context.Background()
// Define variables for project, location, and template ID
projectID := "your-project-id"
location := "your-location-id"
templateID := "your-template-id"
// 1. Create the client with the custom regional endpoint.
opts := option.WithEndpoint("modelarmor.us-central1.rep.googleapis.com:443")
c, err := modelarmor.NewClient(ctx, opts)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
defer c.Close()
// 2. Start the StreamSanitizeUserPrompt bidirectional stream.
stream, err := c.StreamSanitizeUserPrompt(ctx)
if err != nil {
log.Fatalf("failed to initialize stream: %v", err)
}
// 3. Use a goroutine to send the requests.
go func() {
// Define the user prompt data
userPromptData := &modelarmorpb.DataItem{
DataItem: &modelarmorpb.DataItem_Text{
// Specify the user prompt.
Text: "This is a sample user prompt",
},
}
// Create the request object
req := &modelarmorpb.SanitizeUserPromptRequest{ // Use fmt.Sprintf to construct the resource name
Name: fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, location, templateID),
UserPromptData: userPromptData,
}
reqs := []*modelarmorpb.SanitizeUserPromptRequest{req}
for _, r := range reqs {
if err := stream.Send(r); err != nil {
log.Printf("Failed to send request: %v", err)
return
}
}
stream.CloseSend()
}()
// 4. Iterate over the responses from the stream.
for {
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
log.Fatalf("failed to receive response: %v", err)
}
// Marshal the proto message to a formatted JSON string
b, _ := protojson.MarshalOptions{
Multiline: true,
Indent: " ",
}.Marshal(resp)
// Results can be consumed or assigned here in production workflows
}
}
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
package com.example.armor;
import com.google.api.gax.rpc.BidiStream;
import com.google.cloud.modelarmor.v1beta.DataItem;
import com.google.cloud.modelarmor.v1beta.ModelArmorClient;
import com.google.cloud.modelarmor.v1beta.ModelArmorSettings;
import com.google.cloud.modelarmor.v1beta.SanitizationResult;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptRequest;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptResponse;
import com.google.cloud.modelarmor.v1beta.StreamingMode;
import com.google.cloud.modelarmor.v1beta.TemplateName;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class StreamSanitizeUserPrompt {
public static void main(String[] args) {
try {
streamSanitizeUserPromptExample();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void streamSanitizeUserPromptExample()
throws IOException, InterruptedException, ExecutionException {
// Specify the Google Project ID.
String projectId = "your-project-id";
// Specify the location ID. For example, us-central1.
String locationId = "your-location-id";
// Specify the template ID.
String templateId = "your-template-id";
String customApiEndpoint = "modelarmor.us-central1.rep.googleapis.com:443";
List<String> promptChunks = Arrays.asList(
"This is the first part of the user prompt. ",
"This is the second part. ",
"And this is the final part."
);
// ModelArmorSettings is now properly imported and recognized here
try (
ModelArmorClient modelArmorClient = ModelArmorClient.create(
ModelArmorSettings.newBuilder()
.setEndpoint(customApiEndpoint)
.build()
)
) {
BidiStream<SanitizeUserPromptRequest, SanitizeUserPromptResponse> stream =
modelArmorClient.streamSanitizeUserPromptCallable().call();
String resourceName = TemplateName.of(projectId, locationId, templateId).toString();
// --- Send First Request ---
SanitizeUserPromptRequest firstRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(0)))
.setStreamingMode(StreamingMode.STREAMING_MODE_BUFFERED)
.build();
stream.send(firstRequest);
// --- Send Subsequent Requests ---
for (int i = 1; i < promptChunks.size(); i++) {
SanitizeUserPromptRequest subsequentRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(i)))
.build();
stream.send(subsequentRequest);
}
stream.closeSend();
// --- Receive Responses ---
for (SanitizeUserPromptResponse response : stream) {
if (response.hasSanitizationResult()) {
SanitizationResult result = response.getSanitizationResult();
// Results can be consumed or assigned here in production workflows
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
from google.cloud import modelarmor_v1beta
def sample_stream_sanitize_user_prompt():
# Create a client
client = modelarmor_v1beta.ModelArmorClient(transport="grpc", client_options = {"api_endpoint" : "modelarmor.us-central1.rep.googleapis.com"})
# Specify the Google Project ID.
project_id = "your-project-id"
# Specify the location ID. For example, us-central1.
location = "your-location-id"
# Specify the template ID.
template_id = "your-template-id"
template_name = client.template_path(project_id, location, template_id)
# Initialize request argument(s)
user_prompt_data = modelarmor_v1beta.DataItem()
# Specify the user prompt.
user_prompt_data.text = "This is a sample user prompt"
request = modelarmor_v1beta.SanitizeUserPromptRequest(
name=template_name,
user_prompt_data=user_prompt_data,
)
# This method expects an iterator which contains
# 'modelarmor_v1beta.SanitizeUserPromptRequest' objects
# Here we create a generator that yields a single `request` for
# demonstrative purposes.
requests = [request]
def request_generator():
for request in requests:
yield request
# Make the request
stream = client.stream_sanitize_user_prompt(requests=request_generator())
# Handle the response
for response in stream:
# Results can be consumed or assigned here in production workflows
sample_stream_sanitize_user_prompt()
Tieni presente quanto segue quando sanifichi un prompt o una risposta di testo in streaming:
- Per sanificare i contenuti in modo efficace, assicurati che i singoli blocchi non superino i limiti dei token.
- I metodi di streaming di Model Armor supportano solo l'input testuale, non gli allegati come immagini e file.
- Utilizza l'ID correlazione per monitorare i log di sanificazione dello streaming per una determinata richiesta.
- I metodi di streaming di Model Armor non supportano l'anonimizzazione di Sensitive Data Protection.
Prompt basati su file
Per sanificare un prompt archiviato in un file, fornisci i contenuti del file in formato base64. Model Armor non rileva automaticamente il tipo di file. Devi impostare esplicitamente il campo byteDataType per indicare il formato del file. Se il campo è mancante o non specificato, la richiesta non va a buon fine. I valori possibili di
byteDataType sono PLAINTEXT_UTF8, PDF, WORD_DOCUMENT,
EXCEL_DOCUMENT, POWERPOINT_DOCUMENT, TXT e CSV.
La deidentificazione di Sensitive Data Protection non è supportata per i prompt basati su file.
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.FILE_TYPE: il formato del file di input.
Go
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
C#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Model Armor.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
Node.js
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Model Armor.
PHP
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo PHP e installare l'SDK PHP Model Armor.
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
Configurazione di base di Sensitive Data Protection
Model Armor si integra con Sensitive Data Protection per contribuire a prevenire l'esposizione accidentale di informazioni private. Crea un modello con le impostazioni di base di Sensitive Data Protection abilitate. La protezione dei dati sensibili di base ti aiuta a eseguire lo screening di un insieme fisso di infoType di Sensitive Data Protection.
I seguenti infoType di Sensitive Data Protection vengono analizzati nel prompt per tutte le regioni:
CREDIT_CARD_NUMBER: Il numero di una carta di credito può contenere da 12 a 19 cifre. Si utilizzano per eseguire transazioni di pagamento a livello globale.FINANCIAL_ACCOUNT_NUMBER: un numero che si riferisce a un conto finanziario specifico, ad esempio un numero di conto bancario o un numero di conto pensionistico.GCP_CREDENTIALS: Google Cloud credenziali del service account. Credenziali che possono essere utilizzate per l'autenticazione con {api_client_lib_name} e service account.GCP_API_KEY: Google Cloud chiave API. Una stringa criptata utilizzata quando vengono chiamate API Google Cloud che non richiedono l'accesso a dati utente privati.PASSWORD: Cancella le password in chiaro nelle configurazioni, nel codice e in altri contenuti testuali.
I seguenti infoType di Sensitive Data Protection aggiuntivi vengono scansionati nel prompt per le regioni con sede negli Stati Uniti:
US_SOCIAL_SECURITY_NUMBER: Il codice SSN (States Social Security) statunitense è un numero di previdenza sociale di 9 cifre rilasciato a cittadini statunitensi, residenti permanenti e residenti temporanei. Questo rilevatore non ricercherà la corrispondenza con numeri composti da soli zeri in uno dei gruppi di cifre (ossia 000-##-####, ###-00-#### o ###-##-0000), con numeri contenenti 666 nel primo gruppo di cifre o con numeri la cui cifra iniziale è 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: un numero di identificazione del contribuente individuale (ITIN) degli Stati Uniti è un tipo di numero di identificazione fiscale (TIN) emesso dall'Internal Revenue Service (IRS). Si tratta di un numero utilizzato a fini fiscali disponibile solo per alcuni stranieri residenti e non residenti, i loro coniugi e familiari a carico che non possono ottenere un numero di previdenza sociale (SSN).
Ecco un esempio di configurazione di base di Sensitive Data Protection:
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
Sostituisci quanto segue:
TEMPLATE_ID: l'ID del modello.LOCATION: la posizione del modello.
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Go
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
C#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Model Armor.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
Node.js
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Model Armor.
PHP
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo PHP e installare l'SDK PHP Model Armor.
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
Utilizza il modello creato per esaminare i prompt. Ecco un esempio:
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Questo esempio restituisce la seguente risposta:
{ "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" } } } ] } } } ] } }
Configurazione avanzata di Sensitive Data Protection
Model Armor filtra i prompt e le risposte del modello LLM utilizzando l'impostazione di configurazione avanzata di Sensitive Data Protection. In questo modo puoi utilizzare le funzionalità di Sensitive Data Protection oltre agli infoType offerti nell'impostazione di base di Sensitive Data Protection.
Per utilizzare il filtro avanzato Sensitive Data Protection in Model Armor, i modelli Sensitive Data Protection devono trovarsi nella stessa posizione cloud del modello Model Armor.
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
Sostituisci quanto segue:
TEMPLATE_ID: l'ID del modello.LOCATION: la posizione del modello.
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Questo esempio restituisce la seguente risposta:
{ "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#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Model Armor.
Go
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
Node.js
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Model Armor.
PHP
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo PHP e installare l'SDK PHP Model Armor.
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
Utilizza il modello creato per esaminare i prompt. Ecco un esempio:
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Questo esempio restituisce la seguente risposta:
{ "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"] } } } ] } }
Sanifica la risposta del modello
A volte gli LLM possono generare risposte dannose. Per ridurre i rischi associati all'utilizzo di LLM nelle tue applicazioni, è importante sanificare le loro risposte.
Ecco un esempio di comando per sanificare una risposta del modello in 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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.Questo esempio restituisce la seguente risposta:
{ "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#
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo C# e installare l'SDK C# Model Armor.
Go
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Go e installare l'SDK Go di Model Armor.
Java
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Java e installare l'SDK Java Model Armor.
Node.js
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo Node.js e installare l'SDK Node.js di Model Armor.
PHP
Per eseguire questo codice, devi innanzitutto configurare un ambiente di sviluppo PHP e installare l'SDK PHP Model Armor.
Python
Per eseguire questo codice, configura un ambiente di sviluppo Python e installa l'SDK Python di Model Armor.
Sanifica la risposta del modello con il rilevamento multilingue attivato
Attiva il rilevamento multilingue in base alla richiesta impostando il
flag enableMultiLanguageDetection su true per ogni risposta individuale.
Se vuoi, puoi specificare la
lingua di origine
per ottenere risultati più precisi.
- Se non specifichi la lingua di origine, Model Armor la rileva automaticamente per fornire il supporto multilingue.
- Se specifichi la lingua di origine, Model Armor la utilizza per valutare la risposta del modello e non esegue il rilevamento automatico della lingua.
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"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto a cui appartiene il modello.LOCATION: la posizione del modello.TEMPLATE_ID: l'ID del modello.
Sanifica la risposta del modello in tutti i progetti
Per abilitare la gestione centralizzata della sicurezza dell'AI, le organizzazioni spesso archiviano i template Model Armor in un progetto dedicato (progetto A: TEMPLATE_PROJECT_ID) mentre le loro applicazioni vengono eseguite in progetti separati (progetto B).
Per consentire a un account di servizio (CALLER_SERVICE_ACCOUNT) del progetto B di accedere a un modello nel progetto A, devi aggiungere un binding della policy IAM al progetto del modello.
Per concedere le autorizzazioni tra progetti necessarie, esegui questo comando:
gcloud projects add-iam-policy-binding TEMPLATE_PROJECT_ID \ --member='serviceAccount:CALLER_SERVICE_ACCOUNT' \ --role='roles/modelarmor.user'
Sostituisci quanto segue:
TEMPLATE_PROJECT_ID: l'ID del progetto in cui è ospitato il modello.CALLER_SERVICE_ACCOUNT: il account di servizio del progetto che effettua la richiesta API.
Passaggi successivi
- Scopri di più su Model Armor.
- Scopri di più sulle impostazioni di base di Model Armor.
- Scopri di più sui modelli Model Armor.
- Risolvi i problemi di Model Armor.