Partilhar via


Visão geral da filtragem de conteúdo

O Azure OpenAI inclui um sistema de filtragem de conteúdo que funciona em conjunto com modelos principais, incluindo modelos de geração de imagens. Este sistema funciona executando tanto o prompt quanto a conclusão através de um conjunto de modelos de classificação projetados para detetar e prevenir a produção de conteúdo nocivo. O sistema de filtragem de conteúdo deteta e age em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída. Variações nas configurações de API e no design do aplicativo podem afetar as finalizações e, portanto, o comportamento de filtragem.

Importante

O sistema de filtragem de conteúdo não é aplicado a prompts e conclusões processados pelos modelos de áudio, como Whisper no Azure OpenAI no Azure AI Foundry Models. Saiba mais sobre os modelos de áudio no Azure OpenAI.

Além do sistema de filtragem de conteúdo, o Azure OpenAI realiza monitoramento para detetar conteúdo e/ou comportamentos que sugerem o uso do serviço de uma maneira que pode violar os termos do produto aplicáveis. Para obter mais informações sobre como compreender e mitigar os riscos associados ao seu aplicativo, consulte a Nota de Transparência para o Azure OpenAI. Para obter mais informações sobre como os dados são processados para filtragem de conteúdo e monitoramento de abuso, consulte Dados, privacidade e segurança para o Azure OpenAI.

Os artigos desta seção fornecem informações sobre as categorias de filtragem de conteúdo, os níveis de severidade de filtragem e sua configurabilidade e cenários de API a serem considerados no design e implementação de aplicativos.

Observação

Nenhum prompt ou conclusão é armazenado para fins de filtragem de conteúdo. Nenhuma solicitação ou conclusão é utilizada para treinar, re-treinar ou melhorar o sistema de filtragem de conteúdo sem o seu consentimento. Para obter mais informações, consulte Dados, privacidade e segurança.

Tipos de filtro de conteúdo

O sistema de filtragem de conteúdo integrado no Azure OpenAI contém:

  • Modelos neurais de classificação multiclasse destinados a detetar e filtrar conteúdos nocivos; Os modelos abrangem quatro categorias (ódio, sexual, violência e automutilação) em quatro níveis de gravidade (seguro, baixo, médio e alto). O conteúdo detectado no nível de gravidade "seguro" é identificado em anotações, mas não está sujeito a filtragem e não é configurável.
  • Outros modelos de classificação opcionais destinados a detetar o risco de jailbreak e conteúdo conhecido para texto e código; Esses modelos são classificadores binários que sinalizam se o comportamento do usuário ou do modelo se qualifica como um ataque de jailbreak ou corresponde ao texto conhecido ou ao código-fonte. O uso desses modelos é opcional, mas o uso de modelo de código de material protegido pode ser necessário para a cobertura do Compromisso de Direitos Autorais do Cliente.

Categorias de filtros

A tabela a seguir resume as categorias de risco suportadas pelo sistema de filtragem de conteúdo do Azure OpenAI.

Categoria Descrição
Ódio e justiça Os danos relacionados ao ódio e à equidade referem-se a qualquer conteúdo que ataque ou use linguagem discriminatória com referência a uma pessoa ou grupo de identidade com base em certos atributos diferenciadores desses grupos.

Isto inclui, mas não está limitado a:
  • Raça, etnia, nacionalidade
  • Grupos e expressão de identidade de género
  • Orientação sexual
  • Religião
  • Aparência pessoal e tamanho do corpo
  • Estatuto de deficiência
  • Assédio e intimidação
Sexual Sexual descreve linguagem relacionada a órgãos anatômicos e genitais, relacionamentos românticos e atos sexuais, atos retratados em termos eróticos ou afetuosos, incluindo aqueles retratados como uma agressão ou um ato sexual violento forçado contra a vontade. 

 Isto inclui, mas não está limitado a:
  • Conteúdo vulgar
  • Prostituição
  • Nudez e pornografia
  • Abuso
  • Exploração infantil, abuso de crianças, aliciamento de crianças
Violência A violência descreve a linguagem relacionada a ações físicas destinadas a ferir, ferir, danificar ou matar alguém ou algo; descreve armas, armas e entidades relacionadas.

Isso inclui, mas não está limitado a:
  • Armas
  • Bullying e intimidação
  • Extremismo terrorista e violento
  • Perseguição
Automutilação Automutilação descreve a linguagem relacionada com ações físicas destinadas a ferir, magoar ou danificar propositadamente o corpo, ou levar ao suicídio.

Isso inclui, mas não está limitado a:
  • Transtornos Alimentares
  • Bullying e intimidação
Ataques de prompt do usuário Os ataques de solicitação de utilizador são Solicitações de Utilizador projetadas para provocar a IA Generativa a exibir comportamentos que foi treinada para evitar ou para quebrar as regras definidas na Mensagem do Sistema. Estes ataques podem variar desde encenações complexas até à subversão do objetivo de segurança de forma subtil.
Ataques indiretos Os Ataques Indiretos, também conhecidos como Ataques Imediatos Indiretos ou Ataques de Injeção Imediata entre Domínios, são uma vulnerabilidade potencial em que terceiros colocam instruções maliciosas dentro de documentos que o sistema de IA Generativa pode acessar e processar. Requer incorporação e formatação de documentos.
Estabilidade2 A deteção de fundamentação sinaliza se as respostas de texto dos modelos de linguagem de grande escala (LLMs) estão fundamentadas nos materiais de origem fornecidos pelos utilizadores. Material não fundamentado refere-se a casos em que os LLMs produzem informações que não são factuais ou imprecisas a partir do que estava presente nos materiais de origem. Requer incorporação e formatação de documentos.
Material protegido para texto1 O texto de material protegido descreve o conteúdo de texto conhecido (por exemplo, letras de músicas, artigos, receitas e conteúdo da Web selecionado) que pode ser gerado por modelos de linguagem grandes.
Material protegido para código O código de material protegido descreve o código-fonte que corresponde a um conjunto de código-fonte de repositórios públicos, que pode ser gerado por modelos de linguagem grandes sem a citação adequada de repositórios de código-fonte.
Informações de identificação pessoal (PII) Informações de identificação pessoal (PII) referem-se a qualquer informação que possa ser usada para identificar um indivíduo em particular. A deteção de PII envolve a análise do conteúdo de texto em finalizações LLM e a filtragem de qualquer PII retornada.

1 Se você for proprietário de material de texto e quiser enviar conteúdo de texto para proteção, faça uma solicitação.

2 Não disponível em cenários sem streaming, disponível apenas para cenários de streaming. As seguintes regiões oferecem suporte à Deteção de Aterramento: Central dos EUA, Leste dos EUA, França Central e Leste do Canadá

Detalhes do cenário

Quando o sistema de filtragem de conteúdo deteta conteúdo nocivo, recebe um erro na chamada à API se o aviso for considerado inadequado ou o finish_reason da resposta será content_filter para indicar que parte da conclusão foi filtrada. Ao criar seu aplicativo ou sistema, convém levar em conta esses cenários em que o conteúdo retornado pela API de Conclusão é filtrado, o que pode resultar em conteúdo incompleto. A forma como você age com base nessas informações será específica do aplicativo. O comportamento pode ser resumido nos seguintes pontos:

  • Os pedidos de execução classificados numa categoria filtrada e nível de severidade irão devolver um erro HTTP 400.
  • Chamadas de conclusão que não utilizam streaming não retornarão nenhum conteúdo quando o conteúdo for filtrado. O finish_reason valor é definido como content_filter. Em casos raros com respostas mais longas, um resultado parcial pode ser retornado. Nestes casos, o finish_reason é atualizado.
  • Para chamadas de conclusão de streaming, os segmentos são devolvidos ao usuário à medida que são concluídos. O serviço continua a transmissão até atingir um token de parada, um limite de comprimento ou quando é detetado conteúdo classificado numa categoria filtrada e nível de gravidade.

Cenário: Envia-se um pedido de conclusão não em fluxo contínuo solicitando múltiplas saídas; nenhum conteúdo é classificado numa categoria filtrada e nível de severidade

A tabela abaixo descreve as várias maneiras pelas quais a filtragem de conteúdo pode aparecer:

Código de resposta HTTP Comportamento de resposta
200 Nos casos em que toda a geração passa os filtros conforme configurados, nenhum detalhe de moderação de conteúdo é adicionado à resposta. O finish_reason para cada geração será de parada ou comprimento.

Exemplo de carga útil de solicitação:

{
    "prompt":"Text example", 
    "n": 3,
    "stream": false
}

Exemplo de resposta JSON:

{
    "id": "example-id",
    "object": "text_completion",
    "created": 1653666286,
    "model": "davinci",
    "choices": [
        {
            "text": "Response generated text",
            "index": 0,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

Cenário: Sua chamada de API solicita várias respostas (N>1) e pelo menos uma das respostas é filtrada

Código de resposta HTTP Comportamento de resposta
200 As gerações que foram filtradas terão um finish_reason valor de content_filter.

Exemplo de carga útil de solicitação:

{
    "prompt":"Text example",
    "n": 3,
    "stream": false
}

Exemplo de resposta JSON:

{
    "id": "example",
    "object": "text_completion",
    "created": 1653666831,
    "model": "ada",
    "choices": [
        {
            "text": "returned text 1",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        },
        {
            "text": "returned text 2",
            "index": 1,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

Cenário: Um prompt de entrada inadequado é enviado para a API de conclusão (para streaming ou não-streaming)

Código de resposta HTTP Comportamento de resposta
400 A chamada de API falha quando o prompt aciona um filtro de conteúdo conforme configurado. Modifique o prompt e tente novamente.

Exemplo de carga útil de solicitação:

{
    "prompt":"Content that triggered the filtering model"
}

Exemplo de resposta JSON:

"error": {
    "message": "The response was filtered",
    "type": null,
    "param": "prompt",
    "code": "content_filter",
    "status": 400
}

Cenário: Você faz uma solicitação de conclusão em streaming; nenhum conteúdo de saída é classificado como pertencente a qualquer categoria filtrada ou nível de severidade.

Código de resposta HTTP Comportamento de resposta
200 Neste caso, a chamada é transmitida de volta com a geração completa e finish_reason será 'comprimento' ou 'interrupção' para cada resposta gerada.

Exemplo de carga útil de solicitação:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

Exemplo de resposta JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670914,
    "model": "ada",
    "choices": [
        {
            "text": "last part of generation",
            "index": 2,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

Cenário: Você faz uma chamada de conclusão de streaming solicitando várias finalizações e pelo menos uma parte do conteúdo de saída é filtrada

Código de resposta HTTP Comportamento de resposta
200 Para um determinado índice de geração, a última parte da geração inclui um valor não nulo finish_reason . O valor é content_filter quando a geração foi filtrada.

Exemplo de carga útil de solicitação:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

Exemplo de resposta JSON:

 {
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670515,
    "model": "ada",
    "choices": [
        {
            "text": "Last part of generated text streamed back",
            "index": 2,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

Cenário: O sistema de filtragem de conteúdo não é executado após a conclusão

Código de resposta HTTP Comportamento de resposta
200 Se o sistema de filtragem de conteúdo estiver inativo ou não conseguir concluir a operação a tempo, sua solicitação ainda será concluída sem filtragem de conteúdo. Você pode determinar que a filtragem não foi aplicada procurando uma mensagem de erro no content_filter_results objeto.

Exemplo de carga útil de solicitação:

{
    "prompt":"Text example",
    "n": 1,
    "stream": false
}

Exemplo de resposta JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1652294703,
    "model": "ada",
    "choices": [
        {
            "text": "generated text",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null,
            "content_filter_results": {
                "error": {
                    "code": "content_filter_error",
                    "message": "The contents are not filtered"
                }
            }
        }
    ]
}

Melhores práticas

Como parte do design da sua aplicação, considere as seguintes boas práticas para oferecer uma experiência positiva com a sua aplicação e, ao mesmo tempo, minimizar potenciais danos:

  • Decida como pretende lidar com cenários em que os utilizadores enviam pedidos que contêm conteúdo classificado numa categoria filtrada e nível de gravidade ou utilizam a sua aplicação indevidamente.
  • Verifique finish_reason para verificar se uma conclusão está filtrada.
  • Verifique se não existe nenhum objeto de erro no content_filter_results (a indicar que os filtros de conteúdo não foram executados).
  • Se você estiver usando o modelo de código de material protegido no modo de anotação, exiba o URL de citação quando estiver exibindo o código em seu aplicativo.