Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note sulla versione
    Search...
    ⌘K
    Risorse
    PanoramicaGlossarioPrompt di sistema
    PanoramicaInstradamento dei ticketAgente di supporto clientiModerazione dei contenutiRiassunto legale
    Console
    Log in
    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

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • 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
    • Catalog
    • 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
    Casi d'uso

    Moderazione dei contenuti

    La moderazione dei contenuti è un aspetto critico del mantenimento di un ambiente sicuro, rispettoso e produttivo nelle applicazioni digitali. In questa guida, discuteremo come Claude può essere utilizzato per moderare i contenuti all'interno della tua applicazione digitale.

    Visita il nostro ricettario sulla moderazione dei contenuti per vedere un'implementazione di esempio della moderazione dei contenuti utilizzando Claude.

    Questa guida è focalizzata sulla moderazione dei contenuti generati dagli utenti all'interno della tua applicazione. Se stai cercando indicazioni sulla moderazione delle interazioni con Claude, consulta la nostra guida ai guardrail.

    Prima di iniziare a costruire con Claude

    Decidi se utilizzare Claude per la moderazione dei contenuti

    Ecco alcuni indicatori chiave che dovresti utilizzare un LLM come Claude invece di un approccio tradizionale basato su ML o regole per la moderazione dei contenuti:

    Anthropic ha addestrato tutti i modelli Claude per essere onesti, utili e innocui. Questo potrebbe risultare in Claude che modera contenuti ritenuti particolarmente pericolosi (in linea con la nostra Politica di Uso Accettabile), indipendentemente dal prompt utilizzato. Ad esempio, un sito web per adulti che vuole consentire agli utenti di pubblicare contenuti sessuali espliciti potrebbe scoprire che Claude continua a contrassegnare i contenuti espliciti come richiedenti moderazione, anche se specificano nel loro prompt di non moderare i contenuti sessuali espliciti. Ti consigliamo di rivedere la nostra AUP prima di costruire una soluzione di moderazione.

    Genera esempi di contenuti da moderare

    Prima di sviluppare una soluzione di moderazione dei contenuti, crea prima esempi di contenuti che dovrebbero essere contrassegnati e contenuti che non dovrebbero essere contrassegnati. Assicurati di includere casi limite e scenari impegnativi che potrebbero essere difficili per un sistema di moderazione dei contenuti da gestire efficacemente. Successivamente, rivedi i tuoi esempi per creare un elenco ben definito di categorie di moderazione. Ad esempio, gli esempi generati da una piattaforma di social media potrebbero includere quanto segue:

    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!'
    ]
    
    # Sample user comments to test the content moderation
    user_comments = allowed_user_comments + disallowed_user_comments
    
    # List of categories considered unsafe for content moderation
    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'
    ]

    La moderazione efficace di questi esempi richiede una comprensione sfumata del linguaggio. Nel commento, This movie was great, I really enjoyed it. The main actor really killed it!, il sistema di moderazione dei contenuti deve riconoscere che "killed it" è una metafora, non un'indicazione di violenza effettiva. Al contrario, nonostante la mancanza di menzioni esplicite di violenza, il commento Delete this post now or you better hide. I am coming after you and your family. dovrebbe essere contrassegnato dal sistema di moderazione dei contenuti.

    L'elenco unsafe_categories può essere personalizzato per adattarsi alle tue esigenze specifiche. Ad esempio, se desideri impedire ai minori di creare contenuti sul tuo sito web, potresti aggiungere "Underage Posting" all'elenco.


    Come moderare i contenuti utilizzando Claude

    Seleziona il modello Claude giusto

    Quando selezioni un modello, è importante considerare la dimensione dei tuoi dati. Se i costi sono una preoccupazione, un modello più piccolo come Claude Haiku 3 è un'ottima scelta grazie alla sua convenienza. Di seguito è riportata una stima del costo per moderare il testo per una piattaforma di social media che riceve un miliardo di post al mese:

    • Dimensione del contenuto

      • Post al mese: 1 miliardo
      • Caratteri per post: 100
      • Caratteri totali: 100 miliardi
    • Token stimati

      • Token di input: 28,6 miliardi (assumendo 1 token per 3,5 caratteri)
      • Percentuale di messaggi contrassegnati: 3%
      • Token di output per messaggio contrassegnato: 50
      • Token di output totali: 1,5 miliardi
    • Costo stimato di Claude Haiku 3

      • Costo token di input: 2.860 MTok * $0,25/MTok = $715
      • Costo token di output: 1.500 MTok * $1,25/MTok = $1.875
      • Costo mensile: $715 + $1.875 = $2.590
    • Costo stimato di Claude Opus 4.6

      • Costo token di input: 2.860 MTok * $5,00/MTok = $14.300
      • Costo token di output: 1.500 MTok * $25,00/MTok = $37.500
      • Costo mensile: $14.300 + $37.500 = $51.800
    I costi effettivi potrebbero differire da queste stime. Queste stime si basano sul prompt evidenziato nella sezione su elaborazione in batch. I token di output possono essere ridotti ulteriormente rimuovendo il campo explanation dalla risposta.

    Costruisci un prompt forte

    Per utilizzare Claude per la moderazione dei contenuti, Claude deve comprendere i requisiti di moderazione della tua applicazione. Iniziamo scrivendo un prompt che ti permetta di definire le tue esigenze di moderazione:

    import anthropic
    import json
    
    # Initialize the Anthropic client
    client = anthropic.Anthropic()
    
    def moderate_message(message, unsafe_categories):
        # Convert the list of unsafe categories into a string, with each category on a new line
        unsafe_category_str = '\n'.join(unsafe_categories)
        
        # Construct the prompt for Claude, including the message and unsafe categories
        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.]
        }}"""
    
        # Send the request to Claude for content moderation
        response = client.messages.create(
            model="claude-3-haiku-20240307",  # Using the Haiku model for lower costs
            max_tokens=200,
            temperature=0,   # Use 0 temperature for increased consistency
            messages=[
                {"role": "user", "content": assessment_prompt}
            ]
        )
        
        # Parse the JSON response from Claude
        assessment = json.loads(response.content[0].text)
        
        # Extract the violation status from the assessment
        contains_violation = assessment['violation']
        
        # If there's a violation, get the categories and explanation; otherwise, use empty defaults
        violated_categories = assessment.get('categories', []) if contains_violation else []
        explanation = assessment.get('explanation') if contains_violation else None
        
        return contains_violation, violated_categories, explanation
    
    # Process each comment and print the results
    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.")

    In questo esempio, la funzione moderate_message contiene un prompt di valutazione che include le categorie di contenuti non sicuri e il messaggio che desideriamo valutare. Il prompt chiede a Claude di valutare se il messaggio dovrebbe essere moderato, in base alle categorie non sicure che abbiamo definito.

    La valutazione del modello viene quindi analizzata per determinare se c'è una violazione. Se c'è una violazione, Claude restituisce anche un elenco di categorie violate, nonché una spiegazione del motivo per cui il messaggio non è sicuro.

    Valuta il tuo prompt

    La moderazione dei contenuti è un problema di classificazione. Pertanto, puoi utilizzare le stesse tecniche descritte nel nostro ricettario di classificazione per determinare l'accuratezza del tuo sistema di moderazione dei contenuti.

    Una considerazione aggiuntiva è che invece di trattare la moderazione dei contenuti come un problema di classificazione binaria, potresti invece creare più categorie per rappresentare vari livelli di rischio. La creazione di più livelli di rischio ti consente di regolare l'aggressività della tua moderazione. Ad esempio, potresti voler bloccare automaticamente le query degli utenti ritenute ad alto rischio, mentre gli utenti con molte query a rischio medio vengono contrassegnati per la revisione umana.

    import anthropic
    import json
    
    # Initialize the Anthropic client
    client = anthropic.Anthropic()
    
    def assess_risk_level(message, unsafe_categories):
        # Convert the list of unsafe categories into a string, with each category on a new line
        unsafe_category_str = '\n'.join(unsafe_categories)
        
        # Construct the prompt for Claude, including the message, unsafe categories, and risk level definitions
        assessment_prompt = f"""
        Assess the risk level of the following message warrants moderation, 
        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>
    }}"""
    
        # Send the request to Claude for risk assessment
        response = client.messages.create(
            model="claude-3-haiku-20240307",  # Using the Haiku model for lower costs
            max_tokens=200,
            temperature=0,   # Use 0 temperature for increased consistency
            messages=[
                {"role": "user", "content": assessment_prompt}
            ]
        )
        
        # Parse the JSON response from Claude
        assessment = json.loads(response.content[0].text)
        
        # Extract the risk level, violated categories, and explanation from the assessment
        risk_level = assessment["risk_level"]
        violated_categories = assessment["categories"]
        explanation = assessment.get("explanation")
        
        return risk_level, violated_categories, explanation
    
    # Process each comment and print the results
    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}")

    Questo codice implementa una funzione assess_risk_level che utilizza Claude per valutare il livello di rischio di un messaggio. La funzione accetta un messaggio e un elenco di categorie non sicure come input.

    All'interno della funzione, viene generato un prompt per Claude, incluso il messaggio da valutare, le categorie non sicure e istruzioni specifiche per valutare il livello di rischio. Il prompt istruisce Claude a rispondere con un oggetto JSON che include il livello di rischio, le categorie violate e una spiegazione facoltativa.

    Questo approccio consente una moderazione flessibile dei contenuti assegnando livelli di rischio. Può essere facilmente integrato in un sistema più ampio per automatizzare il filtraggio dei contenuti o contrassegnare i commenti per la revisione umana in base al loro livello di rischio valutato. Ad esempio, quando si esegue questo codice, il commento Delete this post now or you better hide. I am coming after you and your family. viene identificato come ad alto rischio a causa della sua minaccia pericolosa. Al contrario, il commento Stay away from the 5G cellphones!! They are using 5G to control you. è categorizzato come rischio medio.

    Distribuisci il tuo prompt

    Una volta che sei sicuro della qualità della tua soluzione, è il momento di distribuirla in produzione. Ecco alcune best practice da seguire quando si utilizza la moderazione dei contenuti in produzione:

    1. Fornisci feedback chiaro agli utenti: Quando l'input dell'utente viene bloccato o una risposta viene contrassegnata a causa della moderazione dei contenuti, fornisci feedback informativo e costruttivo per aiutare gli utenti a capire perché il loro messaggio è stato contrassegnato e come possono riformularlo in modo appropriato. Negli esempi di codice sopra, questo viene fatto attraverso il tag explanation nella risposta di Claude.

    2. Analizza i contenuti moderati: Tieni traccia dei tipi di contenuti contrassegnati dal tuo sistema di moderazione per identificare tendenze e potenziali aree di miglioramento.

    3. Valuta e migliora continuamente: Valuta regolarmente le prestazioni del tuo sistema di moderazione dei contenuti utilizzando metriche come il tracciamento della precisione e del richiamo. Utilizza questi dati per perfezionare iterativamente i tuoi prompt di moderazione, parole chiave e criteri di valutazione.


    Migliora le prestazioni

    In scenari complessi, potrebbe essere utile considerare strategie aggiuntive per migliorare le prestazioni oltre le tecniche standard di ingegneria dei prompt. Ecco alcune strategie avanzate:

    Definisci argomenti e fornisci esempi

    Oltre a elencare le categorie non sicure nel prompt, è possibile apportare ulteriori miglioramenti fornendo definizioni e frasi relative a ciascuna categoria.

    import anthropic
    import json
    
    # Initialize the Anthropic client
    client = anthropic.Anthropic()
    
    # Dictionary of categories considered unsafe for content moderation, with their definitions
    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):
        # Format unsafe categories string, with each category and its definition on a new line
        unsafe_category_str = '\n'.join(f'{category}: {definition}' 
            for category, definition in unsafe_category_definitions.items()
        )
        
        # Construct the prompt for Claude, including the message and unsafe categories
        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.]
    }}"""
    
        # Send the request to Claude for content moderation
        response = client.messages.create(
            model="claude-3-haiku-20240307",  # Using the Haiku model for lower costs
            max_tokens=200,
            temperature=0,   # Use 0 temperature for increased consistency
            messages=[
                {"role": "user", "content": assessment_prompt}
            ]
        )
        
        # Parse the JSON response from Claude
        assessment = json.loads(response.content[0].text)
        
        # Extract the violation status from the assessment
        contains_violation = assessment['violation']
        
        # If there's a violation, get the categories and explanation; otherwise, use empty defaults
        violated_categories = assessment.get('categories', []) if contains_violation else []
        explanation = assessment.get('explanation') if contains_violation else None
        
        return contains_violation, violated_categories, explanation
    
    
    # Process each comment and print the results
    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 funzione moderate_message_with_definitions si espande sulla precedente funzione moderate_message consentendo a ciascuna categoria non sicura di essere accoppiata con una definizione dettagliata. Questo si verifica nel codice sostituendo l'elenco unsafe_categories della funzione originale con un dizionario unsafe_category_definitions. Questo dizionario mappa ogni categoria non sicura alla sua definizione corrispondente. Sia i nomi delle categorie che le loro definizioni sono inclusi nel prompt.

    In particolare, la definizione per la categoria Specialized Advice ora specifica i tipi di consulenza finanziaria che dovrebbero essere vietati. Di conseguenza, il commento It's a great time to invest in gold!, che in precedenza ha superato la valutazione moderate_message, ora attiva una violazione.

    Considera l'elaborazione in batch

    Per ridurre i costi in situazioni in cui la moderazione in tempo reale non è necessaria, considera la moderazione dei messaggi in batch. Includi più messaggi nel contesto del prompt e chiedi a Claude di valutare quali messaggi dovrebbero essere moderati.

    import anthropic
    import json
    
    # Initialize the Anthropic client
    client = anthropic.Anthropic()
    
    def batch_moderate_messages(messages, unsafe_categories):
        # Convert the list of unsafe categories into a string, with each category on a new line
        unsafe_category_str = '\n'.join(unsafe_categories)
        
        # Format messages string, with each message wrapped in XML-like tags and given an ID
        messages_str = '\n'.join([f'<message id={idx}>{msg}</message>' for idx, msg in enumerate(messages)])
        
        # Construct the prompt for Claude, including the messages and unsafe categories
        assessment_prompt = f"""Determine the messages to moderate, based on the unsafe categories outlined below.
    
    Messages:
    <messages>
    {messages_str}
    </messages>
    
    Unsafe categories and their definitions:
    <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."""
    
        # Send the request to Claude for content moderation
        response = client.messages.create(
            model="claude-3-haiku-20240307",  # 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}
            ]
        )
        
        # Parse the JSON response from Claude
        assessment = json.loads(response.content[0].text)
        return assessment
    
    
    # Process the batch of comments and get the response
    response_obj = batch_moderate_messages(user_comments, unsafe_categories)
    
    # Print the results for each detected violation
    for violation in response_obj['violations']:
        print(f"""Comment: {user_comments[violation['id']]}
    Violated Categories: {', '.join(violation['categories'])}
    Explanation: {violation['explanation']}
    """)

    In questo esempio, la funzione batch_moderate_messages gestisce la moderazione di un intero batch di messaggi con una singola chiamata API Claude. All'interno della funzione, viene creato un prompt che include l'elenco dei messaggi da valutare, le categorie di contenuti non sicuri definite e le loro descrizioni. Il prompt dirige Claude a restituire un oggetto JSON che elenca tutti i messaggi che contengono violazioni. Ogni messaggio nella risposta è identificato dal suo id, che corrisponde alla posizione del messaggio nell'elenco di input. Tieni presente che trovare la dimensione di batch ottimale per le tue esigenze specifiche potrebbe richiedere alcuni esperimenti. Mentre dimensioni di batch più grandi possono ridurre i costi, potrebbero anche portare a un leggero calo della qualità. Inoltre, potrebbe essere necessario aumentare il parametro max_tokens nella chiamata API Claude per adattarsi a risposte più lunghe. Per i dettagli sul numero massimo di token che il tuo modello scelto può generare, consulta la pagina di confronto dei modelli.

    Ricettario sulla moderazione dei contenuti

    Visualizza un esempio completamente implementato basato su codice di come utilizzare Claude per la moderazione dei contenuti.

    Guida ai guardrail

    Esplora la nostra guida ai guardrail per tecniche per moderare le interazioni con Claude.

    Was this page helpful?

    • Prima di iniziare a costruire con Claude
    • Decidi se utilizzare Claude per la moderazione dei contenuti
    • Genera esempi di contenuti da moderare
    • Come moderare i contenuti utilizzando Claude
    • Seleziona il modello Claude giusto
    • Costruisci un prompt forte
    • Valuta il tuo prompt
    • Distribuisci il tuo prompt
    • Migliora le prestazioni
    • Definisci argomenti e fornisci esempi
    • Considera l'elaborazione in batch