• 訊息
  • 託管代理
  • 管理
Search...
⌘K
使用案例
概覽工單路由客戶支援代理內容審核法律摘要
提示工程
概覽提示最佳實務Claude Fable 5 提示技巧Claude Opus 4.8 提示技巧Console 提示工具
測試與評估
定義成功並建構評估在 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
  • 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
最佳實務/使用案例

內容審核

內容審核是在數位應用程式中維護安全、尊重且具生產力環境的關鍵環節。本指南將討論如何使用 Claude 來審核您數位應用程式中的內容。

請造訪內容審核 cookbook,查看使用 Claude 實作內容審核的範例。

本指南著重於審核您應用程式中由使用者產生的內容。如果您正在尋找審核與 Claude 互動的相關指引,請參閱防護措施指南。

使用 Claude 建構之前

決定是否使用 Claude 進行內容審核

以下是一些關鍵指標,顯示您應該使用像 Claude 這樣的 LLM,而非傳統機器學習或基於規則的方法來進行內容審核:

Anthropic 已訓練所有 Claude 模型做到誠實、有幫助且無害。這可能導致 Claude 審核被視為特別危險的內容(符合可接受使用政策),無論使用何種提示。例如,一個希望允許使用者發布露骨色情內容的成人網站,可能會發現 Claude 仍會將露骨內容標記為需要審核,即使他們在提示中指定不要審核露骨色情內容。建議在建構審核解決方案之前先查閱可接受使用政策。

產生需要審核的內容範例

在開發內容審核解決方案之前,首先建立應被標記的內容範例和不應被標記的內容範例。確保您包含邊緣案例和具挑戰性的情境,這些可能是內容審核系統難以有效處理的。之後,檢視您的範例以建立一份定義明確的審核類別清單。 例如,社群媒體平台產生的範例可能包括以下內容:

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

# 用於測試內容審核的範例使用者評論
user_comments = allowed_user_comments + disallowed_user_comments

# 內容審核中被視為不安全的類別清單
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",
]

有效審核這些範例需要對語言有細緻的理解。在評論 This movie was great, I really enjoyed it. The main actor really killed it! 中,內容審核系統需要辨識出「killed it」是一種比喻,而非實際暴力的指示。相反地,儘管沒有明確提及暴力,評論 Delete this post now or you better hide. I am coming after you and your family. 應該被內容審核系統標記。

unsafe_categories 清單可以根據您的特定需求進行自訂。例如,如果您希望防止未成年人在您的網站上建立內容,您可以將「Underage Posting」附加到清單中。


如何使用 Claude 審核內容

選擇合適的 Claude 模型

選擇模型時,考量您的資料規模非常重要。如果成本是一個考量因素,像 Claude Haiku 4.5 這樣的較小模型因其成本效益而成為絕佳選擇。以下是針對每月接收十億則貼文的社群媒體平台進行文字審核的成本估算:

  • 內容規模

    • 每月貼文數:10 億
    • 每則貼文字元數:100
    • 總字元數:1,000 億
  • 預估 token 數

    • 輸入 token 數:286 億(假設每 3.5 個字元為 1 個 token)
    • 被標記訊息的百分比:3%
    • 每則被標記訊息的輸出 token 數:50
    • 總輸出 token 數:15 億
  • Claude Haiku 4.5 預估成本

    • 輸入 token 成本:28,600 MTok * $1.00/MTok = $28,600 美元
    • 輸出 token 成本:1,500 MTok * $5.00/MTok = $7,500 美元
    • 每月成本:$28,600 + $7,500 = $36,100 美元
  • Claude Opus 4.8 預估成本

    • 輸入 token 成本:28,600 MTok * $5.00/MTok = $143,000 美元
    • 輸出 token 成本:1,500 MTok * $25.00/MTok = $37,500 美元
    • 每月成本:$143,000 + $37,500 = $180,500 美元
實際成本可能與這些估算有所不同。這些估算是基於批次處理章節中強調的提示。透過從回應中移除 explanation 欄位,可以進一步減少輸出 token 數。

建構強大的提示

為了使用 Claude 進行內容審核,Claude 必須了解您應用程式的審核需求。讓我們從撰寫一個允許您定義審核需求的提示開始:

Python
import json

# 初始化 Anthropic 用戶端
client = anthropic.Anthropic()


def moderate_message(message, unsafe_categories):
    # 將不安全類別的清單轉換為字串,每個類別各佔一行
    unsafe_category_str = "\n".join(unsafe_categories)

    # 為 Claude 建構提示,包含訊息與不安全類別
    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.]
    }}"""

    # 將請求傳送給 Claude 以進行內容審核
    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}],
    )

    # 解析 Claude 回傳的 JSON 回應
    assessment = json.loads(response.content[0].text)

    # 從評估結果中擷取違規狀態
    contains_violation = assessment["violation"]

    # 若有違規,取得類別與說明;否則使用空的預設值
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# 處理每則留言並印出結果
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.")

在此範例中,moderate_message 函式包含一個評估提示,其中包括不安全內容類別和要評估的訊息。該提示要求 Claude 根據上述定義的不安全類別,評估訊息是否應被審核。

然後解析模型的評估結果以判斷是否存在違規。如果存在違規,Claude 還會回傳違規類別清單,以及訊息為何不安全的解釋。

評估您的提示

內容審核是一個分類問題。因此,您可以使用分類 cookbook 中概述的相同技術來判斷您的內容審核系統的準確性。

另一個額外的考量是,您可以不將內容審核視為二元分類問題,而是建立多個類別來代表不同的風險等級。建立多個風險等級可讓您調整審核的嚴格程度。例如,您可能希望自動封鎖被視為高風險的使用者查詢,而有許多中等風險查詢的使用者則被標記以供人工審查。

Python
import json

# 初始化 Anthropic 用戶端
client = anthropic.Anthropic()


def assess_risk_level(message, unsafe_categories):
    # 將不安全類別的清單轉換為字串,每個類別各佔一行
    unsafe_category_str = "\n".join(unsafe_categories)

    # 為 Claude 建構提示,包含訊息、不安全類別以及風險等級定義
    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>
}}"""

    # 將請求傳送給 Claude 以進行風險評估
    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}],
    )

    # 解析 Claude 回傳的 JSON 回應
    assessment = json.loads(response.content[0].text)

    # 從評估結果中擷取風險等級、違反的類別以及說明
    risk_level = assessment["risk_level"]
    violated_categories = assessment["categories"]
    explanation = assessment.get("explanation")

    return risk_level, violated_categories, explanation


# 處理每則留言並列印結果
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}")

此程式碼實作了一個 assess_risk_level 函式,使用 Claude 來評估訊息的風險等級。該函式接受一則訊息和一個不安全類別清單作為輸入。

在函式內部,會為 Claude 產生一個提示,包括要評估的訊息、不安全類別以及評估風險等級的具體指示。該提示指示 Claude 以 JSON 物件回應,其中包括風險等級、違規類別和可選的解釋。

這種方法透過指派風險等級實現靈活的內容審核。它可以無縫整合到更大的系統中,根據評估的風險等級自動過濾內容或標記評論以供人工審查。例如,執行此程式碼時,評論 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. 被歸類為中等風險。

部署您的提示

一旦您對解決方案的品質有信心,就可以將其部署到生產環境。以下是在生產環境中使用內容審核時應遵循的一些最佳實務:

  1. 向使用者提供清晰的回饋: 當使用者輸入被封鎖或回應因內容審核而被標記時,提供資訊豐富且具建設性的回饋,幫助使用者了解其訊息為何被標記以及如何適當地重新表述。在前面的程式碼範例中,這是透過 Claude 回應中的 explanation 欄位來完成的。

  2. 分析被審核的內容: 追蹤您的審核系統標記的內容類型,以識別趨勢和潛在的改進領域。

  3. 持續評估和改進: 使用精確率和召回率追蹤等指標定期評估您的內容審核系統的效能。使用這些資料來反覆改進您的審核提示、關鍵字和評估標準。


提升效能

在複雜的情境中,除了標準的提示工程技術之外,考慮其他策略來提升效能可能會有所幫助。以下是一些進階策略:

定義主題並提供範例

除了在提示中列出不安全類別之外,還可以透過提供與每個類別相關的定義和詞語來進一步改進。

Python
import json

# 初始化 Anthropic 用戶端
client = anthropic.Anthropic()

# 內容審核中被視為不安全的類別字典,包含各類別的定義
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):
    # 格式化不安全類別字串,每個類別及其定義各佔一行
    unsafe_category_str = "\n".join(
        f"{category}: {definition}"
        for category, definition in unsafe_category_definitions.items()
    )

    # 為 Claude 建構提示,包含訊息內容與不安全類別
    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.]
}}"""

    # 將請求傳送給 Claude 進行內容審核
    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}],
    )

    # 解析 Claude 回傳的 JSON 回應
    assessment = json.loads(response.content[0].text)

    # 從評估結果中擷取違規狀態
    contains_violation = assessment["violation"]

    # 若有違規,取得類別與說明;否則使用空的預設值
    violated_categories = assessment.get("categories", []) if contains_violation else []
    explanation = assessment.get("explanation") if contains_violation else None

    return contains_violation, violated_categories, explanation


# 處理每則留言並印出結果
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.")

moderate_message_with_definitions 函式擴展了先前的 moderate_message 函式,允許每個不安全類別與詳細定義配對。這在程式碼中是透過將原始函式中的 unsafe_categories 清單替換為 unsafe_category_definitions 字典來實現的。此字典將每個不安全類別對應到其相應的定義。類別名稱及其定義都包含在提示中。

值得注意的是,Specialized Advice 類別的定義現在指定了應禁止的財務建議類型。因此,先前通過 moderate_message 評估的評論 It is a great time to invest in gold! 現在會觸發違規。

考慮批次處理

在不需要即時審核的情況下,為了降低成本,可以考慮批次審核訊息。在提示的上下文中包含多則訊息,並要求 Claude 評估哪些訊息應被審核。

Python
import json

# 初始化 Anthropic 用戶端
client = anthropic.Anthropic()


def batch_moderate_messages(messages, unsafe_categories):
    # 將不安全類別清單轉換為字串,每個類別各佔一行
    unsafe_category_str = "\n".join(unsafe_categories)

    # 格式化訊息字串,每則訊息以類 XML 標籤包裹並賦予 ID
    messages_str = "\n".join(
        [f"<message id={idx}>{msg}</message>" for idx, msg in enumerate(messages)]
    )

    # 為 Claude 建構提示,包含訊息與不安全類別
    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."""

    # 將請求傳送給 Claude 以進行內容審核
    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}],
    )

    # 解析 Claude 回傳的 JSON 回應
    assessment = json.loads(response.content[0].text)
    return assessment


# 處理該批次的評論並取得回應
response_obj = batch_moderate_messages(user_comments, unsafe_categories)

# 列印每個偵測到的違規結果
for violation in response_obj["violations"]:
    print(f"""Comment: {user_comments[violation["id"]]}
Violated Categories: {", ".join(violation["categories"])}
Explanation: {violation["explanation"]}
""")

在此範例中,batch_moderate_messages 函式透過單一 Claude API 呼叫處理整批訊息的審核。 在函式內部,會建立一個提示,其中包括要評估的訊息清單和不安全內容類別。該提示指示 Claude 回傳一個 JSON 物件,列出所有包含違規的訊息。回應中的每則訊息都由其 id 識別,該 id 對應於訊息在輸入清單中的位置。 請記住,找到適合您特定需求的最佳批次大小可能需要一些實驗。雖然較大的批次大小可以降低成本,但也可能導致品質略有下降。此外,您可能需要增加 Claude API 呼叫中的 max_tokens 參數以容納較長的回應。有關您所選模型可以輸出的最大 token 數的詳細資訊,請參閱模型比較表。

內容審核 cookbook

查看如何使用 Claude 進行內容審核的完整程式碼實作範例。

防護措施指南

探索防護措施指南,了解審核與 Claude 互動的技術。

Was this page helpful?

  • 使用 Claude 建構之前
  • 決定是否使用 Claude 進行內容審核
  • 產生需要審核的內容範例
  • 如何使用 Claude 審核內容
  • 選擇合適的 Claude 模型
  • 建構強大的提示
  • 評估您的提示
  • 部署您的提示
  • 提升效能
  • 定義主題並提供範例
  • 考慮批次處理