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á.
Inclua uma grade 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 um aplicativo de bate-papo com Converse API, poderá usar uma grade de proteção para bloquear conteúdo impróprio inserido pelo usuário e conteúdo impróprio gerado pelo modelo. Para obter informações sobre a API do Converse, consulte Converse com as operações da Converse API.
Tópicos
Chame a Converse API com grades 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 obter informações sobre os modelos que você pode usar com grades de proteção e a Converse API, consulte. Modelos compatíveis e recursos do modelo
Tópicos
Configurar uma grade de proteção para trabalhar com a API Converse
Você especifica as informações de configuração do guardrai no parâmetro de guardrailConfig
entrada. 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.
Avalie somente conteúdo específico em uma mensagem
Quando você passa uma mensagem para um modelo, sua grade 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 grade de proteção a seguir avalia somente o conteúdo no guardContent
campo e não o restante da mensagem. Isso é útil para que o guardrail avalie somente a mensagem mais recente 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 guardContent
é fornecer contexto adicional para uma mensagem sem que sua proteção avalie esse contexto. No exemplo a seguir, a grade de proteção apenas avalia "Create a playlist of heavy metal songs"
e ignora o. "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 guardContent
bloco, isso não significa necessariamente que ele não será avaliado. Esse comportamento depende das políticas de filtragem que o guardrail usa.
O exemplo a seguir mostra dois guardContent
blocos com verificações contextuais de aterramento (com base nos qualifiers
campos). As verificações contextuais de aterramento na grade de proteção avaliarão apenas o conteúdo desses blocos. No entanto, se a grade de proteção também tiver um filtro de palavras que bloqueie a palavra “plano de fundo”, o texto “Algumas informações adicionais sobre o plano de fundo”. ainda será avaliado, mesmo que não esteja em um guardContent
bloco.
[{ "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"] } } } ] }]
Protegendo um prompt do sistema enviado para a API Converse
Você pode usar grades de proteção com solicitações do sistema que você envia para a 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 proteção | O prompt do sistema não tem bloqueio de proteção | |
---|---|---|
As mensagens têm bloqueio de guardrail |
Sistema: o Guardrail investiga o conteúdo no bloco de guardrail Mensagens: o Guardrail investiga o conteúdo no bloco de proteção |
Sistema: a barreira de proteção não investiga nada Mensagens: o Guardrail investiga o conteúdo no bloco de proteção |
As mensagens não têm bloqueio de proteção |
Sistema: o Guardrail investiga o conteúdo no bloco de guardrail 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 |
Processando a resposta ao usar a Converse API
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
stopReason
na 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 Converse API com grades 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 Crie seu guarda-corpo .
-
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
text
para 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.