コンテンツモデレーション

Dify にはシステムに内蔵された内容審査タイプの他に、ユーザーが独自にカスタマイズした内容審査ルールを拡張する機能もあります。この方法は、プライベートデプロイ環境での開発者向けにカスタム開発が可能です。例えば、企業内部のカスタマーサポートにおいて、ユーザーが問い合わせを行う際やカスタマーサポートが返信する際に、暴力、性、違法行為などの関連用語を入力してはならないといった規定に加え、企業が独自に定めた禁則語や内部の審査ロジックに違反する内容も含めないようにすることができます。このような場合、開発者はプライベートデプロイ環境の Dify コード層で独自の内容審査ルールを拡張できます。

クイックスタート

ここでは、Cloud Service 内容審査拡張を例にとって、以下の手順を説明します:

  1. ディレクトリの初期化

  2. フロントエンドコンポーネント定義ファイルの追加

  3. 実装クラスの追加

  4. フロントエンド画面のプレビュー

  5. 拡張機能のデバッグ

1. ディレクトリの初期化

新しいカスタムタイプ Cloud Service を追加するには、api/core/moderation ディレクトリ内に関連するディレクトリとファイルを新規作成します。

.
└── api
    └── core
        └── moderation
            └── cloud_service
                ├── __init__.py
                ├── cloud_service.py
                └── schema.json

2. フロントエンドコンポーネント規格の追加

  • schema.json ここでは、フロントエンドコンポーネントの規格を定義しています。詳細は コード拡張 を参照してください。

3. 実装クラスの追加

cloud_service.py のコードテンプレートです。ここで具体的なビジネスロジックを実装できます。

4. 拡張機能のデバッグ

ここまでで、Dify のアプリケーションオーケストレーション画面でカスタム クラウドサービス 内容審査拡張タイプを選択してデバッグすることができます。

実装クラステンプレート

実装クラスの詳細説明

def validate_config

schema.json フォーム検証方法、ユーザーが「公開」をクリックして設定を保存するときに呼び出される

  • config フォームパラメータ

    • {{variable}} フォームカスタム変数

    • inputs_config 入力検証プリセット応答

      • enabled 有効化

      • preset_response 入力プリセット応答

    • outputs_config 出力検証プリセット応答

      • enabled 有効化

      • preset_response 出力プリセット応答

def moderation_for_inputs

入力検証関数

  • inputs :エンドユーザーによって渡された変数値

  • query :エンドユーザーが現在入力している内容、対話型アプリケーションの固定パラメータ。

  • ModerationInputsResult

    • flagged 検証ルールに違反しているかどうか

    • action 実行動作

      • direct_output プリセット応答を直接出力

      • overridden 渡された変数値を上書き

    • preset_response プリセット応答(action=direct_outputの場合のみ返される)

    • inputs エンドユーザーによって渡された変数値、キーは変数名、値は変数値(action=overriddenの場合のみ返される)

    • query 上書きされたエンドユーザーの現在の入力内容、対話型アプリケーションの固定パラメータ(action=overriddenの場合のみ返される)

def moderation_for_outputs

出力検証関数

  • text:{モデル出力}内容

  • moderation_for_outputs:出力検証関数

    • text:LLM回答内容。LLMの出力が{ストリーミング出力}の場合、これは100文字ごとの分割内容である。

    • ModerationOutputsResult

      • flagged 検証ルールに違反しているかどうか

      • action 実行動作

        • direct_output プリセット応答を直接出力

        • overridden 渡された変数値を上書き

      • preset_response プリセット応答(action=direct_outputの場合のみ返される)

      • text 上書きされたLLM回答内容(action=overriddenの場合のみ返される)

Last updated