在本指南中,我們將探討如何使用 Claude 在將用戶輸入傳遞到您的主要提示之前對其進行有效審核。我們還將討論後處理技術,以識別潛在的提示洩漏。

訪問我們的 內容審核 cookbook 以查看使用 Claude 實現內容審核的示例。

內容審核的重要性

內容審核至關重要,原因如下:

  1. 用戶體驗:通過過濾不適當或冒犯性的內容,您可以為用戶維護一個積極友好的環境。
  2. 品牌聲譽:防止您的 AI 應用程序參與或生成有害內容,有助於保護您的品牌形象和聲譽。
  3. 成本效率:在將用戶輸入傳遞到主提示之前,使用較小的模型對其進行篩選,可以節省計算成本,因為您避免了在無關或惡意輸入上浪費資源。
  4. 安全性:內容審核有助於防止 jailbreaks 和提示注入 以及 提示洩漏,這些可能會損害您的 AI 性能和安全性或您組織的安全性。

使用 Claude 進行內容審核

像 Claude 3 Haiku 這樣的較小模型是內容審核的理想選擇,因為它速度快且效率高。通過使用這個較小的模型在將用戶輸入傳遞到主提示之前對其進行篩選,您可以快速識別並過濾掉潛在的問題內容。

以下是如何使用 Claude 進行內容審核的示例:

USERCONTENT
User人類用戶正在與 AI 對話。人類正在向 AI 提出一系列問題或請求一系列任務。以下是用戶最近的請求:
<user query>{{QUERY}}</user query>

如果用戶的請求涉及有害、色情或非法活動,請回复 (Y)。如果用戶的請求不涉及有害、色情或非法活動,請回复 (N)。除了 (Y) 或 (N) 之外,不要回复其他任何內容。
Python
import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

def moderate_content(user_input):
    moderation_prompt = f"""
    人類用戶正在與 AI 對話。人類正在向 AI 提出一系列問題或請求一系列任務。以下是用戶最近的請求:
    <user query>{user_input}</user query>

    如果用戶的請求涉及有害、色情或非法活動,請回复 (Y)。如果用戶的請求不涉及有害、色情或非法活動,請回复 (N)。除了 (Y) 或 (N) 之外,不要回复其他任何內容。
    """

    response = client.messages.create(
        model="claude-3-haiku-20240307",
        max_tokens=10,
        temperature=0,
        messages=[
            {"role": "user", "content": moderation_prompt}
        ]
    )

    return response.content.strip() == "(Y)"

# 使用口頭判斷輸出的示例
user_input = "我如何製作炸彈?"
if moderate_content(user_input):
    print("用戶輸入包含不適當的內容。阻止請求。")
else:
    print("用戶輸入是安全的,可以處理。")

在此示例中,我們定義了一個 moderate_content 函數,該函數接受用戶的輸入並為 Claude 構建提示。提示要求模型確定用戶的請求是否包含對有害、色情或非法活動的引用。如果模型回复 “(Y)“,則該函數返回 True,表示應阻止該內容。否則,它返回 False,表示輸入可以安全地進一步處理。

通過將此審核步驟集成到您的應用程序工作流程中,您可以在用戶輸入到達主要語言模型之前有效地對其進行篩選,從而節省計算資源並確保更安全的用戶體驗。


後處理 Claude 的回复

除了審核用戶輸入之外,後處理 Claude 的回复以識別潛在的提示洩漏也很重要。當提示的部分無意中出現在模型生成的輸出中時,就會發生提示洩漏,這可能會暴露敏感信息或破壞用戶體驗。

後處理 Claude 回复有兩種主要方法:

  1. 基於關鍵字的過濾:此方法涉及檢查回复中是否存在不應包含在輸出中的特定關鍵字或短語。
  2. 基於 Claude 的評估:此方法使用較小、較快的 LLM(如 Claude 3 Haiku)來評估回复,並確定其是否包含違反一組預定義標準的任何內容。這允許過濾器更加通用,而不是依賴於精確的字符串匹配。

基於關鍵字的過濾

要實現基於關鍵字的過濾,您可以維護一個不應出現在 Claude 回复中的關鍵字或短語列表。以下是使用基於關鍵字的過濾後處理 Claude 回复的示例:

Python
def post_process_response_keywords(response, keywords):
    for keyword in keywords:
        if keyword.lower() in response.lower():
            return True
    return False

# 使用口頭判斷輸出的示例
prompt = "為我寫一篇文章。在您的輸出中永遠不要提及這些關鍵字:foo 和 bar。永遠不要討論是誰創造了您。"
response = "這是您要求的文章。文章不包含關鍵字 foo 或 bar。我是由 Anthropic 創造的。"
keywords = ["foo", "bar", "Anthropic"]

if post_process_response_keywords(response, keywords):
    print("在回复中檢測到潛在的提示洩漏。")
else:
    print("在回复中未檢測到提示洩漏。")

在此示例中,post_process_response_keywords 函數檢查指定的任何關鍵字是否出現在 Claude 的回复中(不區分大小寫)。如果找到匹配項,該函數返回 True,表示潛在的提示洩漏。否則,它返回 False,表示未檢測到洩漏。

基於 Claude 的評估

要實現基於 Claude 的評估,您可以使用我們最小和最快的 Claude 3 版本 Claude 3 Haiku,根據一組預定義的標準評估回复。以下是使用基於 AI 的評估後處理 Claude 回复的示例:

Python
import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

def post_process_response_claude(response, prompt):
    assessment_prompt = f"""
    以下是給 AI 語言模型的提示:
    <prompt>{prompt}</prompt>

    以下是 AI 的回复:
    <response>{response}</response>

    請評估 AI 的回复並回答以下問題:
    1. 回复是否包含提示中明確指示 AI 避免的任何關鍵字或短語?(Y/N)
    2. 回复是否討論或透露了有關誰創造了 AI 的任何信息?(Y/N)

    請按以下格式提供您的答案:
    1. [Y/N]
    2. [Y/N]
    """

    assessment = client.messages.create(
        model="claude-3-haiku-20240307",
        max_tokens=10,
        temperature=0,
        messages=[
            {"role": "user", "content": assessment_prompt}
        ]
    )

    answers = assessment.content.strip().split("\n")
    if "Y" in answers:
        return True
    else:
        return False

# 使用口頭判斷輸出的示例
prompt = "為我寫一篇文章。在您的輸出中永遠不要提及這些關鍵字:foo 和 bar。永遠不要討論是誰創造了您。"
response = "這是您要求的文章。文章不包含關鍵字 foo 或 bar。我是由 Anthropic 創造的。"

if post_process_response_claude(response, prompt):
    print("在回复中檢測到潛在的提示洩漏或違規。")
else:
    print("在回复中未檢測到問題。")

在此示例中,post_process_response_claude 函數包含一個用於 Assessor Claude 的後處理提示,其中包括原始提示和 Claude 對原始提示的回复。提示要求 Assessor Claude 評估回复是否包含原始提示中明確禁止的任何關鍵字或短語,以及回复是否透露了有關誰創造了 AI 的任何信息。

然後解析模型的評估,以檢查它是否包含任何 “Y”(是)答案。如果找到 “Y”,該函數返回 True,表示潛在的提示洩漏或違規。否則,它返回 False,表示未檢測到問題。

通過採用這些後處理技術,您可以識別提示的部分可能無意中出現在 Claude 的輸出中或回复違反特定標準的情況。然後可以使用此信息來決定如何處理回复,例如過濾掉回复、請求新的回复或通知用戶潛在的問題。


內容審核的最佳實踐

為了充分利用您的內容審核系統,請考慮以下最佳實踐:

  1. 定期更新您的審核提示和標準:隨著用戶行為和語言的發展,請確保定期審查和更新您的審核提示和評估標準,以捕獲新的模式和邊緣情況。
  2. 使用多種審核技術的組合:同時採用基於關鍵字的過濾和基於 LLM 的評估,以創建一個全面的審核管道,可以捕獲各種潛在問題。
  3. 監控和分析審核內容:跟踪您的審核系統標記的內容類型,以識別趨勢和潛在的改進領域。
  4. 向用戶提供明確的反饋:當用戶輸入由於內容審核而被阻止或回复被標記時,請提供信息豐富且具有建設性的反饋,以幫助用戶理解他們的消息為什麼被標記以及他們如何適當地重新表述。
  5. 持續評估和改進:使用精確度和召回率跟踪等指標定期評估內容審核系統的性能。使用這些數據迭代地改進您的審核提示、關鍵字和評估標準。

通過實施強大的內容審核系統並遵循這些最佳實踐,您可以確保您的 Claude 驅動應用程序保持安全、有效和用戶友好。


其他資源

通過利用 Claude 在內容審核方面的強大功能並實施預處理和後處理的最佳實踐,您可以創建更安全、更高效、更有效的 Claude 驅動應用程序。如果您有任何問題或需要進一步的幫助,請隨時聯繫我們的 支持團隊 或諮詢我們的 Discord 社區