在本指南中,我们将探讨如何使用 Claude 在将用户输入传递给主提示之前对其进行有效审核。我们还将讨论后处理技术,以识别潜在的提示泄漏。

访问我们的内容审核手册,查看使用 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 社区