コンテンツにスキップ
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 は低コストなため運用コストも抑制可能