💡

Dify のコードブロックでPythonスクリプトによるモデレーションを実装する

に公開

前回の記事ではキーワードマッチで入力されたプロンプトを確認し、外部LLMに訪ねてはいけないキーワードが含まれていた場合、問い合わせを停止させる方法を試してみました。

しかしキーワードマッチでは中々全てのルールを指定することは難しく、正規表現マッチやその他複数条件の指定など行えた方がより安全なモデレーションを実装できます。

Difyにはコードブロックというものが準備されておりそこでPythonを実行させることができます。

さっそくやってみる

まずは、スタジオ最初から作成をクリックします。

チャットフローを選択します。

前回の記事でテストを行ったチャットがワークフローとして生成されています。

ブロックを追加をクリックしてコードブロックをLLMブロックの前に挟みます。


コード実行ブロックをクリックし以下の様に設定を行います。

sys.queryはユーザーが入力したプロンプトです。これをuser_input変数にマッピングします。

import re
pattern = re.compile(r"\d{16}")
def main(user_input: str) -> dict:
    if pattern.search(user_input):
        return {"result": ":x:16桁の〜"}
    else:
        return {"result": f"{user_input}"}

例えば入力されたプロンプトに16桁の数字が含まれていた場合プロンプトをエラーメッセージに書き換えています。
次にLLMブロックで入力をsys.queryからresultに書き換えます。

ユーザーが入力した1234567890123456という数字が:x:16桁の〜に置き換わっていることがわかります。


Discussion