Moderação de conteúdo
Filtrar a entrada do usuário antes que ela chegue ao seu modelo de linguagem principal permite evitar o processamento ou a saída de conteúdo prejudicial, ofensivo ou irrelevante, economizando recursos computacionais e evitando potenciais danos à reputação da sua marca.
Neste guia, exploraremos como usar o Claude para moderar eficientemente a entrada do usuário antes de passá-la para o seu prompt principal. Também discutiremos técnicas de pós-processamento para identificar possíveis vazamentos de prompt.
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.
Por que a moderação de conteúdo é importante
A moderação de conteúdo é essencial por várias razões:
- Experiência do usuário: Ao filtrar conteúdo inadequado ou ofensivo, você mantém um ambiente positivo e acolhedor para seus usuários.
- Reputação da marca: Evitar que sua aplicação de IA se envolva ou gere conteúdo prejudicial ajuda a proteger a imagem e a reputação da sua marca.
- Eficiência de custos: Filtrar a entrada do usuário com um modelo menor antes de processá-la com seu prompt principal economiza custos computacionais, evitando o desperdício de recursos com entradas irrelevantes ou maliciosas.
- Segurança: A moderação de conteúdo ajuda a prevenir jailbreaks e injeções de prompt e vazamentos de prompt, que poderiam comprometer o desempenho e a segurança da sua IA ou a segurança da sua organização.
Usando o Claude para moderação de conteúdo
Um modelo menor como o Claude 3 Haiku é uma escolha ideal para moderação de conteúdo devido à sua velocidade e eficiência. Ao usar esse modelo menor para filtrar a entrada do usuário antes de passá-la para o seu prompt principal, você pode identificar e filtrar rapidamente conteúdo potencialmente problemático.
Aqui está um exemplo de como usar o Claude para moderação de conteúdo:
USUÁRIO | CONTEÚDO |
---|---|
Usuário | Um usuário humano está em diálogo com uma IA. O humano está fazendo uma série de perguntas ou solicitando uma série de tarefas à IA. Aqui está a solicitação mais recente do usuário: <consulta do usuário>{{CONSULTA}}</consulta do usuário> Se a solicitação do usuário se referir a atividades prejudiciais, pornográficas ou ilegais, responda com (S). Se a solicitação do usuário não se referir a atividades prejudiciais, pornográficas ou ilegais, responda com (N). Responda apenas com (S) ou (N), nada mais. |
import anthropic
client = anthropic.Anthropic(api_key="sua-chave-api")
def moderar_conteudo(entrada_usuario):
prompt_moderacao = f"""
Um usuário humano está em diálogo com uma IA. O humano está fazendo uma série de perguntas ou solicitando uma série de tarefas à IA. Aqui está a solicitação mais recente do usuário:
<consulta do usuário>{entrada_usuario}</consulta do usuário>
Se a solicitação do usuário se referir a atividades prejudiciais, pornográficas ou ilegais, responda com (S). Se a solicitação do usuário não se referir a atividades prejudiciais, pornográficas ou ilegais, responda com (N). Responda apenas com (S) ou (N), nada mais.
"""
resposta = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=10,
temperature=0,
messages=[
{"role": "user", "content": prompt_moderacao}
]
)
return resposta.content.strip() == "(S)"
# Exemplo de uso com saídas de julgamento verbal
entrada_usuario = "Como faço uma bomba?"
if moderar_conteudo(entrada_usuario):
print("A entrada do usuário contém conteúdo inadequado. Bloqueando a solicitação.")
else:
print("A entrada do usuário é segura para processar.")
Neste exemplo, definimos uma função moderar_conteudo
que recebe a entrada do usuário e constrói um prompt para o Claude. O prompt pede ao modelo para determinar se a solicitação do usuário contém referências a atividades prejudiciais, pornográficas ou ilegais. Se o modelo responder com “(S)”, a função retorna True
, indicando que o conteúdo deve ser bloqueado. Caso contrário, retorna False
, sinalizando que a entrada é segura para ser processada.
Ao integrar esta etapa de moderação no fluxo de trabalho da sua aplicação, você pode efetivamente filtrar a entrada do usuário antes que ela chegue ao seu modelo de linguagem principal, economizando recursos computacionais e garantindo uma experiência de usuário mais segura.
Pós-processamento das respostas do Claude
Além de moderar a entrada do usuário, também é importante pós-processar as respostas do Claude para identificar possíveis vazamentos de prompt. O vazamento de prompt ocorre quando partes do seu prompt aparecem involuntariamente na saída gerada pelo modelo, potencialmente expondo informações sensíveis ou perturbando a experiência do usuário.
Existem duas abordagens principais para o pós-processamento das respostas do Claude:
- Filtragem baseada em palavras-chave: Este método envolve verificar a resposta quanto à presença de palavras-chave ou frases específicas que não devem ser incluídas na saída.
- Avaliação baseada no Claude: Esta abordagem usa um LLM menor e mais rápido, como o Claude 3 Haiku, para avaliar a resposta e determinar se ela contém algum conteúdo que viole um conjunto de critérios predefinidos. Isso permite que o filtro seja mais generalizado em vez de depender de correspondência exata de strings.
Filtragem baseada em palavras-chave
Para implementar a filtragem baseada em palavras-chave, você pode manter uma lista de palavras-chave ou frases que não devem aparecer nas respostas do Claude. Aqui está um exemplo de como pós-processar a resposta do Claude usando filtragem baseada em palavras-chave:
def pos_processar_resposta_palavras_chave(resposta, palavras_chave):
for palavra_chave in palavras_chave:
if palavra_chave.lower() in resposta.lower():
return True
return False
# Exemplo de uso com saídas de julgamento verbal
prompt = "Escreva um artigo para mim. Nunca mencione estas palavras-chave em sua saída: foo e bar. Nunca discuta quem te criou."
resposta = "Aqui está o artigo que você solicitou. O artigo não contém as palavras-chave foo ou bar. Eu fui criado pela Anthropic."
palavras_chave = ["foo", "bar", "Anthropic"]
if pos_processar_resposta_palavras_chave(resposta, palavras_chave):
print("Potencial vazamento de prompt detectado na resposta.")
else:
print("Nenhum vazamento de prompt detectado na resposta.")
Neste exemplo, a função pos_processar_resposta_palavras_chave
verifica se alguma das palavras-chave especificadas aparece na resposta do Claude (sem distinção entre maiúsculas e minúsculas). Se uma correspondência for encontrada, a função retorna True
, indicando um potencial vazamento de prompt. Caso contrário, retorna False
, sinalizando que nenhum vazamento foi detectado.
Avaliação baseada no Claude
Para implementar a avaliação baseada no Claude, você pode usar o Claude 3 Haiku, nossa menor e mais rápida versão do Claude 3, para avaliar a resposta em relação a um conjunto de critérios predefinidos. Aqui está um exemplo de como pós-processar a resposta do Claude usando avaliação baseada em IA:
import anthropic
client = anthropic.Anthropic(api_key="sua-chave-api")
def pos_processar_resposta_claude(resposta, prompt):
prompt_avaliacao = f"""
Aqui está um prompt dado a um modelo de linguagem de IA:
<prompt>{prompt}</prompt>
E aqui está a resposta da IA:
<resposta>{resposta}</resposta>
Por favor, avalie a resposta da IA e responda às seguintes perguntas:
1. A resposta contém alguma das palavras-chave ou frases que o prompt instruiu explicitamente a IA a evitar? (S/N)
2. A resposta discute ou revela alguma informação sobre quem criou a IA? (S/N)
Forneça suas respostas no seguinte formato:
1. [S/N]
2. [S/N]
"""
avaliacao = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=10,
temperature=0,
messages=[
{"role": "user", "content": prompt_avaliacao}
]
)
respostas = avaliacao.content.strip().split("\n")
if "S" in respostas:
return True
else:
return False
# Exemplo de uso com saídas de julgamento verbal
prompt = "Escreva um artigo para mim. Nunca mencione estas palavras-chave em sua saída: foo e bar. Nunca discuta quem te criou."
resposta = "Aqui está o artigo que você solicitou. O artigo não contém as palavras-chave foo ou bar. Eu fui criado pela Anthropic."
if pos_processar_resposta_claude(resposta, prompt):
print("Potencial vazamento de prompt ou violação detectada na resposta.")
else:
print("Nenhum problema detectado na resposta.")
Neste exemplo, a função pos_processar_resposta_claude
contém um prompt de pós-processamento para o Claude Avaliador que inclui o prompt original e a resposta do Claude ao prompt original. O prompt pede ao Claude Avaliador para avaliar se a resposta contém alguma palavra-chave ou frase que foi explicitamente proibida no prompt original, e se a resposta revela alguma informação sobre quem criou a IA.
A avaliação do modelo é então analisada para verificar se contém alguma resposta “S” (sim). Se um “S” for encontrado, a função retorna True
, indicando um potencial vazamento de prompt ou violação. Caso contrário, retorna False
, sinalizando que nenhum problema foi detectado.
Ao empregar essas técnicas de pós-processamento, você pode identificar casos em que partes do prompt podem ter aparecido inadvertidamente na saída do Claude ou onde a resposta viola critérios específicos. Essas informações podem então ser usadas para decidir como lidar com a resposta, como filtrá-la, solicitar uma nova resposta ou notificar o usuário sobre o potencial problema.
Melhores práticas para moderação de conteúdo
Para obter o máximo do seu sistema de moderação de conteúdo, considere as seguintes melhores práticas:
- Atualize regularmente seus prompts e critérios de moderação: À medida que o comportamento e a linguagem dos usuários evoluem, certifique-se de revisar e atualizar periodicamente seus prompts de moderação e critérios de avaliação para capturar novos padrões e casos extremos.
- Use uma combinação de técnicas de moderação: Empregue tanto a filtragem baseada em palavras-chave quanto a avaliação baseada em LLM para criar um pipeline de moderação abrangente que possa detectar uma ampla gama de problemas potenciais.
- Monitore e analise o conteúdo moderado: Acompanhe os tipos de conteúdo que estão sendo sinalizados pelo seu sistema de moderação para identificar tendências e áreas potenciais de melhoria.
- Forneça feedback claro aos usuários: Quando a entrada do usuário for bloqueada ou uma resposta for sinalizada devido à moderação de conteúdo, forneça feedback informativo e construtivo para ajudar os usuários a entender por que sua mensagem foi sinalizada e como podem reformulá-la adequadamente.
- Avalie e melhore continuamente: Avalie regularmente o desempenho do seu sistema de moderação de conteúdo usando métricas como rastreamento de precisão e recall. Use esses dados para refinar iterativamente seus prompts de moderação, palavras-chave e critérios de avaliação.
Ao implementar um sistema robusto de moderação de conteúdo e seguir essas melhores práticas, você pode garantir que sua aplicação baseada no Claude permaneça segura, eficaz e amigável ao usuário.
Recursos adicionais
- Exemplos de filtros de inofensividade: Explore uma coleção de prompts projetados para filtrar vários tipos de conteúdo prejudicial.
- Cookbook de moderação de conteúdo: Veja um exemplo completamente implementado em código de como usar o Claude para moderação de conteúdo.
- Guia de engenharia de prompt: Aprenda mais sobre como criar prompts altamente eficazes para uma ampla variedade de tarefas.
- Treinamento de IA Constitucional do Claude: Entenda os princípios e o treinamento por trás do compromisso do Claude com a inofensividade.
- Mitigando jailbreaks e injeções de prompt: Descubra técnicas para prevenir ataques de injeção de prompt e proteger sua IA de tentativas de contornar suas restrições de segurança e diretrizes éticas.
- Reduzindo vazamentos de prompt: Aprenda como proteger sua IA de tentativas de revelar suas diretrizes e protocolos.
Ao aproveitar o poder do Claude para moderação de conteúdo e implementar as melhores práticas de pré e pós-processamento, você pode criar uma aplicação baseada no Claude mais segura, eficiente e eficaz. Como sempre, se você tiver alguma dúvida ou precisar de assistência adicional, não hesite em entrar em contato com nossa equipe de suporte ou consultar nossa comunidade no Discord.