Incluir uma barreira de proteção com a API Converse
É possível usar uma barreira de proteção para proteger as aplicações de conversação criadas com a API Converse. Por exemplo, se você criar uma aplicação de chat com a API Converse, poderá usar uma barreira de proteção para bloquear conteúdo inadequado inserido pelo usuário e conteúdo inadequado gerado pelo modelo. Para obter informações sobre a API do Converse, consulte Realizar uma conversa com as operações de API Converse.
Tópicos
Chamar a API Converse com barreiras de proteção
Para usar uma barreira de proteção, inclua informações de configuração da barreira de proteção nas chamadas para as operações Converse ou ConverseStream (para obter respostas de streaming). Opcionalmente, é possível selecionar um conteúdo específico na mensagem que deseja que a barreira de proteção avalie. Para ter informações sobre os modelos que podem ser usados com barreiras de proteção e a API Converse, consulte Modelos compatíveis e recursos do modelo.
Tópicos
Configurar uma barreira de proteção para funcionar com a API Converse
Você especifica as informações de configuração da barreira de proteção no parâmetro de entrada guardrailConfig. A configuração inclui o ID e a versão da barreira de proteção que você deseja usar. Você também pode habilitar o rastreamento da barreira de proteção, que fornece informações sobre o conteúdo que a barreira de proteção bloqueou.
Com a operação de Converse, guardrailConfig é um objeto GuardrailConfiguration, conforme mostrado no exemplo a seguir.
{ "guardrailIdentifier": "Guardrail ID", "guardrailVersion": "Guardrail version", "trace": "enabled" }
Se você usar ConverseStream, passará um objeto GuardrailStreamConfiguration. Opcionalmente, é possível usar o campo streamProcessingMode para especificar que deseja que o modelo conclua a avaliação da barreira de proteção, antes de retornar fragmentos da resposta de streaming. Ou é possível fazer com que o modelo responda de forma assíncrona enquanto a barreira de proteção continua sua avaliação em segundo plano. Para obter mais informações, consulte Configurar o comportamento da resposta de streaming para filtrar o conteúdo.
Avaliar somente conteúdo específico em uma mensagem
Ao transmitir uma mensagem para um modelo, a barreira de proteção avalia o conteúdo da mensagem. Você também pode avaliar partes específicas de uma mensagem usando o campo guardContent (GuardrailConverseContentBlock).
dica
Usar o campo guardContent é similar a usar tags de entrada com InvokeModel e InvokeModelWithResponseStream. Para obter mais informações, consulte Aplicar tags à entrada do usuário para filtrar conteúdo.
Por exemplo, a barreira de proteção a seguir avalia somente o conteúdo no campo guardContent e não no restante da mensagem. Isso é útil para que a barreira de proteção avalie somente as mensagens mais recentes em uma conversa, conforme mostrado no exemplo a seguir.
[ { "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." } } } ] } ]
Outro caso de uso de guardContent é fornecer contexto adicional para uma mensagem, sem que a barreira de proteção avalie esse contexto. No exemplo a seguir, a barreira de proteção avalia apenas "Create a playlist of heavy metal songs" e ignora "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 o conteúdo não estiver em um bloco guardContent, isso não significa necessariamente que ele não será avaliado. Esse comportamento depende das políticas de filtragem que a barreira de proteção usa.
O exemplo a seguir mostra dois blocos guardContent com verificações de base contextual (com base nos campos qualifiers). As verificações de base contextual na barreira de proteção avaliarão apenas o conteúdo desses blocos. No entanto, se a barreira de proteção também tiver um filtro de palavras que bloqueie a palavra “básicas”, o texto “Algumas informações básicas adicionais” ainda será avaliado, mesmo que não esteja em um bloco 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"] } } } ] }]
Proteger um prompt do sistema enviado à API Converse
É possível usar barreiras de proteção com prompts do sistema que você envia à API Converse. Para proteger um prompt do sistema, especifique o campo guardContent (SystemContentBlock) no prompt do sistema que você passa para a API, conforme mostrado no exemplo a seguir.
[ { "guardContent": { "text": { "text": "Only respond with Welsh heavy metal songs." } } } ]
Se você não fornecer o campo guardContent, a barreira de proteção não avaliará a mensagem do prompt do sistema.
Comportamento da barreira de proteção do prompt do sistema e da mensagem
A forma como a barreira de proteção avalia o campo guardContent se comporta de forma diferente entre os prompts do sistema e de mensagens que você passa na mensagem.
| O prompt do sistema tem um bloco de barreira de proteção | O prompt do sistema não tem um bloco da barreira de proteção | |
|---|---|---|
|
As mensagens têm um bloco de barreira de proteção |
Sistema: a barreira de proteção investiga o conteúdo no bloco de barreira de proteção. Mensagens: a barreira de proteção investiga o conteúdo no bloco de barreira de proteção. |
Sistema: a barreira de proteção não investiga nada Mensagens: a barreira de proteção investiga o conteúdo no bloco de barreira de proteção. |
|
As mensagens não têm um bloco de barreira de proteção |
Sistema: a barreira de proteção investiga o conteúdo no bloco de barreira de proteção. Mensagens: a barreira de proteção investiga tudo |
Sistema: a barreira de proteção não investiga nada Mensagens: a barreira de proteção investiga tudo |
Processar a resposta ao usar a API Converse
Quando você chama a operação Converse, a barreira de proteção avalia a mensagem que você envia. Se a barreira de proteção detectar conteúdo bloqueado, acontecerá o seguinte:
O campo
stopReasonna resposta é definido comoguardrail_intervened.-
Se você habilitou o rastreamento, ele estará disponível no campo
trace(ConverseTrace). Com oConverseStream, o rastreamento está nos metadados (ConverseStreamMetadataEvent) que a operação retorna. -
O texto do conteúdo bloqueado que você configurou na barreira de proteção é retornado no campo
output(ConverseOutput). ComConverseStream, o texto do conteúdo bloqueado está na mensagem transmitida.
A resposta parcial a seguir mostra o texto do conteúdo bloqueado e o rastreamento da avaliação da barreira de proteção. A barreira de proteção bloqueou o termo Heavy Metal na mensagem.
{ "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 } } } } } } } }
Exemplo de código para usar a API Converse com barreiras de proteção
Este exemplo mostra como proteger uma conversa com as operações Converse e ConverseStream. O exemplo mostra como impedir que um modelo crie uma playlist que inclui músicas do gênero heavy metal.
Como proteger uma conversa
-
Crie uma barreira de proteção seguindo as instruções em Criar uma barreira de proteção .
-
Nome: insira Heavy metal.
-
Definição de tópico: insira Evitar mencionar músicas do gênero musical heavy metal.
-
Adicionar exemplos de frases: insira Criar uma playlist de músicas de heavy metal.
Na Etapa 9, insira o seguinte:
-
Mensagens mostradas para prompts bloqueados: insira Desculpe, não posso responder a perguntas sobre música heavy metal.
-
Mensagens para respostas bloqueadas: insira Desculpe, o modelo gerou uma resposta que mencionava música heavy metal.
É possível configurar outras opções da barreira de proteção, mas isso não é necessário neste exemplo.
-
-
Crie uma versão da barreira de proteção seguindo as instruções em Criar uma versão de uma barreira de proteção.
-
Nos exemplos de código abaixo (Converse e ConverseStream), defina as seguintes variáveis:
guardrail_id: o ID das barreiras de proteção que você criou na Etapa 1.guardrail_version: a versão da barreira de proteção que você criou na Etapa 2.text: useCreate a playlist of heavy metal songs.
-
Execute os exemplos de código. A saída deve exibir a avaliação da barreira de proteção e a mensagem de saída
Text: Sorry, I can't answer questions about heavy metal music.. A avaliação da entrada da barreira de proteção mostra que o modelo detectou o termo heavy metal na mensagem de entrada. -
(Opcional) Teste se a barreira de proteção bloqueia o texto impróprio que o modelo gera alterando o valor de
textpara Listar todos os gêneros de música de rock. Execute os exemplos novamente. Você deve ver uma avaliação de saída na resposta.