Dev Classmethod Jp Articles Litellm Dynamic Content Filter
LiteLLM Proxyで生成AIによる動的コンテンツフィルターを実装してみた
- URL: https://dev.classmethod.jp/articles/litellm-dynamic-content-filter/
- 日付: 2026-06-05
- Tier: Tier 3
- 要旨: LLM自体を判定エンジンとして使うセマンティックフィルターを LiteLLM の CustomGuardrail として実装。「来期のA社向けプロジェクト予算は5000万」のような業務コンテキスト依存の機密情報を、Bedrock Guardrailsの固定カテゴリでは検出できない問題をLLMの文脈理解で補完。
詳細
- アーキテクチャ: リクエスト → LiteLLM Proxy →
async_pre_call_hookで Claude Haiku 4.5 に判定させる → ブロック/通過 → 本体LLMへ転送 - 判定モデル: Bedrock Structured Output(Pydantic →
outputConfig.textFormat)でis_blocked / reason / violated_policyを構造化返却。フォーマット不一致エラーを最小化 - ポリシー定義: JSONファイルに自然言語でルールを記述(
standard/strictレベルに分割)。エンジニア以外でも読み書き可能 - 標準ポリシー例: 「個人情報を含むメッセージを禁止」「未公開製品情報・予算・顧客との契約条件の送信を禁止」
- Bedrock Guardrailsとの比較:
- Guardrails: キーワード/パターンマッチ、低レイテンシ(数十ms)、固定カテゴリ
- LLMフィルター: 意味ベース検出、LLM呼び出し分のレイテンシ追加、自然言語ポリシー
- 評価: 両者は排他でなく重ねがけ可能。Haiku は低コストなため運用コストも抑制可能