As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
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 grade de proteção, você inclui informações de configuração da grade de proteção em chamadas para o Converse ou ConverseStream(para respostas de streaming) em operações. 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 Converse operação, guardrailConfig é um GuardrailConfigurationobjeto, conforme mostrado no exemplo a seguir.
{ "guardrailIdentifier": "Guardrail ID", "guardrailVersion": "Guardrail version", "trace": "enabled" }
Se você usarConverseStream, você passa um GuardrailStreamConfigurationobjeto. 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 guardContent campo é semelhante ao uso de tags de entrada com InvokeModelInvokeModelWithResponseStreame. 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ê ativou o rastreamento, o rastreamento estará disponível no campo
trace(ConverseTrace). ComConverseStream, o rastreamento está nos metadados (ConverseStreamMetadataEvent) que a operação retorna. -
O texto do conteúdo bloqueado que você configurou na grade 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 a seguir (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.