• Messages
  • Agents gérés
  • Administration

Search...
⌘K
Cas d'usage
AperçuRoutage de ticketsAgent de support clientModération de contenuRésumé juridique
Ingénierie de prompts
AperçuBonnes pratiques de promptingPrompting pour Claude Fable 5Prompting pour Claude Opus 4.8Outils de prompting de la Console
Tester et évaluer
Définir le succès et créer des évaluationsUtilisation de l'outil d'évaluation dans la ConsoleRéduire la latence
Renforcer les garde-fous
Réduire les hallucinationsAméliorer la cohérence des sortiesAtténuer les jailbreaksRéduire les fuites de prompt
Référence
Glossaire

Log in
Modération de contenu
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

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

Partners

  • Claude on AWS
  • Google Cloud's Vertex AI

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
Bonnes pratiques/Cas d'usage

Modération de contenu

La modération de contenu est un aspect essentiel pour maintenir un environnement sûr, respectueux et productif dans les applications numériques. Ce guide explique comment Claude peut être utilisé pour modérer du contenu au sein de votre application numérique.

Consultez le cookbook de modération de contenu pour voir un exemple d'implémentation de modération de contenu utilisant Claude.


Ce guide se concentre sur la modération du contenu généré par les utilisateurs au sein de votre application. Si vous recherchez des conseils sur la modération des interactions avec Claude, consultez le guide des garde-fous.

Avant de développer avec Claude

Décider s'il faut utiliser Claude pour la modération de contenu

Voici quelques indicateurs clés suggérant que vous devriez utiliser un LLM comme Claude plutôt qu'une approche traditionnelle basée sur le ML ou sur des règles pour la modération de contenu :


Anthropic a entraîné tous les modèles Claude à être honnêtes, utiles et inoffensifs. Cela peut amener Claude à modérer du contenu jugé particulièrement dangereux (conformément à la Politique d'utilisation acceptable), quel que soit le prompt utilisé. Par exemple, un site web pour adultes qui souhaite permettre aux utilisateurs de publier du contenu sexuel explicite peut constater que Claude signale toujours le contenu explicite comme nécessitant une modération, même s'il est spécifié dans le prompt de ne pas modérer le contenu sexuel explicite. Nous vous recommandons de consulter la Politique d'utilisation acceptable avant de créer une solution de modération.

Générer des exemples de contenu à modérer

Avant de développer une solution de modération de contenu, créez d'abord des exemples de contenu qui devrait être signalé et de contenu qui ne devrait pas l'être. Assurez-vous d'inclure des cas limites et des scénarios difficiles qui peuvent être compliqués à gérer efficacement pour un système de modération de contenu. Ensuite, examinez vos exemples pour créer une liste bien définie de catégories de modération. Par exemple, les exemples générés par une plateforme de médias sociaux pourraient inclure les éléments suivants :

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!",
]

# Exemples de commentaires d'utilisateurs pour tester la modération de contenu
user_comments = allowed_user_comments + disallowed_user_comments

# Liste des catégories considérées comme dangereuses pour la modération de contenu
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",
]

Modérer efficacement ces exemples nécessite une compréhension nuancée du langage. Dans le commentaire This movie was great, I really enjoyed it. The main actor really killed it!, le système de modération de contenu doit reconnaître que « killed it » est une métaphore, et non une indication de violence réelle. À l'inverse, malgré l'absence de mentions explicites de violence, le commentaire Delete this post now or you better hide. I am coming after you and your family. devrait être signalé par le système de modération de contenu.

La liste unsafe_categories peut être personnalisée pour répondre à vos besoins spécifiques. Par exemple, si vous souhaitez empêcher les mineurs de créer du contenu sur votre site web, vous pourriez ajouter « Underage Posting » à la liste.


Comment modérer du contenu avec Claude

Sélectionner le bon modèle Claude

Lors de la sélection d'un modèle, il est important de prendre en compte la taille de vos données. Si les coûts sont une préoccupation, un modèle plus petit comme Claude Haiku 4.5 est un excellent choix en raison de sa rentabilité. Voici une estimation du coût de modération de texte pour une plateforme de médias sociaux qui reçoit un milliard de publications par mois :

  • Taille du contenu

    • Publications par mois : 1 milliard
    • Caractères par publication : 100
    • Total de caractères : 100 milliards
  • Tokens estimés

    • Tokens d'entrée : 28,6 milliards (en supposant 1 token pour 3,5 caractères)
    • Pourcentage de messages signalés : 3 %
    • Tokens de sortie par message signalé : 50
    • Total de tokens de sortie : 1,5 milliard
  • Coût estimé pour Claude Haiku 4.5


Les coûts réels peuvent différer de ces estimations. Ces estimations sont basées sur le prompt présenté dans la section sur le traitement par lots. Les tokens de sortie peuvent être encore réduits en supprimant le champ explanation de la réponse.

Créer un prompt solide

Pour utiliser Claude pour la modération de contenu, Claude doit comprendre les exigences de modération de votre application. Commençons par rédiger un prompt qui vous permet de définir vos besoins de modération :

Python
import json

# Initialiser le client Anthropic
client = anthropic.Anthropic()


def moderate_message(message, unsafe_categories):
    # Convertir la liste des catégories dangereuses en chaîne, avec chaque catégorie sur une nouvelle ligne
    unsafe_category_str = "\n".join(unsafe_categories)

    # Construire le prompt pour Claude, incluant le message et les catégories dangereuses
    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.]
    }}"""

    # Envoyer la requête à Claude pour la modération de contenu
    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}],
    )

    # Analyser la réponse JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extraire le statut de violation de l'évaluation
    contains_violation = assessment["violation"]

    # En cas de violation, récupérer les catégories et l'explication ; sinon, utiliser des valeurs vides par défaut
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# Traiter chaque commentaire et afficher les résultats
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.")

Dans cet exemple, la fonction moderate_message contient un prompt d'évaluation qui inclut les catégories de contenu dangereux et le message à évaluer. Le prompt demande à Claude d'évaluer si le message doit être modéré, en fonction des catégories dangereuses définies ci-dessus.

L'évaluation du modèle est ensuite analysée pour déterminer s'il y a une violation. S'il y a une violation, Claude renvoie également une liste des catégories enfreintes, ainsi qu'une explication de la raison pour laquelle le message est dangereux.

Évaluer votre prompt

La modération de contenu est un problème de classification. Ainsi, vous pouvez utiliser les mêmes techniques décrites dans le cookbook de classification pour déterminer la précision de votre système de modération de contenu.

Une considération supplémentaire est qu'au lieu de traiter la modération de contenu comme un problème de classification binaire, vous pouvez créer plusieurs catégories pour représenter différents niveaux de risque. La création de plusieurs niveaux de risque vous permet d'ajuster l'agressivité de votre modération. Par exemple, vous pourriez vouloir bloquer automatiquement les requêtes des utilisateurs jugées à haut risque, tandis que les utilisateurs ayant de nombreuses requêtes à risque moyen sont signalés pour une révision humaine.

Python
import json

# Initialiser le client Anthropic
client = anthropic.Anthropic()


def assess_risk_level(message, unsafe_categories):
    # Convertir la liste des catégories dangereuses en chaîne, avec chaque catégorie sur une nouvelle ligne
    unsafe_category_str = "\n".join(unsafe_categories)

    # Construire le prompt pour Claude, incluant le message, les catégories dangereuses et les définitions des niveaux de risque
    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>
}}"""

    # Envoyer la requête à Claude pour l'évaluation des risques
    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}],
    )

    # Analyser la réponse JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extraire le niveau de risque, les catégories enfreintes et l'explication de l'évaluation
    risk_level = assessment["risk_level"]
    violated_categories = assessment["categories"]
    explanation = assessment.get("explanation")

    return risk_level, violated_categories, explanation


# Traiter chaque commentaire et afficher les résultats
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}")

Ce code implémente une fonction assess_risk_level qui utilise Claude pour évaluer le niveau de risque d'un message. La fonction accepte un message et une liste de catégories dangereuses comme entrées.

Au sein de la fonction, un prompt est généré pour Claude, incluant le message à évaluer, les catégories dangereuses et des instructions spécifiques pour évaluer le niveau de risque. Le prompt demande à Claude de répondre avec un objet JSON qui inclut le niveau de risque, les catégories enfreintes et une explication facultative.

Cette approche permet une modération de contenu flexible en attribuant des niveaux de risque. Elle peut être intégrée de manière transparente dans un système plus large pour automatiser le filtrage de contenu ou signaler des commentaires pour une révision humaine en fonction de leur niveau de risque évalué. Par exemple, lors de l'exécution de ce code, le commentaire Delete this post now or you better hide. I am coming after you and your family. est identifié comme à haut risque en raison de sa menace dangereuse. À l'inverse, le commentaire Stay away from the 5G cellphones!! They are using 5G to control you. est classé comme à risque moyen.

Déployer votre prompt

Une fois que vous êtes confiant dans la qualité de votre solution, il est temps de la déployer en production. Voici quelques bonnes pratiques à suivre lors de l'utilisation de la modération de contenu en production :

  1. Fournir un retour clair aux utilisateurs : Lorsque l'entrée d'un utilisateur est bloquée ou qu'une réponse est signalée en raison de la modération de contenu, fournissez un retour informatif et constructif pour aider les utilisateurs à comprendre pourquoi leur message a été signalé et comment ils peuvent le reformuler de manière appropriée. Dans les exemples de code précédents, cela se fait via le champ explanation dans la réponse de Claude.

  2. Analyser le contenu modéré : Suivez les types de contenu signalés par votre système de modération pour identifier les tendances et les domaines potentiels d'amélioration.

  3. Évaluer et améliorer en continu : Évaluez régulièrement les performances de votre système de modération de contenu à l'aide de métriques telles que le suivi de la précision et du rappel. Utilisez ces données pour affiner de manière itérative vos prompts de modération, vos mots-clés et vos critères d'évaluation.


Améliorer les performances

Dans des scénarios complexes, il peut être utile d'envisager des stratégies supplémentaires pour améliorer les performances au-delà des techniques standard d'ingénierie de prompts. Voici quelques stratégies avancées :

Définir les sujets et fournir des exemples

En plus de lister les catégories dangereuses dans le prompt, des améliorations supplémentaires peuvent être apportées en fournissant des définitions et des expressions liées à chaque catégorie.

Python
import json

# Initialiser le client Anthropic
client = anthropic.Anthropic()

# Dictionnaire des catégories considérées comme dangereuses pour la modération de contenu, avec leurs définitions
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):
    # Formater la chaîne des catégories dangereuses, avec chaque catégorie et sa définition sur une nouvelle ligne
    unsafe_category_str = "\n".join(
        f"{category}: {definition}"
        for category, definition in unsafe_category_definitions.items()
    )

    # Construire le prompt pour Claude, incluant le message et les catégories dangereuses
    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.]
}}"""

    # Envoyer la requête à Claude pour la modération de contenu
    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}],
    )

    # Analyser la réponse JSON de Claude
    assessment = json.loads(response.content[0].text)

    # Extraire le statut de violation de l'évaluation
    contains_violation = assessment["violation"]

    # En cas de violation, récupérer les catégories et l'explication ; sinon, utiliser des valeurs vides par défaut
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# Traiter chaque commentaire et afficher les résultats
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 fonction moderate_message_with_definitions étend la fonction moderate_message précédente en permettant à chaque catégorie dangereuse d'être associée à une définition détaillée. Cela se fait dans le code en remplaçant la liste unsafe_categories de la fonction d'origine par un dictionnaire unsafe_category_definitions. Ce dictionnaire associe chaque catégorie dangereuse à sa définition correspondante. Les noms des catégories et leurs définitions sont tous deux inclus dans le prompt.

Notamment, la définition de la catégorie Specialized Advice spécifie désormais les types de conseils financiers qui devraient être interdits. Par conséquent, le commentaire It is a great time to invest in gold!, qui passait auparavant l'évaluation moderate_message, déclenche désormais une violation.

Envisager le traitement par lots

Pour réduire les coûts dans les situations où la modération en temps réel n'est pas nécessaire, envisagez de modérer les messages par lots. Incluez plusieurs messages dans le contexte du prompt et demandez à Claude d'évaluer quels messages doivent être modérés.

Python
import json

# Initialiser le client Anthropic
client = anthropic.Anthropic()


def batch_moderate_messages(messages, unsafe_categories):
    # Convertir la liste des catégories dangereuses en chaîne, chaque catégorie sur une nouvelle ligne
    unsafe_category_str = "\n".join(unsafe_categories)

    # Formater la chaîne de messages, chacun encadré de balises de type XML avec un ID
    messages_str = "\n".join(
        [f"<message id={idx}>{msg}</message>" for idx, msg in enumerate(messages)]
    )

    # Construire le prompt pour Claude, incluant les messages et les catégories dangereuses
    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."""

    # Envoyer la requête à Claude pour la modération de contenu
    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}],
    )

    # Analyser la réponse JSON de Claude
    assessment = json.loads(response.content[0].text)
    return assessment


# Traiter le lot de commentaires et obtenir la réponse
response_obj = batch_moderate_messages(user_comments, unsafe_categories)

# Afficher les résultats pour chaque violation détectée
for violation in response_obj["violations"]:
    print(f"""Comment: {user_comments[violation["id"]]}
Violated Categories: {", ".join(violation["categories"])}
Explanation: {violation["explanation"]}
""")

Dans cet exemple, la fonction batch_moderate_messages gère la modération d'un lot entier de messages avec un seul appel à l'API Claude. À l'intérieur de la fonction, un prompt est créé qui inclut la liste des messages à évaluer et les catégories de contenu dangereux. Le prompt demande à Claude de renvoyer un objet JSON listant tous les messages qui contiennent des violations. Chaque message dans la réponse est identifié par son id, qui correspond à la position du message dans la liste d'entrée. Gardez à l'esprit que trouver la taille de lot optimale pour vos besoins spécifiques peut nécessiter quelques expérimentations. Bien que des tailles de lot plus grandes puissent réduire les coûts, elles peuvent également entraîner une légère baisse de qualité. De plus, vous devrez peut-être augmenter le paramètre max_tokens dans l'appel à l'API Claude pour prendre en charge des réponses plus longues. Pour plus de détails sur le nombre maximal de tokens que votre modèle choisi peut produire, consultez le tableau de comparaison des modèles.


Cookbook de modération de contenu


Consultez un exemple de code entièrement implémenté montrant comment utiliser Claude pour la modération de contenu.


Guide des garde-fous

Explorez le guide des garde-fous pour découvrir des techniques de modération des interactions avec Claude.

Was this page helpful?

  • Avant de développer avec Claude
  • Décider s'il faut utiliser Claude pour la modération de contenu
  • Générer des exemples de contenu à modérer
  • Comment modérer du contenu avec Claude
  • Sélectionner le bon modèle Claude
  • Créer un prompt solide
  • Évaluer votre prompt
  • Déployer votre prompt
  • Améliorer les performances
  • Définir les sujets et fournir des exemples
  • Envisager le traitement par lots
  • Coût des tokens d'entrée : 28 600 MTok * 1,00 $/MTok = 28 600 $ USD
  • Coût des tokens de sortie : 1 500 MTok * 5,00 $/MTok = 7 500 $ USD
  • Coût mensuel : 28 600 $ + 7 500 $ = 36 100 $ USD
  • Coût estimé pour Claude Opus 4.8

    • Coût des tokens d'entrée : 28 600 MTok * 5,00 $/MTok = 143 000 $ USD
    • Coût des tokens de sortie : 1 500 MTok * 25,00 $/MTok = 37 500 $ USD
    • Coût mensuel : 143 000 $ + 37 500 $ = 180 500 $ USD