地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

オープンソースのPresidioで簡単なガードレールを実装してみる

AIエージェントに検索をさせる場合、クエリに個人情報やトークンが勝手に送信されないような工夫を実施してみます。今回は、Microsoftが開発した個人特定情報(PII)の検出・匿名化用オープンソースフレームワーク「Presidio」の実装をテストしてみます。
なお、検索側にはSearXNGを利用しますが、契約したAPIの利用など、各エンジンの利用規約に注意してご利用ください。

 

github.com

 

microsoft.github.io

 

利用するライブラリは以下になります。

presidio-analyzer
presidio-anonymizer

 

テキスト(クエリ)解析には、spaCyを用いているようです。デフォルトではpresidioは英語(en_core_web_lg)のモデルを使います。日本語モデル(ja_core_news_lg)を利用すれば日本語にも対応できます。日本語の場合は、「日本語(ja)」の設定に加え、分かち書きのためにsudachiも必要となります。

 

さらに精度を上げたい場合、今どきのGPUであればBERTベースのカスタムモデルをローカルでファインチューニングすることも簡単にできます。また、このライブラリは、固有表現抽出(NER)だけでなく、パターン認識(Regex)もマッチングでの排除もできますし、匿名化処理もできます。なにより、ローカルLLMを使うよりも軽量です。

 

プロンプトインジェクション検知機能はありませんが、プロンプトインジェクションにありがちな表現をNER学習させてしまえば、同じ要領で高速なフィルタリングが可能だと考えます。

 

ちなみに、LLMの外部ツール接続規格である「MCP」でツールを公開する場合は、LLM向けのdescription(説明文)に「秘密情報は入力しないでね」と明記するようにしています。お守りですね。

 

解析に利用されているspaCyは、長く開発されてきた言語処理ライブラリで安定感があります。

spacy.io

 

 

作ってみたものはこちら

github.com