LLM-Shield — LLM向けプライバシープロキシ
概要
LLM-Shieldは、生成AIを組み込むアプリケーションが扱う個人情報の漏洩リスクを下げるための「プライバシープロキシ」です。クライアントとプロバイダ(OpenAI、Azure など)の間に入ってリクエストを検査し、PII(氏名、住所、クレジットカード番号、メールアドレス等)を検知してマスク置換します。さらに、機微な内容に対してはローカルにホストしたLLMへルーティングすることも可能で、外部送信を回避できます。ダッシュボードや設定でポリシーを管理し、DockerでのデプロイやCIによる検証が用意されています。
リポジトリの統計情報
- スター数: 48
- フォーク数: 1
- ウォッチャー数: 48
- コミット数: 3
- ファイル数: 17
- メインの言語: TypeScript
主な特徴
- PII検出とマスク:送信前に個人情報を検出して自動的に置換・隠蔽する「Mask Mode」を提供
- センシティブルーティング:機微なリクエストは外部ではなくローカルLLMへルーティング可能
- 運用向けUI:ダッシュボード(スクリーンショットあり)でポリシーやステータスを確認
- コンテナ化&CI:DockerfileとGitHub Actionsを備え、簡単にデプロイ・検証可能
技術的なポイント
LLM-ShieldはTypeScriptで実装されたプロキシサーバーで、HTTPリクエストのペイロード(プロンプトやメタデータ)をインターセプトして処理します。コアの流れは大きく3つに分かれます。まず、受信した入力を解析しPII検出ルール(正規表現や辞書、文脈ベースの検出)でセンシティブな要素を特定します。次に、検出された要素をトークン化またはプレースホルダで置換する「Mask Mode」を適用し、元情報を復元できるマッピングを内部で管理する設計が想定されます。最後に、リクエストの感度判定に応じて外部プロバイダへ送信するか、ローカルでホストするモデル(オンプレ/エッジLLM)へルーティングするかを決定します。
実装面ではTypeScriptの利点を活かし、型安全なルール定義や設定の扱いを行います。Dockerfileが含まれているため、コンテナ化してAPIゲートウェイ前段に配置することで既存システムへの組み込みが容易です。CLAUDE.mdなどのファイルからAnthropic系やOpenAI系それぞれのAPIや認証フローへの対応を想定でき、プロバイダ固有のレスポンス形式に合わせた入出力の正規化機構を持つことが期待されます。
運用上の配慮としては、マスクの過剰適用によるモデルの理解度低下や、マスク解除(復元)を行う際のセキュリティ・鍵管理、ローカルLLMの性能・コスト・レイテンシーをどう評価するかがポイントです。ログやメトリクスは監査・トラブルシュートに重要なので、CIやダッシュボードと連携して運用体制を整えると良いでしょう。設計はプライバシー重視でありつつ、実運用でのパフォーマンスとカバレッジ(誤検出・見逃し)とのバランスを取ることが求められます。(約700字)
プロジェクトの構成
主要なファイルとディレクトリ:
- .github: dir
- .gitignore: file
- CLAUDE.md: file
- CONTRIBUTING.md: file
- Dockerfile: file
…他 12 ファイル
(READMEにダッシュボード画像やCIバッジがあり、LICENSEはApache 2.0)
まとめ
プライバシー重視のLLM導入に有用なプロキシで、オンプレとクラウドを組み合わせた実務的な保護を提供します。(50字)
リポジトリ情報:
- 名前: llm-shield
- 説明: Privacy proxy for LLMs. Masks PII before sending to your provider or routes sensitive requests to local LLM.
- スター数: 48
- 言語: TypeScript
- URL: https://github.com/sgasser/llm-shield
- オーナー: sgasser
- アバター: https://avatars.githubusercontent.com/u/850416?v=4
READMEの抜粋:
🛡️ LLM-Shield
Privacy proxy for LLMs. Masks personal data before sending to your provider (OpenAI, Azure, etc.), or routes sensitive requests to local LLM.
Mask Mode (Default)
Replaces perso…