OpenAI GPT-3 APIのコンテンツをチェックする moderation endpoint 

以下の記事でも紹介しましたが、OpenAIのモデルはAPIを利用することで、誰でも簡単にAIアプリケーションを開発することができます。一方、発展途上のAI技術の利用には、多くの社会的問題が含まれているのも事実です。特に、最新のモデルは人間の回答と間違うほどの精度なので、より慎重な利用が必要です。これらの問題は、アプリケーションを開発する開発者が対応すべき問題だと考えます。

OpenAI 文章生成モデルGPT−3のAPIを使ってみる

OpenAIのGPT-3の性能が話題となっています。Playgroundを使った利用に関しては、以下の記事を参照してください。 今回は、GPTの最新モデル(text-davinci-003)を使って、Ch…

OpenAI 利用規約

2023年2月15日に利用規約が更新されました。以下の記事は以前の規約について説明しています。
常に最新の規約をご確認ください。<利用規約
moderation endpointの使い方については変更ないようです。

当然ですが、Open AIのAPIを使うときにはOpenAIの利用規約を守らなければなりません。これは、OpenAIと開発者との約束事ではありますが、その目的は大切なエンドユーザーを守るためのものだと考えます。

OpenAIの利用規約の一部をGoogle翻訳を使って和訳しました。(原文はこちらですので、確認してください)

利用規約

誰もが安全かつ責任を持って API を使用できるようにしたいと考えています。そのために、ユースケースとコンテンツ ポリシーを作成しました。それらに従うことで、私たちのテクノロジーが確実に有効に使用されるようにすることができます。

製品がこれらのポリシーに従っていないことが判明した場合は、必要な変更を行うようお願いします。従わない場合は、アカウントの停止を含むさらなる措置を講じる場合があります。

https://platform.openai.com/docs/usage-policies

ユースケース ポリシー

次のユースケースを対象とする製品の構築は禁止されています。

  • 違法または有害な産業
  • 個人データの悪用
  • 不正行為の助長
  • ユーザーの欺瞞または操作
  • 政治に影響を与えようとする

刑事司法、法執行機関、法律、政府および公務員、医療、治療、ウェルネス、コーチング、金融、ニュースなどの一連のユース ケースでは、潜在的な危害のリスクが高くなります。これらのユースケースでは、次のことを行う必要があります。

  1. ユースケースでモデルの正確性を徹底的にテストし、制限についてユーザーに透明性を持たせます
  2. チームがドメインの専門知識を持ち、関連する法律を理解し、遵守していることを確認してください
https://platform.openai.com/docs/usage-policies/use-case-policy

コンテンツ ポリシー

また、お客様またはアプリケーションのエンドユーザーが次の種類のコンテンツを生成することも許可していません。

  • ヘイト
    • アイデンティティに基づいて憎悪を表現、扇動、助長するコンテンツ
  • 嫌がらせ
    • 個人への嫌がらせ、脅迫、またはいじめを目的とするコンテンツ
  • 暴力
    • 暴力を助長または美化するコンテンツ、または他人の苦しみや屈辱を称賛するコンテンツ
  • 自傷
    • 自殺、切断、摂食障害などの自傷行為を助長、助長、または描写するコンテンツ
  • 性的
    • 性行為の説明など、性的興奮を喚起することを意図したコンテンツ、または性的サービスを促進するコンテンツ (性教育と健康を除く)
  • 政治的
    • 政治プロセスに影響を与えようとするコンテンツ、またはキャンペーン目的で使用するコンテンツ
  • スパム
    • 未承諾のバルク コンテンツ
  • 欺くこと
    • 個人をだまそうとしている、または偽情報を広めようとしているなど、虚偽または誤解を招くコンテンツ
  • マルウェア
    • ランサムウェア、キーロガー、ウイルス、または何らかの害を与えることを意図したその他のソフトウェアを生成しようとするコンテンツ

無料のモデレート エンドポイント安全性のベスト プラクティスを使用して、アプリを安全に保つことができます。

ユースケースポリシーは、アプリケーションの仕様に関わるポリシーです。最初に挙げられているような”あきらかに悪意のある”ものだけではなく、APIからの意図しないレスポンスによって発生する危害のリスクについても言及されています。安全性のベスト プラクティスを参考に、設計、テストを実施する必要があります。

一方、コンテンツポリシーは、APIの入出力となるコンテンツに関するポリシーです。こちらは、チェックするためのツールが用意されているので、ツールの使用方法について確認しておきます。

Moderation endpoint

コンテンツの安全性を確認するツールとして、以前はContent filter modelが提供されていましたが、現在では、 moderation endpointを使うことが推奨されています。

OpenAIの利用規約に従うためには、開発者はこのツールを使ってフィルタリング処理をアプリケーションに組み込む必要がありそうです。

Create moderation サンプルコード

記載されているcurlのコマンドをPythonに変換して実行しました。Google Colaboratoryで実行しています。

import requests
import json

url = "https://api.openai.com/v1/moderations"

payload = json.dumps({
  "input": "みんな死んでしまえばいいんだ!"
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer <Your OpenAI API key>'
}

response = requests.request("POST", url, headers=headers, data=payload)

data=json.loads(response.text)
print(json.dumps(data, indent=4 ))

結果は、以下の通りです。

{
    "id": "modr-6hD0SE24WNHSgm1BY38OopZRkSgPq",
    "model": "text-moderation-004",
    "results": [
        {
            "flagged": true,
            "categories": {
                "sexual": false,
                "hate": false,
                "violence": true,
                "self-harm": false,
                "sexual/minors": false,
                "hate/threatening": false,
                "violence/graphic": false
            },
            "category_scores": {
                "sexual": 2.9463499231496826e-06,
                "hate": 0.18025097250938416,
                "violence": 0.9687370657920837,
                "self-harm": 0.0037366412580013275,
                "sexual/minors": 2.4525606434622205e-08,
                "hate/threatening": 0.012519133277237415,
                "violence/graphic": 4.8055912884592544e-06
            }
        }
    ]
}

violenceがtrueとなり、このコンテンツはコンテンツポリシーに違反していることとなります。

なお、結果のモデルが"text-moderation-004"となっていますが、デフォルトで、最新のモデル(text-moderation-latest)が適応されるとのことです。