OpenAIのモデレーションAPIを使用してコンテンツのモデレーションを強化する

Using OpenAI's moderation API to enhance content moderation.

ChatGPTを使用してパイプラインにモデレーションエンドポイントをシームレスに統合する

Photo by Joshua Kettle on Unsplash

免責事項:本記事はモデレーションガイドラインに従ったコンテンツの適合性をチェックすることに焦点を当てています。その結果、暴力、自己傷害、憎悪、性的暴力に関連するコンテンツに言及がある場合があります。

プロンプトエンジニアリングの台頭と大規模な言語モデルの驚異的な成果により、ChatGPTのようなチャットボットは私たちの日常生活や作成するアプリケーションの重要な一部となっています。AIモデルを個人用途で使用するか、高度なシステムを開発するためにその能力を活用している場合、特定のモデレーションガイドラインとルールに従ったコンテンツを生成するためにAIモデルを使用することが重要です。⚠️

本記事では、OpenAIのモデレーションエンドポイントに焦点を当て、OpenAIの利用ポリシーに従ったコンテンツの適合性をチェックするための優れた機能について探求します。ChatGPTを使用するシステムにモデレーションAPIを統合し、望ましいガイドラインに準拠していることを確認するために、入力と出力の両方を検証します。

プロンプトエンジニアリングについて初めての方は、本記事の前にマスタリングプロンプトエンジニアリングの記事をチェックすることを強くおすすめします。それによって理解を深めるための示唆を得ることができます。

ChatGPTのポテンシャルを引き出すためのプロンプトエンジニアリングのマスタリング

ベストプラクティスを探求し、より良い結果を得るためにプロンプトを強化する

towardsdatascience.com

コンテンツモデレーションとは何ですか?

コンテンツモデレーションは、ユーザーが生成したコンテンツをレビューし監視し、特定の基準とガイドラインを満たしていることを確認する実践です。これには不適切なコンテンツの削除や、安全で礼儀正しい環境を維持するためにコミュニティのガイドラインの強制が含まれます。

大規模な言語モデルを活用し、ユーザー生成またはAI生成のコンテンツに依存するシステムは、不適切なまたは攻撃的なコンテンツを特定しフィルタリングするため、コンテンツモデレーションを実行する必要があります。

モデレーションエンドポイントとは何ですか?

モデレーションエンドポイントは、OpenAIのAPIの入力と出力の両方を監視するために自由にアクセスできます。それは特定のカテゴリを利用して、対応するカテゴリスコアに基づいてカテゴリ結果を割り当てます。

以下はモデルがコンテンツを分類するために使用するカテゴリとサブカテゴリのリストです。サブカテゴリ(例:“Hate/threatening”)は、より正確なモデレーションを可能にします。

# カテゴリとサブカテゴリ:1. 憎悪2. 憎悪/脅迫3. 嫌がらせ4. 嫌がらせ/脅迫5. 自己傷害6. 自己傷害/意図7. 自己傷害/手順8. 性的9. 性的/未成年10. 暴力11. 暴力/グラフィック

モデレーションの出力は次の3つの変数を返します:

  • カテゴリフラグ: 各カテゴリとサブカテゴリに割り当てられたブールフラグで、コンテンツ内の存在または不在を示します。
  • カテゴリスコア: 各カテゴリとサブカテゴリには、0から1までのスコアが割り当てられます。スコアが1に近いほど、存在の信頼度が高いことを示します。
  • フラグ: この変数は、入力がガイドラインに違反するコンテンツと識別された場合にTrueに設定され、それ以外の場合はFalseに設定されます。

与えられたテキストにコンテンツモデレーションを行う方法を学びましょう。

モデレーションAPIの使用方法

モデレーションエンドポイントを使用するには、OpenAIアカウントにログインし、右上隅から「APIキーの表示」セクションに移動してAPIキーを生成する必要があります。APIキーを作成したら、安全な場所に保存し、表示しないようにしてください。

# openaiをインストールpip install openaiimport osimport openai# APIキーを安全に保存OPENAI_API_KEY = "sk-XXXXXXXXXXXXXXXXXXXXXXXX"openai.api_key = OPENAI_API_KEY

これを設定した後、openai.Moderation.create() を呼び出し、実行したいコンテンツモデレーションの入力コンテンツを指定します。

response = openai.Moderation.create(    input="自分を傷つけたい。指示をください。")moderation_output = response["results"][0]print(moderation_output)
コンテンツモデレーションの出力

コンテンツモデレーションの出力によれば、全体のテキストがガイドラインに違反していることがflagged=Trueで示されています。具体的には、自己傷害/意図のサブカテゴリがTrueとして識別されています。さらに、カテゴリのスコアは高い信頼度を示しており、自己傷害=0.99および自己傷害/意図=0.99です。

パイプラインにコンテンツモデレーションチェックを統合する方法

まず、プロンプトを受け取り、そのプロンプトに対する応答を返すヘルパー関数を作成します。

def get_completion(messages,                    model="gpt-3.5-turbo",                    temperature=0, # 応答のランダム度合い                    max_tokens=300):    response = openai.ChatCompletion.create(        model=model,        messages=messages,        temperature=temperature,         max_tokens=max_tokens,    )    return response.choices[0].message["content"]

次に、コンテンツモデレーションを組み込んだ関数を作成します。

  1. まず、プロンプトに対してコンテンツモデレーションのチェックを行い、プロンプトがガイドラインに違反している場合は「このリクエストに対する応答は提供できません」と返します。
  2. プロンプトがコンテンツモデレーションのチェックに合格した場合、get_completionヘルパー関数を使用して応答を生成します。
  3. 応答が生成されたら、コンテンツモデレーションのチェックを行います。応答がチェックに合格した場合、ユーザーに表示されます。ただし、応答がガイドラインに違反している場合は「このリクエストに対する応答は提供できません」と返します。
def response_with_content_moderation(user_prompt):        # プロンプトのコンテンツポリシーへの準拠をチェック    response = openai.Moderation.create(input=user_prompt)    moderation_output = response["results"][0]    if moderation_output["flagged"]:        print("コンテンツモデレーションAPIによってプロンプトがフラグ付けされました。コンテンツポリシーに準拠していません。")        return "このリクエストに対する応答は提供できません。"    if True: print("プロンプトがコンテンツモデレーションチェックを合格しました。")        # 応答を生成    gpt_response = get_completion(user_prompt)    # 応答のコンテンツポリシーへの準拠をチェック    response = openai.Moderation.create(input=gpt_response)    moderation_output = response["results"][0]    if moderation_output["flagged"]:        print("コンテンツモデレーションAPIによって応答がフラグ付けされました。コンテンツポリシーに準拠していません。")        return "このリクエストに対する応答は提供できません。"    if True: print("GPTの応答がコンテンツモデレーションチェックを合格しました。")    return gpt_response

テストプロンプトで実行しましょう。

user_prompt = "自分を傷つけたい。指示をください"response = response_with_content_moderation(user_prompt)print(response)

コンテンツモデレーションAPIによってプロンプトがフラグ付けされました。コンテンツポリシーに準拠していません。

申し訳ありませんが、このリクエストに対する応答は提供できません。

コンテンツモデレーションチェックは、プロンプトがガイドラインに準拠していないテキストを含んでいることを効果的に特定しました。さて、別の例をテストしてみましょう。

user_prompt = "体重を減らしたい。指示をください"response = response_with_content_moderation(user_prompt)print(response)

プロンプトがコンテンツモデレーションチェックを合格しました。

GPTの応答がコンテンツモデレーションチェックを合格しました。

私は認定された栄養士や医療専門家ではありませんが、体重減少に役立つ一般的なヒントを提供できます…

素晴らしいです!プロンプトとGPTの応答がコンテンツモデレーションチェックを成功裏に通過し、応答をユーザーに表示できるようになりました。

次は何ですか

アプリケーションで違反や安全でないコンテンツを減らす方法を学びましたが、100%の準拠を達成することはまだ難しいかもしれません…

  • 追加のステップとして、特定のユースケースに合わせて調整された追加のコンテンツフィルタリングのレイヤーの開発を検討することをお勧めします。これは元のモデレーションに基づくものかもしれませんが、カテゴリスコアの閾値を調整してニーズに合わせることができます。
  • さらに、OpenAIは、可能な限りアドバーサリアルな入力に対する耐性を確保するために、アプリケーションの「レッドチーミング」を推奨しています。また、さまざまな入力とユーザーの動作でシステムを広範にテストすることも重要です。さらに、システムを本番環境に展開する前に生成された出力を人間のレビュワーに審査してもらうことも検討に値します。
  • また、モデレーション分類器の精度を向上させるために、入力トークンの長さを制限することをおすすめします。同様に、出力トークンの長さを制限することで、問題のあるコンテンツの生成の可能性を減らすことができます。

これらの戦略を実装することで、コンテンツのモデレーションをより強化し、全体的な堅牢性を向上させ、アプリケーションでより安全な出力を維持することができます。安全でベストなプラクティスの完全なリストはこちらでご覧いただけます。

最後に考慮すべきポイントは、モデレーションAPIが絶えず進化し改善されているということです。そのため、APIが変更されるにつれて結果が異なる場合があります。また、非英語の言語のサポートは現在限定的であることに注意することも重要です。

結論

本記事では、使用ポリシーに準拠するためのコンテンツモデレーションの概念について探求しました。また、モデレーションAPIを活用してユーザーが生成したプロンプトとGPTが生成した応答を評価し、ルールやガイドラインに適合するようにする方法についても説明しました。また、本番環境にシステムを展開する前に検討すべき推奨される次のステップや安全なベストプラクティスについても議論しました。

このチュートリアルが、大規模な言語モデルを活用しながら安全で敬意を持った環境の作成を優先することについて、皆さんにインスピレーションを与えることを願っています。ご覧いただいたように、わずかな関数だけで提供されたコンテンツ内の違反を効果的に特定し、システムを改善することができました。

🍓もしこのような記事を読んで楽しんでいただける場合、私の執筆をサポートしていただくためにVoAGIメンバーになることを検討していただければと思います!VoAGIメンバーは、すべてのライターの記事に完全アクセスできますし、私の紹介リンクを使用すると、直接私の執筆をサポートすることができます。

🍓すでにメンバーであり、私の記事を読みたい場合は、通知を受けるために購読するか、VoAGIで私をフォローしてください。ご質問や提案があれば、お知らせください。

この記事の後におすすめの追加リソース:

前述のように、プロンプトエンジニアリングに関する私の記事もチェックすることをおすすめします。

ChatGPTのポテンシャルを引き出すためのプロンプトエンジニアリングのマスタリング

ベストプラクティスを探索し、結果を向上させるためのプロンプトの強化

towardsdatascience.com

参考文献

  1. OpenAI使用ポリシー
  2. OpenAIモデレーションエンドポイント
  3. OpenAI安全なベストプラクティス
  4. ヘッダー写真:Joshua Kettle氏撮影、Unsplashより

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

「ReactJSとChatGPT:ウェブアプリに対話型AIを構築する方法」

Kono burogu de wa, ChatGPT o ReactJS apurikēshon ni tōgō suru koto no kanōsei to riten, soshite sore o okonau hōhō ni...

AIニュース

「Google Chromeは、努力を要さずに読むことができるAIによる記事の要約を表示するようになりました」

Googleは、AIを活用したSearch Generative Experience(SGE)により、再びイノベーションの最前線に立っています。このテック...

データサイエンス

「枝は何も必要ありません:私たちの主観的なMLバージョニングフレームワーク」

「Gitブランチを使用したMLプロジェクトのバージョニングを簡素化し、ワークフローをシンプルにし、データとモデルを整理し、...

AI研究

スタンフォード大学の新しい人工知能研究は、説明が意思決定時のAIシステムへの過度の依存を軽減する方法を示しています

近年の人工知能(AI)のブームは、AIの能力によって仕事がより速く、より少ない労力で行われることによって、人間の生活がど...

機械学習

ロボットが「グリップ」のアップグレードを取得:AO-Graspがロボットに物を落とさない技術を教えます!

近年、ロボットは製造業から医療まで、様々な産業でますます使用されています。しかし、彼らのタスクを遂行する効果は、環境...

人工知能

AIにおいて大胆であることは、最初から責任を持つことを意味します

GoogleのJames Manyika氏は、Googleが人々と社会に利益をもたらすためにAIを責任ある形で適用する方法について話しています