Visite nosso cookbook de moderação de conteúdo para ver um exemplo de implementação de moderação de conteúdo usando o Claude.

Este guia é focado na moderação de conteúdo gerado por usuários dentro da sua aplicação. Se você está procurando orientação sobre como moderar interações com o Claude, consulte nosso guia de proteções.

Antes de construir com o Claude

Decida se deve usar o Claude para moderação de conteúdo

Aqui estão alguns indicadores-chave de que você deve usar um LLM como o Claude em vez de uma abordagem tradicional de ML ou baseada em regras para moderação de conteúdo:

A Anthropic treinou todos os modelos Claude para serem honestos, úteis e inofensivos. Isso pode resultar no Claude moderando conteúdo considerado particularmente perigoso (de acordo com nossa Política de Uso Aceitável), independentemente do prompt usado. Por exemplo, um site adulto que deseja permitir que usuários postem conteúdo sexual explícito pode descobrir que o Claude ainda sinaliza conteúdo explícito como necessitando de moderação, mesmo que especifiquem no prompt para não moderar conteúdo sexual explícito. Recomendamos revisar nossa AUP antes de construir uma solução de moderação.

Gere exemplos de conteúdo para moderar

Antes de desenvolver uma solução de moderação de conteúdo, primeiro crie exemplos de conteúdo que deve ser sinalizado e conteúdo que não deve ser sinalizado. Certifique-se de incluir casos extremos e cenários desafiadores que podem ser difíceis para um sistema de moderação de conteúdo lidar efetivamente. Depois, revise seus exemplos para criar uma lista bem definida de categorias de moderação. Por exemplo, os exemplos gerados por uma plataforma de mídia social podem incluir o seguinte:

allowed_user_comments = [
    'Este filme foi ótimo, eu realmente gostei. O ator principal arrasou!',
    'Eu odeio segundas-feiras.',
    'É um ótimo momento para investir em ouro!'
]

disallowed_user_comments = [
    'Delete este post agora ou é melhor você se esconder. Estou indo atrás de você e sua família.',
    'Fique longe dos celulares 5G!! Eles estão usando 5G para controlar você.',
    'Parabéns! Você ganhou um vale-presente de R$ 1.000. Clique aqui para resgatar seu prêmio!'
]

# Comentários de usuários de exemplo para testar a moderação de conteúdo
user_comments = allowed_user_comments + disallowed_user_comments

# Lista de categorias consideradas inseguras para moderação de conteúdo
unsafe_categories = [
    'Exploração Infantil',
    'Teorias da Conspiração',
    'Ódio',
    'Armas Indiscriminadas', 
    'Propriedade Intelectual',
    'Crimes Não Violentos', 
    'Privacidade',
    'Automutilação',
    'Crimes Sexuais',
    'Conteúdo Sexual',
    'Conselhos Especializados',
    'Crimes Violentos'
]

Moderar efetivamente esses exemplos requer uma compreensão nuançada da linguagem. No comentário Este filme foi ótimo, eu realmente gostei. O ator principal arrasou!, o sistema de moderação de conteúdo precisa reconhecer que “arrasou” é uma metáfora, não uma indicação de violência real. Por outro lado, apesar da falta de menções explícitas à violência, o comentário Delete este post agora ou é melhor você se esconder. Estou indo atrás de você e sua família. deve ser sinalizado pelo sistema de moderação de conteúdo.

A lista unsafe_categories pode ser personalizada para atender às suas necessidades específicas. Por exemplo, se você deseja impedir que menores criem conteúdo em seu site, você poderia adicionar “Postagem de Menor” à lista.


Como moderar conteúdo usando o Claude

Selecione o modelo Claude correto

Ao selecionar um modelo, é importante considerar o tamanho dos seus dados. Se os custos são uma preocupação, um modelo menor como o Claude 3 Haiku é uma excelente escolha devido à sua relação custo-benefício. Abaixo está uma estimativa do custo para moderar texto para uma plataforma de mídia social que recebe um bilhão de posts por mês:

  • Tamanho do conteúdo

    • Posts por mês: 1bn
    • Caracteres por post: 100
    • Total de caracteres: 100bn
  • Tokens estimados

    • Tokens de entrada: 28,6bn (assumindo 1 token por 3,5 caracteres)
    • Porcentagem de mensagens sinalizadas: 3%
    • Tokens de saída por mensagem sinalizada: 50
    • Total de tokens de saída: 1,5bn
  • Custo estimado do Claude 3 Haiku

    • Custo de tokens de entrada: 2.860 MTok * $0,25/MTok = $715
    • Custo de tokens de saída: 1.500 MTok * $1,25/MTok = $1.875
    • Custo mensal: $715 + $1.875 = $2.590
  • Custo estimado do Claude 3.5 Sonnet

    • Custo de tokens de entrada: 2.860 MTok * $3,00/MTok = $8.580
    • Custo de tokens de saída: 1.500 MTok * $15,00/MTok = $22.500
    • Custo mensal: $8.580 + $22.500 = $31.080
Os custos reais podem diferir dessas estimativas. Estas estimativas são baseadas no prompt destacado na seção sobre processamento em lote. Os tokens de saída podem ser reduzidos ainda mais removendo o campo explanation da resposta.

Construa um prompt forte

Para usar o Claude para moderação de conteúdo, o Claude deve entender os requisitos de moderação da sua aplicação. Vamos começar escrevendo um prompt que permite definir suas necessidades de moderação:

import anthropic
import json

# Inicializa o cliente Anthropic
client = anthropic.Anthropic()

def moderate_message(message, unsafe_categories):
    # Converte a lista de categorias inseguras em uma string, com cada categoria em uma nova linha
    unsafe_category_str = '\n'.join(unsafe_categories)
    
    # Constrói o prompt para o Claude, incluindo a mensagem e categorias inseguras
    assessment_prompt = f"""
    Determine se a seguinte mensagem requer moderação, 
    com base nas categorias inseguras descritas abaixo.
    
    Mensagem:
    <message>{message}</message>

    Categorias Inseguras:
    <categories>
    {unsafe_category_str}
    </categories>

    Responda APENAS com um objeto JSON, usando o formato abaixo:
    {{
    "violation": <Campo booleano indicando se a mensagem deve ser moderada>,
    "categories": [Lista separada por vírgulas das categorias violadas],
    "explanation": [Opcional. Incluir apenas se houver uma violação.]
    }}"""

    # Envia a requisição ao Claude para moderação de conteúdo
    response = client.messages.create(
        model="claude-3-haiku-20240307",  # Usando o modelo Haiku para custos mais baixos
        max_tokens=200,
        temperature=0,   # Usa temperatura 0 para maior consistência
        messages=[
            {"role": "user", "content": assessment_prompt}
        ]
    )
    
    # Analisa a resposta JSON do Claude
    assessment = json.loads(response.content[0].text)
    
    # Extrai o status de violação da avaliação
    contains_violation = assessment['violation']
    
    # Se houver uma violação, obtém as categorias e explicação; caso contrário, usa padrões vazios
    violated_categories = assessment.get('categories', []) if contains_violation else []
    explanation = assessment.get('explanation') if contains_violation else None
    
    return contains_violation, violated_categories, explanation

# Processa cada comentário e imprime os resultados
for comment in user_comments:
    print(f"\nComentário: {comment}")
    violation, violated_categories, explanation = moderate_message(comment, unsafe_categories)
    
    if violation:
        print(f"Categorias Violadas: {', '.join(violated_categories)}")
        print(f"Explicação: {explanation}")
    else:
        print("Nenhum problema detectado.")

[Continua na próxima parte devido ao limite de caracteres…]