💡
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