🙅
【OpenAI】ModerationAPIでテキストから「有害なカテゴリ」を検出する。
今回はOpenAIの「ModerationAPI」を使って、テキストのフィルタを作ります。
実装にはLangChain(JavaScript)を使用しています。
【関連】
→ 【Natural Language API】テキストから「有害なカテゴリ」を検出する。
→ 【Azure】Content Safetyでテキストから「有害なカテゴリ」を検出する。
「OpenAI Moderation API」とは
「入力テキスト」から、各カテゴリごと「違反ステータス」と「信頼スコア」 を算出してくれます。
- 違反ステータス
status
→ OpenAI ポリシーに違反しているかどうか - 信頼スコア
score
→ OpenAI ポリシーに違反しているかどうかの信頼度(範囲: 0~1)
料金
無料
検出カテゴリ
APIカテゴリ | 日本語 | 説明 |
---|---|---|
harassment | ハラスメント | 嫌がらせ |
harassment/threatening | ハラスメント | 嫌がらせ(暴力や重大な危害を含む) |
hate | ヘイト | 憎悪を促進または扇動するコンテンツ(下記に基づく) - 人種 - 性別 - 民族 - 宗教 - 国籍 - 性的指向 - 障碍の状態 - カースト |
hate/threatening | ヘイト | 憎悪コンテンツ(暴力や重大な危害を含む) |
illicit | 違法性 | 違法行為を計画/実行を奨励するコンテンツ(非暴力的) |
illicit/violent | 違法性 | 違法行為を奨励するコンテンツ(暴力や武器の調達を含む) |
self-harm | 自傷行為 | 自傷行為を促進するコンテンツ - 自殺 - 切り傷 - 摂食障害など |
self-harm/intent | 自傷行為 | 自傷行為を行っている/行う意図があることを表現するコンテンツ |
self-harm/instructions | 自傷行為 | 自傷行為の実行を促進する/方法を教えるコンテンツ |
sexual | 性的 | 性的な興奮を促すコンテンツや性的サービスを促進するコンテンツ |
sexual/minors | 性的 | 18歳未満の個人を含む性的コンテンツ |
violence | 暴力 | 死、暴力、身体的な怪我を描写するコンテンツ |
violence/graphic | 暴力 | 死、暴力、身体的な怪我を詳細に描写するコンテンツ |
(参考: Moderation - OpenAI API)
実装の手順
準備するもの
-
OpenAIのAPIキー
-
flagged
: 最終判定(コンテンツがポリシー違反かどうか) -
categories
: カテゴリ別の違反フラグ -
category_scores
: カテゴリ別の違反スコア
パッケージをインストールする
$ npm install langchain
テキスト検出する関数を作る
出力例
[
{
"flagged": false,
"categories": {
"sexual": false,
"hate": false,
"harassment": false,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"harassment/threatening": false,
"violence": false
},
"category_scores": {
"sexual": 0.01453140564262867,
"hate": 0.0004115582269150764,
"harassment": 0.007005975116044283,
"self-harm": 0.0000012179833674963447,
"sexual/minors": 0.00006585591472685337,
"hate/threatening": 8.443232957233704e-8,
"violence/graphic": 0.0000025433505470573436,
"self-harm/intent": 3.8682571812387323e-7,
"self-harm/instructions": 3.710599116857338e-7,
"harassment/threatening": 6.406222610166878e-7,
"violence": 0.000051075701776426286
}
}
]
Discussion