Claude Platform Docs
  • Mensajes
  • Agentes gestionados
  • Administración

Search...
⌘K
Casos de uso
Descripción generalEnrutamiento de ticketsAgente de atención al clienteModeración de contenidoResumen legal
Ingeniería de prompts
Descripción generalMejores prácticas de promptsPrompts para Claude Fable 5Prompts para Claude Opus 4.8Prompts para Claude Sonnet 5Herramientas de prompts de la Consola
Probar y evaluar
Definir el éxito y crear evaluacionesUso de la herramienta de evaluación en la ConsolaReducir la latencia
Reforzar las barreras de protección
Reducir alucinacionesAumentar la consistencia de salidaMitigar jailbreaksReducir la filtración de prompts
Referencia
Glosario

Log in
Moderación de contenido
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Mejores prácticas/Casos de uso

Moderación de contenido

La moderación de contenido es un aspecto crítico para mantener un entorno seguro, respetuoso y productivo en las aplicaciones digitales. Esta guía explica cómo se puede usar Claude para moderar contenido dentro de tu aplicación digital.

Visita el cookbook de moderación de contenido para ver un ejemplo de implementación de moderación de contenido usando Claude.


Esta guía se centra en moderar contenido generado por usuarios dentro de tu aplicación. Si buscas orientación sobre cómo moderar las interacciones con Claude, consulta la guía de guardrails.

Antes de construir con Claude

Decide si usar Claude para la moderación de contenido

Estos son algunos indicadores clave de que deberías usar un LLM como Claude en lugar de un enfoque tradicional de ML o basado en reglas para la moderación de contenido:


Anthropic ha entrenado todos los modelos de Claude para que sean honestos, útiles e inofensivos. Esto puede resultar en que Claude modere contenido considerado particularmente peligroso (en línea con la Política de Uso Aceptable), independientemente del prompt utilizado. Por ejemplo, un sitio web para adultos que quiera permitir a los usuarios publicar contenido sexual explícito puede encontrar que Claude aún marca el contenido explícito como que requiere moderación, incluso si especifican en su prompt que no se modere el contenido sexual explícito. Considera revisar la AUP antes de construir una solución de moderación.

Genera ejemplos de contenido para moderar

Antes de desarrollar una solución de moderación de contenido, primero crea ejemplos de contenido que debería marcarse y contenido que no debería marcarse. Asegúrate de incluir casos límite y escenarios desafiantes que puedan ser difíciles de manejar eficazmente para un sistema de moderación de contenido. Después, revisa tus ejemplos para crear una lista bien definida de categorías de moderación. Por ejemplo, los ejemplos generados por una plataforma de redes sociales podrían incluir lo siguiente:

allowed_user_comments = [
    "This movie was great, I really enjoyed it. The main actor really killed it!",
    "I hate Mondays.",
    "It is a great time to invest in gold!",
]

disallowed_user_comments = [
    "Delete this post now or you better hide. I am coming after you and your family.",
    "Stay away from the 5G cellphones!! They are using 5G to control you.",
    "Congratulations! You have won a $1,000 gift card. Click here to claim your prize!",
]

# Comentarios de usuario de ejemplo para probar la moderación de contenido
user_comments = allowed_user_comments + disallowed_user_comments

# Lista de categorías consideradas no seguras para la moderación de contenido
unsafe_categories = [
    "Child Exploitation",
    "Conspiracy Theories",
    "Hate",
    "Indiscriminate Weapons",
    "Intellectual Property",
    "Non-Violent Crimes",
    "Privacy",
    "Self-Harm",
    "Sex Crimes",
    "Sexual Content",
    "Specialized Advice",
    "Violent Crimes",
]

Moderar eficazmente estos ejemplos requiere una comprensión matizada del lenguaje. En el comentario This movie was great, I really enjoyed it. The main actor really killed it!, el sistema de moderación de contenido debe reconocer que "killed it" es una metáfora, no una indicación de violencia real. Por el contrario, a pesar de la falta de menciones explícitas de violencia, el comentario Delete this post now or you better hide. I am coming after you and your family. debería ser marcado por el sistema de moderación de contenido.

La lista unsafe_categories se puede personalizar para adaptarse a tus necesidades específicas. Por ejemplo, si deseas evitar que los menores creen contenido en tu sitio web, podrías agregar "Underage Posting" a la lista.


Cómo moderar contenido usando Claude

Selecciona el modelo de Claude adecuado

Al seleccionar un modelo, es importante considerar el tamaño de tus datos. Si los costos son una preocupación, un modelo más pequeño como Claude Haiku 4.5 es una excelente opción debido a su rentabilidad. A continuación se muestra una estimación del costo de moderar texto para una plataforma de redes sociales que recibe mil millones de publicaciones al mes:

  • Tamaño del contenido

    • Publicaciones por mes: 1.000 millones
    • Caracteres por publicación: 100
    • Total de caracteres: 100.000 millones
  • Tokens estimados

    • Tokens de entrada: 28.600 millones (asumiendo 1 token por cada 3,5 caracteres)
    • Porcentaje de mensajes marcados: 3%
    • Tokens de salida por mensaje marcado: 50
    • Total de tokens de salida: 1.500 millones
  • Costo estimado de Claude Haiku 4.5

    • Costo de tokens de entrada: 28.600 MTok * $1,00/MTok = $28.600 USD
    • Costo de tokens de salida: 1.500 MTok * $5,00/MTok = $7.500 USD
    • Costo mensual: $28.600 + $7.500 = $36.100 USD
  • Costo estimado de Claude Opus 4.8

    • Costo de tokens de entrada: 28.600 MTok * $5,00/MTok = $143.000 USD
    • Costo de tokens de salida: 1.500 MTok * $25,00/MTok = $37.500 USD
    • Costo mensual: $143.000 + $37.500 = $180.500 USD

Los costos reales pueden diferir de estas estimaciones. Estas estimaciones se basan en el prompt destacado en la sección sobre procesamiento por lotes. Los tokens de salida se pueden reducir aún más eliminando el campo explanation de la respuesta.

Construye un prompt sólido

Para usar Claude en la moderación de contenido, Claude debe comprender los requisitos de moderación de tu aplicación. Comencemos escribiendo un prompt que te permita definir tus necesidades de moderación:

Python
import json

# Inicializa el cliente de Anthropic
client = anthropic.Anthropic()


def moderate_message(message, unsafe_categories):
    # Convierte la lista de categorías no seguras en una cadena, con cada categoría en una nueva línea
    unsafe_category_str = "\n".join(unsafe_categories)

    # Construye el prompt para Claude, incluyendo el mensaje y las categorías no seguras
    assessment_prompt = f"""
    Determine whether the following message warrants moderation,
    based on the unsafe categories outlined below.

    Message:
    <message>{message}</message>

    Unsafe Categories:
    <categories>
    {unsafe_category_str}
    </categories>

    Respond with ONLY a JSON object, using the format below:
    {{
    "violation": <Boolean field denoting whether the message should be moderated>,
    "categories": [Comma-separated list of violated categories],
    "explanation": [Optional. Only include if there is a violation.]
    }}"""

    # Envía la solicitud a Claude para la moderación de contenido
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",  # Using the Haiku model for lower costs
        max_tokens=200,
        temperature=0,  # Use 0 temperature for increased consistency
        messages=[{"role": "user", "content": assessment_prompt}],
    )

    # Analiza la respuesta JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extrae el estado de infracción de la evaluación
    contains_violation = assessment["violation"]

    # Si hay una infracción, obtén las categorías y la explicación; de lo contrario, usa valores predeterminados vacíos
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# Procesa cada comentario e imprime los resultados
for comment in user_comments:
    print(f"\nComment: {comment}")
    violation, violated_categories, explanation = moderate_message(
        comment, unsafe_categories
    )

    if violation:
        print(f"Violated Categories: {', '.join(violated_categories)}")
        print(f"Explanation: {explanation}")
    else:
        print("No issues detected.")

En este ejemplo, la función moderate_message contiene un prompt de evaluación que incluye las categorías de contenido inseguro y el mensaje a evaluar. El prompt le pide a Claude que evalúe si el mensaje debe moderarse, según las categorías inseguras definidas anteriormente.

Luego, la evaluación del modelo se analiza para determinar si hay una infracción. Si hay una infracción, Claude también devuelve una lista de categorías infringidas, así como una explicación de por qué el mensaje es inseguro.

Evalúa tu prompt

La moderación de contenido es un problema de clasificación. Por lo tanto, puedes usar las mismas técnicas descritas en el cookbook de clasificación para determinar la precisión de tu sistema de moderación de contenido.

Una consideración adicional es que, en lugar de tratar la moderación de contenido como un problema de clasificación binaria, puedes crear múltiples categorías para representar varios niveles de riesgo. Crear múltiples niveles de riesgo te permite ajustar la agresividad de tu moderación. Por ejemplo, es posible que desees bloquear automáticamente las consultas de usuarios que se consideren de alto riesgo, mientras que los usuarios con muchas consultas de riesgo medio se marcan para revisión humana.

Python
import json

# Inicializa el cliente de Anthropic
client = anthropic.Anthropic()


def assess_risk_level(message, unsafe_categories):
    # Convierte la lista de categorías no seguras en una cadena, con cada categoría en una nueva línea
    unsafe_category_str = "\n".join(unsafe_categories)

    # Construye el prompt para Claude, incluyendo el mensaje, las categorías no seguras y las definiciones de niveles de riesgo
    assessment_prompt = f"""
    Assess the risk level of the following message,
    based on the unsafe categories listed below.

Message:
<message>{message}</message>

Unsafe Categories:
<categories>
{unsafe_category_str}
</categories>

Assign a risk level based on your confidence that the user's message should be moderated
based on the defined unsafe categories:

0 - No risk
1 - Low risk
2 - Medium risk
3 - High risk

Respond with ONLY a JSON object, using the format below:
{{
  "risk_level": <Numerical field denoting the risk level>,
  "categories": [Comma-separated list of violated categories],
  "explanation": <Optional. Only include if risk level is greater than 0>
}}"""

    # Envía la solicitud a Claude para la evaluación de riesgo
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",  # Using the Haiku model for lower costs
        max_tokens=200,
        temperature=0,  # Use 0 temperature for increased consistency
        messages=[{"role": "user", "content": assessment_prompt}],
    )

    # Analiza la respuesta JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extrae el nivel de riesgo, las categorías infringidas y la explicación de la evaluación
    risk_level = assessment["risk_level"]
    violated_categories = assessment["categories"]
    explanation = assessment.get("explanation")

    return risk_level, violated_categories, explanation


# Procesa cada comentario e imprime los resultados
for comment in user_comments:
    print(f"\nComment: {comment}")
    risk_level, violated_categories, explanation = assess_risk_level(
        comment, unsafe_categories
    )

    print(f"Risk Level: {risk_level}")
    if violated_categories:
        print(f"Violated Categories: {', '.join(violated_categories)}")
    if explanation:
        print(f"Explanation: {explanation}")

Este código implementa una función assess_risk_level que usa Claude para evaluar el nivel de riesgo de un mensaje. La función acepta un mensaje y una lista de categorías inseguras como entradas.

Dentro de la función, se genera un prompt para Claude, que incluye el mensaje a evaluar, las categorías inseguras e instrucciones específicas para evaluar el nivel de riesgo. El prompt le indica a Claude que responda con un objeto JSON que incluya el nivel de riesgo, las categorías infringidas y una explicación opcional.

Este enfoque permite una moderación de contenido flexible mediante la asignación de niveles de riesgo. Se puede integrar sin problemas en un sistema más grande para automatizar el filtrado de contenido o marcar comentarios para revisión humana según su nivel de riesgo evaluado. Por ejemplo, al ejecutar este código, el comentario Delete this post now or you better hide. I am coming after you and your family. se identifica como de alto riesgo debido a su amenaza peligrosa. Por el contrario, el comentario Stay away from the 5G cellphones!! They are using 5G to control you. se categoriza como de riesgo medio.

Despliega tu prompt

Una vez que tengas confianza en la calidad de tu solución, es hora de desplegarla en producción. Estas son algunas mejores prácticas a seguir al usar la moderación de contenido en producción:

  1. Proporciona retroalimentación clara a los usuarios: Cuando se bloquea la entrada del usuario o se marca una respuesta debido a la moderación de contenido, proporciona retroalimentación informativa y constructiva para ayudar a los usuarios a comprender por qué se marcó su mensaje y cómo pueden reformularlo adecuadamente. En los ejemplos de código anteriores, esto se hace a través del campo explanation en la respuesta de Claude.

  2. Analiza el contenido moderado: Lleva un registro de los tipos de contenido que marca tu sistema de moderación para identificar tendencias y posibles áreas de mejora.

  3. Evalúa y mejora continuamente: Evalúa regularmente el rendimiento de tu sistema de moderación de contenido utilizando métricas como el seguimiento de precisión y recall. Usa estos datos para refinar iterativamente tus prompts de moderación, palabras clave y criterios de evaluación.


Mejora el rendimiento

En escenarios complejos, puede ser útil considerar estrategias adicionales para mejorar el rendimiento más allá de las técnicas estándar de ingeniería de prompts. Estas son algunas estrategias avanzadas:

Define temas y proporciona ejemplos

Además de enumerar las categorías inseguras en el prompt, se pueden realizar mejoras adicionales proporcionando definiciones y frases relacionadas con cada categoría.

Python
import json

# Inicializa el cliente de Anthropic
client = anthropic.Anthropic()

# Diccionario de categorías consideradas no seguras para la moderación de contenido, con sus definiciones
unsafe_category_definitions = {
    "Child Exploitation": "Content that depicts child nudity or that enables, encourages, excuses, or depicts the sexual abuse of children.",
    "Conspiracy Theories": """Content that promotes or endorses unfounded, false, or misleading theories about events, situations, or individuals,
        which can incite harm or undermine public trust in institutions or facts.""",
    "Hate": """Content that is hateful toward people on the basis of their protected characteristics
        (race, color, ethnicity, national origin, disability, religious affiliation, caste, sexual orientation, sex, gender identity and serious disease),
        or content that perpetuates negative stereotypes.""",
    "Indiscriminate Weapons": "Content that enables the creation of weapons of mass destruction.",
    "Intellectual Property": "Content that violates the intellectual property rights of third parties.",
    "Non-Violent Crimes": "Content that enables, encourages, or excuses the commission of non-violent crimes.",
    "Privacy": "Content that contains sensitive, personal information about private individuals.",
    "Self-Harm": "Content that enables, encourages, or excuses acts of intentional self-harm.",
    "Sex Crimes": "Content that enables, encourages, or excuses the commission of sex crimes.",
    "Sexual Content": "Content that contains erotic descriptions or explicit depictions of sex acts.",
    "Specialized Advice": """Content that contains financial, medical, or legal advice.
        Financial advice includes guidance on investments, stocks, bonds, or any financial planning.""",
    "Violent Crimes": "Content that enables, encourages, or excuses the commission of violent crimes.",
}


def moderate_message_with_definitions(message, unsafe_category_definitions):
    # Formatea la cadena de categorías no seguras, con cada categoría y su definición en una nueva línea
    unsafe_category_str = "\n".join(
        f"{category}: {definition}"
        for category, definition in unsafe_category_definitions.items()
    )

    # Construye el prompt para Claude, incluyendo el mensaje y las categorías no seguras
    assessment_prompt = f"""Determine whether the following message warrants moderation, based on the unsafe categories outlined below.

Message:
<message>{message}</message>

Unsafe Categories and Their Definitions:
<categories>
{unsafe_category_str}
</categories>

It's important that you remember all unsafe categories and their definitions.

Respond with ONLY a JSON object, using the format below:
{{
  "violation": <Boolean field denoting whether the message should be moderated>,
  "categories": [Comma-separated list of violated categories],
  "explanation": [Optional. Only include if there is a violation.]
}}"""

    # Envía la solicitud a Claude para la moderación de contenido
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",  # Using the Haiku model for lower costs
        max_tokens=200,
        temperature=0,  # Use 0 temperature for increased consistency
        messages=[{"role": "user", "content": assessment_prompt}],
    )

    # Analiza la respuesta JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extrae el estado de infracción de la evaluación
    contains_violation = assessment["violation"]

    # Si hay una infracción, obtén las categorías y la explicación; de lo contrario, usa valores predeterminados vacíos
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# Procesa cada comentario e imprime los resultados
for comment in user_comments:
    print(f"\nComment: {comment}")
    violation, violated_categories, explanation = moderate_message_with_definitions(
        comment, unsafe_category_definitions
    )

    if violation:
        print(f"Violated Categories: {', '.join(violated_categories)}")
        print(f"Explanation: {explanation}")
    else:
        print("No issues detected.")

La función moderate_message_with_definitions amplía la función moderate_message anterior al permitir que cada categoría insegura se empareje con una definición detallada. Esto ocurre en el código al reemplazar la lista unsafe_categories de la función original con un diccionario unsafe_category_definitions. Este diccionario asigna cada categoría insegura a su definición correspondiente. Tanto los nombres de las categorías como sus definiciones se incluyen en el prompt.

Cabe destacar que la definición de la categoría Specialized Advice ahora especifica los tipos de asesoramiento financiero que deberían prohibirse. Como resultado, el comentario It is a great time to invest in gold!, que anteriormente pasaba la evaluación de moderate_message, ahora activa una infracción.

Considera el procesamiento por lotes

Para reducir costos en situaciones donde la moderación en tiempo real no es necesaria, considera moderar mensajes en lotes. Incluye múltiples mensajes dentro del contexto del prompt y pídele a Claude que evalúe qué mensajes deben moderarse.

Python
import json

# Inicializa el cliente de Anthropic
client = anthropic.Anthropic()


def batch_moderate_messages(messages, unsafe_categories):
    # Convierte la lista de categorías no seguras en una cadena, con cada categoría en una nueva línea
    unsafe_category_str = "\n".join(unsafe_categories)

    # Formatea la cadena de mensajes, envolviendo cada mensaje en etiquetas tipo XML y asignándole un ID
    messages_str = "\n".join(
        [f"<message id={idx}>{msg}</message>" for idx, msg in enumerate(messages)]
    )

    # Construye el prompt para Claude, incluyendo los mensajes y las categorías no seguras
    assessment_prompt = f"""Determine the messages to moderate, based on the unsafe categories outlined below.

Messages:
<messages>
{messages_str}
</messages>

Unsafe Categories:
<categories>
{unsafe_category_str}
</categories>

Respond with ONLY a JSON object, using the format below:
{{
  "violations": [
    {{
      "id": <message id>,
      "categories": [list of violated categories],
      "explanation": <Explanation of why there's a violation>
    }},
    ...
  ]
}}

Important Notes:
- Remember to analyze every message for a violation.
- Select any number of violations that reasonably apply."""

    # Envía la solicitud a Claude para la moderación de contenido
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",  # Using the Haiku model for lower costs
        max_tokens=2048,  # Increased max token count to handle batches
        temperature=0,  # Use 0 temperature for increased consistency
        messages=[{"role": "user", "content": assessment_prompt}],
    )

    # Analiza la respuesta JSON de Claude
    assessment = json.loads(response.content[0].text)
    return assessment


# Procesa el lote de comentarios y obtén la respuesta
response_obj = batch_moderate_messages(user_comments, unsafe_categories)

# Imprime los resultados de cada infracción detectada
for violation in response_obj["violations"]:
    print(f"""Comment: {user_comments[violation["id"]]}
Violated Categories: {", ".join(violation["categories"])}
Explanation: {violation["explanation"]}
""")

En este ejemplo, la función batch_moderate_messages maneja la moderación de un lote completo de mensajes con una sola llamada a la API de Claude. Dentro de la función, se crea un prompt que incluye la lista de mensajes a evaluar y las categorías de contenido inseguro. El prompt le indica a Claude que devuelva un objeto JSON que enumere todos los mensajes que contienen infracciones. Cada mensaje en la respuesta se identifica por su id, que corresponde a la posición del mensaje en la lista de entrada. Ten en cuenta que encontrar el tamaño de lote óptimo para tus necesidades específicas puede requerir algo de experimentación. Si bien los tamaños de lote más grandes pueden reducir los costos, también podrían provocar una ligera disminución en la calidad. Además, es posible que debas aumentar el parámetro max_tokens en la llamada a la API de Claude para acomodar respuestas más largas. Para obtener detalles sobre el número máximo de tokens que tu modelo elegido puede generar, consulta la tabla de comparación de modelos.


Cookbook de moderación de contenido


Consulta un ejemplo completamente implementado basado en código de cómo usar Claude para la moderación de contenido.


Guía de guardrails

Explora la guía de guardrails para conocer técnicas de moderación de interacciones con Claude.

Was this page helpful?

  • Antes de construir con Claude
  • Decide si usar Claude para la moderación de contenido
  • Genera ejemplos de contenido para moderar
  • Cómo moderar contenido usando Claude
  • Selecciona el modelo de Claude adecuado
  • Construye un prompt sólido
  • Evalúa tu prompt
  • Despliega tu prompt
  • Mejora el rendimiento
  • Define temas y proporciona ejemplos
  • Considera el procesamiento por lotes