Includere un guardrail con l’API Converse
È possibile utilizzare un guardrail per proteggere le app conversazionali create con l’API Converse. Ad esempio, se viene creata un’app di chat con l’API Converse, è possibile utilizzare un guardrail per bloccare i contenuti inappropriati inseriti dall’utente e quelli generati dal modello. Per informazioni sull’API Converse, consultare Avvio di una conversazione con le operazioni dell’API Converse.
Argomenti
Chiamare l’API Converse con i guardrail
Per utilizzare un guardrail, è necessario includere le informazioni di configurazione del guardrail nelle chiamate alle operazioni Converse o ConverseStream (per le risposte in streaming). Facoltativamente, è possibile selezionare contenuti specifici nel messaggio che il guardrail deve valutare. Per informazioni sui modelli che è possibile utilizzare con i guardrail e l’API Converse, consultare Modelli e funzionalità del modello supportati.
Argomenti
Configurare un guardrail da utilizzare con l’API Converse
Specificare le informazioni di configurazione del guardrail nel parametro di input guardrailConfig. La configurazione include l’ID e la versione del guardrail da utilizzare. È possibile anche abilitare il tracciamento del guardrail, che fornisce informazioni sui contenuti bloccati dal guardrail.
Con l’operazione Converse, guardrailConfig è un oggetto GuardrailConfiguration, come mostrato nell’esempio seguente.
{ "guardrailIdentifier": "Guardrail ID", "guardrailVersion": "Guardrail version", "trace": "enabled" }
Se utilizzi ConverseStream, specifica un oggetto GuardrailStreamConfiguration. Facoltativamente, è possibile utilizzare il campo streamProcessingMode per specificare che il modello deve completare la valutazione del guardrail, prima di restituire blocchi di risposta in streaming. In alternativa, è possibile fare in modo che il modello risponda in modo asincrono mentre il guardrail continua la sua valutazione in background. Per ulteriori informazioni, consulta Configurare il comportamento delle risposta in streaming per filtrare i contenuti.
Valutare solo contenuti specifici di un messaggio
Se viene specificato un messaggio in un modello, il guardrail valuta il contenuto del messaggio. È possibile anche valutare parti specifiche di un messaggio utilizzando il campo guardContent (GuardrailConverseContentBlock).
Suggerimento
L’utilizzo del campo guardContent è analogo all’utilizzo dei tag di input con InvokeModel e InvokeModelWithResponseStream. Per ulteriori informazioni, consulta Applicare tag all’input dell’utente per filtrare i contenuti.
Ad esempio, il seguente guardrail valuta solo il contenuto del campo guardContent e non il resto del messaggio. Ciò risulta utile quando si vuole che il guardrail valuti esclusivamente il messaggio più recente di una conversazione, come mostrato nell’esempio seguente.
[ { "role": "user", "content": [ { "text": "Create a playlist of 2 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Sure! Here are two pop songs:\n1. \"Bad Habits\" by Ed Sheeran\n2. \"All Of The Lights\" by Kanye West\n\nWould you like to add any more songs to this playlist?" } ] }, { "role": "user", "content": [ { "guardContent": { "text": { "text": "Create a playlist of 2 heavy metal songs." } } } ] } ]
Un altro caso d’uso di guardContent consiste nel fornire contesto aggiuntivo per un messaggio senza che il guardrail lo valuti. Nell’esempio seguente, il guardrail valuta "Create a playlist of heavy metal songs" e ignora solo il "Only answer with a list of songs".
messages = [ { "role": "user", "content": [ { "text": "Only answer with a list of songs." }, { "guardContent": { "text": { "text": "Create a playlist of heavy metal songs." } } } ] } ]
Se il contenuto non si trova in un blocco guardContent, non significa necessariamente che non verrà valutato. Questo comportamento dipende dalle policy dei filtri utilizzate dal guardrail.
L’esempio seguente mostra due blocchi guardContent con controlli di correlazione contestuale (basati sui campi qualifiers). I controlli di correlazione contestuale nel guardrail valuteranno solo il contenuto di questi blocchi. Tuttavia, se il guardrail contiene anche un filtro per parole che blocca la parola “sfondo”, il testo “Alcune informazioni di base aggiuntive.” verrà comunque valutato, anche se non si trova in un blocco guardContent.
[{ "role": "user", "content": [{ "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan.", "qualifiers": ["grounding_source"] } } }, { "text": "Some additional background information." }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"] } } } ] }]
Protezione di un prompt di sistema inviato all’API Converse
È possibile utilizzare i guardrail con i prompt di sistema inviati all’API Converse. Per proteggere un prompt di sistema, specificare il campo guardContent (SystemContentBlock) nel prompt di sistema inviato all’API, come mostrato nell’esempio seguente.
[ { "guardContent": { "text": { "text": "Only respond with Welsh heavy metal songs." } } } ]
Se non viene specificato il campo guardContent, il guardrail non valuta il messaggio del prompt di sistema.
Comportamento del guardrail per messaggi e prompt di sistema
Il modo in cui il guardrail valuta il campo guardContent è diverso a seconda che si tratti di prompt di sistema o di messaggi specificati nel messaggio.
| Prompt di sistema con blocco del guardrail | Prompt di sistema senza blocco del guardrail | |
|---|---|---|
|
Messaggi con blocco del guardrail |
Sistema: il guardrail esamina il contenuto del blocco del guardrail Messaggi: il guardrail esamina il contenuto del blocco del guardrail |
Sistema: il guardrail non esamina nulla Messaggi: il guardrail esamina il contenuto del blocco del guardrail |
|
Messaggi senza blocco del guardrail |
Sistema: il guardrail esamina il contenuto del blocco del guardrail Messaggi: il guardrail esamina tutto |
Sistema: il guardrail non esamina nulla Messaggi: il guardrail esamina tutto |
Elaborazione della risposta quando si utilizza l’API Converse
Durante la chiamata dell’operazione Converse, il guardrail valuta il messaggio inviato. Se il guardrail rileva contenuti bloccati, si verifica quanto segue.
Il campo
stopReasonnella risposta viene impostato suguardrail_intervened.-
Se è abilitato il tracciamento, la traccia è disponibile nel campo
trace(ConverseTrace). ConConverseStream, la traccia si trova nei metadati (ConverseStreamMetadataEvent) restituiti dall’operazione. -
Il testo del contenuto bloccato configurato nel guardrail viene restituito nel campo
output(ConverseOutput). ConConverseStreamil testo del contenuto bloccato viene inserito nel messaggio in streaming.
La seguente risposta parziale mostra il testo del contenuto bloccato e la traccia della valutazione del guardrail. Il guardrail ha bloccato il termine Heavy metal nel messaggio.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Sorry, I can't answer questions about heavy metal music." } ] } }, "stopReason": "guardrail_intervened", "usage": { "inputTokens": 0, "outputTokens": 0, "totalTokens": 0 }, "metrics": { "latencyMs": 721 }, "trace": { "guardrail": { "inputAssessment": { "3o06191495ze": { "topicPolicy": { "topics": [ { "name": "Heavy metal", "type": "DENY", "action": "BLOCKED" } ] }, "invocationMetrics": { "guardrailProcessingLatency": 240, "usage": { "topicPolicyUnits": 1, "contentPolicyUnits": 0, "wordPolicyUnits": 0, "sensitiveInformationPolicyUnits": 0, "sensitiveInformationPolicyFreeUnits": 0, "contextualGroundingPolicyUnits": 0 }, "guardrailCoverage": { "textCharacters": { "guarded": 39, "total": 72 } } } } } } } }
Esempio di codice per l’utilizzo dell’API Converse con i guardrail
Questo esempio mostra come proteggere una conversazione con le operazioni Converse e ConverseStream. L’esempio mostra come impedire a un modello di creare una playlist che include brani di genere heavy metal.
Come proteggere una conversazione
-
Creare un guardrail seguendo le istruzioni riportate in Creare un guardrail .
-
Nome: inserire Heavy metal.
-
Definizione per argomento: inserire Evita di menzionare brani appartenenti al genere musicale heavy metal.
-
Aggiungi frasi di esempio: inserire Crea una playlist di brani heavy metal.
Nella fase 9, inserire quanto segue:
-
Messaggi visualizzati per i prompt bloccati: inserire Mi dispiace, non posso rispondere a domande sulla musica heavy metal.
-
Messaggi per le risposte bloccate: inserire Mi dispiace, il modello ha generato una risposta che menzionava la musica heavy metal.
È possibile configurare altre opzioni per i guardrail, ma non è necessario per questo esempio.
-
-
Creare una versione del guardrail seguendo le istruzioni riportate in Creazione di una versione di un guardrail.
-
Nei seguenti esempi di codice (Converse e ConverseStream), impostare le seguenti variabili:
guardrail_id: ID del guardrail creato nella fase 1.guardrail_version: versione del guardrail creato nella fase 2.text: utilizzareCreate a playlist of heavy metal songs.
-
Eseguire il codice di esempio. L’output dovrebbe mostrare la valutazione del guardrail e il messaggio di output
Text: Sorry, I can't answer questions about heavy metal music.. La valutazione dell’input del guardrail mostra che il modello ha rilevato il termine heavy metal nel messaggio di input. -
(Facoltativo) Verificare che il guardrail blocchi il testo inappropriato generato dal modello modificando il valore di
textin Elenca tutti i generi di musica rock. Eseguire nuovamente gli esempi. La risposta dovrebbe contenere una valutazione dell’output.