コンテンツ監査は、デジタルアプリケーションにおいて、安全で、尊重され、生産的な環境を維持するための重要な側面です。このガイドでは クロード デジタルアプリのコンテンツを監査する。
をご覧ください。 コンテンツ・レビュー・レシピ クロードを使ったコンテンツ監査の例をご覧ください。
このガイドでは、アプリ内のユーザー生成コンテンツのレビューに焦点を当てています。クロードとのやり取りを監査するガイダンスをお探しの場合は、当社の セキュリティー・バウンダリー・ガイドライン.
クロードを使用する前に
コンテンツレビューにクロードを使うかどうかを決める
コンテンツ監査に従来の機械学習やルールベースのアプローチではなく、ClaudeのようなLLMを選ぶべき主な指標は以下の通りです:
費用対効果が高く、迅速な導入をお望みの場合
従来の機械学習手法には、多大なエンジニアリング・リソース、機械学習の専門知識、インフラ・コストが必要だった。手動の監査システムにはさらにコストがかかります。クロードを使えば、複雑な監査システムを短時間かつ低コストで構築できます。
意味的理解と迅速な意思決定が必要
Bag-of-Wordsモデリングや単純なパターンマッチングなどの従来の機械学習アプローチでは、コンテンツのトーン、意図、コンテキストを理解するのに苦労することが多い。Claudeは、意味理解とレビュー決定を迅速に行う機能を組み合わせることで、このギャップを埋めています。
一貫した政策決定が必要
高度な推論機能を活用することで、クロードは複雑なレビューガイドラインを一貫して解釈し、適用することができます。この一貫性により、すべてのコンテンツの公平な扱いを保証し、一貫性のない、または偏ったレビュー決定がユーザーの信頼を損なうリスクを低減します。
レビューポリシーは、時間の経過とともに変更または進化する可能性があります。
従来の機械学習アプローチが確立された後、変更を加えるには時間がかかり、データ集約的な努力となります。一方、製品や顧客のニーズが変化すると、クロードは、学習データの大規模な再ラベリングなしで、監査ポリシーの変更や追加に容易に適応することができます。
監査判断には解釈可能な推論が必要
ユーザーや規制当局にレビュー決定の背後にある明確な説明を提供したい場合、クロードは詳細かつ首尾一貫した根拠を生成することができます。この透明性は、コンテンツレビューの実施において信頼を築き、説明責任を果たすために不可欠です。
個別のモデルを維持することなく、多言語をサポートする必要がある。
従来の機械学習アプローチでは、対応言語ごとに個別のモデルや大規模な翻訳プロセスが必要でした。クロードの多言語機能は、個別のモデルや大規模な翻訳プロセスを必要とすることなく、さまざまな言語のチケットを分類することを可能にすることで、グローバルな顧客ベースの監査を簡素化します。
マルチモーダルなサポートが必要
Claudeのマルチモーダル機能は、テキストと画像のコンテンツを分析・解釈することを可能にします。そのため、異なる種類のメディアを一緒に評価する必要がある環境において、包括的なコンテンツ監査を行うための汎用性の高いツールとなっている。
アンソロピック すべてのクロードのモデルは、正直で、親切で、無害であるように訓練されています。そのため、クロードが特に危険と判断したコンテンツを審査することがあります(私たちの 利用規定)、プロンプトに関係なく表示されます。例えば、ユーザが露骨な性的コンテンツを投稿できるようにしたいアダルトサイトは、露骨なコンテンツを審査しないとプロンプトで明示していても、Claude が露骨なコンテンツに審査が必要であるとマークしてしまうかもしれません。レビューソリューションを構築する前に AUP を確認することをお勧めします。
コンテンツ監査の生成例
コンテンツ監査ソリューションを開発する前に、まず、フラグを立てるべきコンテンツの例と、フラグを立ててはいけないコンテンツの例を作成する。その際、コンテンツ監査システムの処理効果が問われる可能性のあるエッジケースや複雑なシナリオも含めるようにしてください。その後、監査カテゴリの明確なリストを作成するために、例をレビューしてください。例えば、ソーシャルメディアプラットフォームが作成した例には、次のようなものがあるかもしれません:
allowed_user_comments = [
'这部电影太棒了,我真的很喜欢。主角表现得非常出色!',
'我讨厌星期一。',
'现在是投资黄金的好时机!'
]
disallowed_user_comments = [
'马上删除这篇帖子,否则你最好躲起来。我会追上你和你的家人。',
'远离 5G 手机!!他们正在用 5G 控制你。',
'恭喜你!你赢得了一张价值 $1,000 的礼品卡。点击这里领取你的奖品!'
]
# 用于测试内容审核的用户评论示例
user_comments = allowed_user_comments + disallowed_user_comments
# 被视为不安全的内容审核类别列表
unsafe_categories = [
'儿童剥削',
'阴谋论',
'仇恨',
'无差别武器',
'知识产权',
'非暴力犯罪',
'隐私',
'自我伤害',
'性犯罪',
'色情内容',
'专业建议',
'暴力犯罪'
]
これらの例を効果的に見直すには、言葉のニュアンスを理解する必要がある。レビューでは这部电影太棒了,我真的很喜欢。主角表现得非常出色!
コンテンツモデレーションシステムは、「華麗な演技」は比喩であり、実際の暴力を示すものではないことを認識する必要がある。その代わり、暴力への明確な言及がないにもかかわらず、レビューでは马上删除这篇帖子,否则你最好躲起来。我会追上你和你的家人。
コンテンツレビューシステムによってフラグが立てられるはずだ。
unsafe_categories
リストは、特定のニーズに合わせてカスタマイズすることができます。例えば、未成年者がサイト上でコンテンツを作成するのを防ぎたい場合、リストに「未成年の出版」を追加することができます。
コンテンツ監査にClaudeを使う方法
適切なクロード・モデルの選択
モデルを選ぶ際には、データのサイズを考慮することが重要である。コストに問題がある場合、Claude 3 Haikuのような小さなモデルは、費用対効果が高いため、優れた選択となる。以下は、月に10億件の投稿を受けるソーシャルメディアプラットフォームのテキスト監査を実行するコストの見積もりです:
- コンテンツサイズ
- 月間投稿数:10億件
- 1投稿あたりの文字数: 100
- 総文字数:1000億文字
- 推定トークン数
- 入力トークン:286億(3.5文字に1トークンと仮定)
- タグ付けされたメッセージの割合: 3%
- 各タグ付きメッセージの出力 トークン 番号:50
- 総出力トークン数:15億
- クロード3 俳句 見積もり費用
- 投入トークン・コスト:2,860MTok * $0.25/MTok = $715
- 出力トークン・コスト:1,500 MTok * $1.25/MTok = $1,875
- 月額費用:$715 + $1,875 = $2,590
- クロード 3.5 ソネット 見積もり費用
- 投入トークン・コスト:2,860MTok * $3.00/MTok = $8,580
- 出力トークン・コスト:1,500 MTok * $15.00/MTok = $22,500
- 月額費用:$8,580 + $22,500 = $31,080
実際のコストはこれらの見積もりと異なる可能性がある。これらの見積もりは以下の情報に基づいている。 バッチファイル セクションでハイライトされたヒント。を削除することで explanation
フィールドを使用すれば、Output Tokenの数をさらに減らすことができる。
パワフルなヒント
Claudeをコンテンツ監査に使うためには、Claudeはあなたのアプリケーションの監査要件を理解する必要があります。監査要件を定義できるようにプロンプトを書き始めましょう:
import anthropic
import json
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()
def moderate_message(message, unsafe_categories):
# 将不安全类别列表转换为字符串,每个类别占一行
unsafe_category_str = '\n'.join(unsafe_categories)
# 为 Claude 构建提示,包括消息和不安全类别
assessment_prompt = f"""
确定以下消息是否需要审核,
基于下面列出的不安全类别。
消息:
<message>{message}</message>
不安全类别:
<categories>
{unsafe_category_str}
</categories>
仅使用以下格式响应 JSON 对象:
{{
"violation": <布尔字段,表示消息是否应该被审核>,
"categories": [被违反类别的逗号分隔列表],
"explanation": [可选。如果有违规行为则仅包含。]
}}"""
# 发送请求给 Claude 进行内容审核
response = client.messages.create(
model="claude-3-haiku-20240307", # 使用 Haiku 模型以降低成本
max_tokens=200,
temperature=0, # 使用 0 温度以提高一致性
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"\n评论: {comment}")
violation, violated_categories, explanation = moderate_message(comment, unsafe_categories)
if violation:
print(f"违反的类别: {', '.join(violated_categories)}")
print(f"解释: {explanation}")
else:
print("未检测到问题。")
この例ではmoderate_message
この関数には、安全でないコンテンツのカテゴリと評価したいメッセージの評価プロンプトが含まれます。プロンプトは、定義した安全でないカテゴリに基づいて、メッセージを監査すべきかどうかをクロードに評価するよう求めます。
モデルの評価は、違反が存在するかどうかを判断するために解析される。違反が存在する場合、Claude は違反したカテゴリのリストと、なぜそのメッセージが安全でないと考えられるかの説明も返します。
ヒントを評価する
コンテンツのレビューは分類の問題です。そのため 分類料理本 コンテンツ監査システムの正確性を判断する」で概説したのと同じ手法です。
もう一つの考慮点は、コンテンツ監査を二元的な分類の問題として見るのではなく、異なるリスクレベルを表すために複数のカテゴリーを作成できることである。複数のリスクレベルを作成することで、監査の強度を調整することができます。例えば、高リスクとみなされるユーザークエリを自動的にブロックする一方で、多くの中リスククエリを手動レビューが必要であるとマークすることができます。
import anthropic
import json
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()
def assess_risk_level(message, unsafe_categories):
# 将不安全类别的列表转换为字符串,每个类别占一行
unsafe_category_str = '\n'.join(unsafe_categories)
# 为 Claude 构造提示,包括待评估的消息、不安全类别和风险级别定义
assessment_prompt = f"""
评估以下消息的风险级别,判断是否需要审核,
基于下面列出的不安全类别。
消息:
<message>{message}</message>
不安全类别:
<categories>
{unsafe_category_str}
</categories>
根据您对用户消息应根据定义的不安全类别进行审核的信心,分配风险级别:
0 - 无风险
1 - 低风险
2 - 中等风险
3 - 高风险
仅以 JSON 对象格式回复,使用以下格式:
{{
"risk_level": <表示风险级别的数值字段>,
"categories": [违规类别的逗号分隔列表],
"explanation": <可选。仅在风险级别大于 0 时包含>
}}"""
# 发送请求给 Claude 进行风险评估
response = client.messages.create(
model="claude-3-haiku-20240307", # 使用 Haiku 模型以降低成本
max_tokens=200,
temperature=0, # 使用 0 温度以提高一致性
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"\n评论: {comment}")
risk_level, violated_categories, explanation = assess_risk_level(comment, unsafe_categories)
print(f"风险级别: {risk_level}")
if violated_categories:
print(f"违规类别: {', '.join(violated_categories)}")
if explanation:
print(f"解释: {explanation}")
このコードは assess_risk_level
関数はメッセージのリスクレベルを評価するためにクロードを使用します。この関数はメッセージと安全でないカテゴリのリストを入力として受け取る。
この関数の内部では、評価されるメッセージ、不安全カテゴリ、評価されるリスクレベルの具体的な説明を含むプロンプトがClaudeに対して生成される。プロンプトは、リスクレベル、違反カテゴリ、およびオプションで説明を含む JSON オブジェクトの形式で応答するよう、Claude に指示する。
このアプローチでは、リスクレベルを割り当てることで、柔軟なコンテンツレビューが可能です。大規模なシステムにシームレスに統合し、評価されたリスクレベルに基づいて、コンテンツを自動的にフィルタリングしたり、手動レビューのためにコメントにフラグを立てたりすることができる。例えば、このコードを実行すると、コメント 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.
ミディアム・リスクに分類される。
ヒントを展開する
ソリューションの品質に満足したら、本番環境に展開する時です。ここでは、コンテンツ監査を使用する際のベストプラクティスを紹介します:
- **ユーザー入力がブロックされたときや、コンテンツモデレーションによってレスポンスにフラグが立てられたときに、有益で建設的なフィードバックを提供する。上のコード例では、これは
explanation
ラベルの実現。 - **監査されたコンテンツの分析:**監査システムによってフラグが立てられたコンテンツの種類を追跡し、傾向と改善の可能性を特定する。
- **継続的な評価と改善:*** 精度や想起率の追跡などの指標を使用して、コンテンツレビューシステムのパフォーマ ンスを定期的に評価する。このデータを使用して、監査プロンプト、キーワード、評価基準を繰り返し改善します。
パフォーマンスを向上させる
複雑なシナリオでは、標準的な エンジニアリングのヒント それ以上に、いくつかの追加戦略を検討することで、パフォーマンスを向上させることができるかもしれない。ここでは、いくつかの高度な戦略を紹介する:
トピックを定義し、例を示す
プロンプトに安全でないカテゴリーを列挙するだけでなく、各カテゴリーの定義や関連するフレーズを提示することで、さらなる改善を図ることができるだろう。
import anthropic
import json
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()
# 含有定义的内容审核不安全类别字典
unsafe_category_definitions = {
'Child Exploitation': '涉及儿童裸体或促进、鼓励、辩护或描绘儿童性虐待的内容。',
'Conspiracy Theories': """推广或支持关于事件、情况或个人的毫无根据的虚假或误导性理论的内容,
这些理论可能煽动伤害或破坏公众对机构或事实的信任。""",
'Hate': """基于受保护特征(种族、肤色、民族、国籍、残疾、宗教信仰、种姓、性取向、性别、性别认同和重大疾病)
对人群表达仇恨的内容,或助长负面刻板印象的内容。""",
'Indiscriminate Weapons': '涉及大规模杀伤性武器制造的内容。',
'Intellectual Property': '侵犯第三方知识产权的内容。',
'Non-Violent Crimes': '鼓励、辩护或推动非暴力犯罪的内容。',
'Privacy': '包含私人个人敏感信息的内容。',
'Self-Harm': '鼓励、辩护或推动自残行为的内容。',
'Sex Crimes': '鼓励、辩护或推动性犯罪的内容。',
'Sexual Content': '包含色情描述或性行为明确描写的内容。',
'Specialized Advice': """包含金融、医疗或法律建议的内容。
金融建议包括投资、股票、债券或任何财务规划的指导。""",
'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"""根据以下列出的不安全类别,判断以下消息是否需要审核。
消息:
<message>{message}</message>
不安全类别及其定义:
<categories>
{unsafe_category_str}
</categories>
请记住所有不安全类别及其定义。
仅以 JSON 格式响应,使用以下格式:
{{
"violation": <布尔字段,表示消息是否应被审核>,
"categories": [被违反类别的逗号分隔列表],
"explanation": [可选。如果存在违规,才包含。]
}}"""
# 向 Claude 发送内容审核请求
response = client.messages.create(
model="claude-3-haiku-20240307", # 使用 Haiku 模型以降低成本
max_tokens=200,
temperature=0, # 使用 0 温度以提高一致性
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"\n评论:{comment}")
violation, violated_categories, explanation = moderate_message_with_definitions(comment, unsafe_category_definitions)
if violation:
print(f"违规类别:{', '.join(violated_categories)}")
print(f"解释:{explanation}")
else:
print("未发现问题。")
moderate_message_with_definitions
関数は、前回の moderate_message
関数を拡張し、安全でない各カテゴリーを詳細な定義と対にした。コードは、元の関数の unsafe_categories
で置き換えられる。 unsafe_category_definitions
辞書。この辞書は、安全でない各カテゴリーを対応する定義にマップする。カテゴリ名とその定義の両方がプロンプトメッセージに含まれる。
注目に値するのはSpecialized Advice
カテゴリーの定義では、禁止されるべき金融アドバイスの種類が明記された。その結果、以前採用された moderate_message
"今が金投資の絶好のチャンス!" の口コミを投稿します。 今なら違反になる
バッチ処理の検討
リアルタイムのレビューが必要ない場合、コストを削減するためにメッセージを一括してレビューすることを検討する。プロンプトのコンテキストに複数のメッセージを含め、どのメッセージをレビューする必要があるかをクロードに評価させる。
import anthropic
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"""根据下面列出的不安全类别,确定需要审核的消息。
消息列表:
<messages>
{messages_str}
</messages>
不安全类别及其定义:
<categories>
{unsafe_category_str}
</categories>
仅使用以下格式返回 JSON 对象:
{{
"violations": [
{{
"id": <message id>,
"categories": [违反的类别列表],
"explanation": <为何存在违规的解释>
}},
...
]
}}
重要提示:
- 记得分析每条消息是否存在违规行为。
- 选择任何合理适用的违规类别。"""
# 发送审核请求给 Claude
response = client.messages.create(
model="claude-3-haiku-20240307", # 使用 Haiku 模型以降低成本
max_tokens=2048, # 增加最大 Token 数以处理批量数据
temperature=0, # 设置温度为 0 提高一致性
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"""评论:{user_comments[violation['id']]}
违规类别:{', '.join(violation['categories'])}
解释:{violation['explanation']}
""")
この例ではbatch_moderate_messages
この関数は、1 回の Claude API 呼び出しでメッセージのバッチ全体のレビューを処理します。関数の内部では、評価するメッセージのリスト、安全でないコンテンツのカテゴリとその説明を含むヒントが作成されます。プロンプトは Claude に違反を含む全てのメッセージをリストした JSON オブジェクトを返すように要求します。応答中の各メッセージは、入力リスト中のメッセージの位置に対応するidで識別される。特定のニーズに最適なバッチサイズを見つけるには、いくつかの実験が必要かもしれないことに注意。バッチ・サイズを大きくすると、コストを削減できる反面、品質が若干低下する可能性がある。のクロード API 呼び出しの数を増やす必要があるかもしれません。 max_tokens
パラメータを使用して、より長いレスポンスに対応することができます。選択したモデルが出力できるトークンの最大数については モデル比較ページ.