前回の記事ではキーワードマッチで入力されたプロンプトを確認し、外部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桁の〜
に置き換わっていることがわかります。


