Skip to main content
これはインタラクティブ ノートブックです。ローカルで実行するか、以下のリンクを使用できます。

PII データで Weave を使用する方法

このガイドでは、個人を特定できる情報 (PII) データのプライバシーを保ちながら、W&B Weave を使用する方法を学びます。このガイドでは、PII データを特定し、マスクし、匿名化するための以下の方法を紹介します。
  1. PII データを特定してマスクするための正規表現
  2. Python ベースのデータ保護 SDK である Microsoft の Presidio。このツールでは、マスキングと置換の機能を利用できます。
  3. 偽データを生成する Python ライブラリ Faker。Presidio と組み合わせることで、PII データを匿名化できます。
さらに、PII のマスキングと匿名化をワークフローに統合するために、weave.op input/output logging customizationautopatch_settings の使い方も学びます。詳細は、Customize logged inputs and outputsを参照してください。 開始するには、以下の手順に従ってください。
  1. Overview セクションを確認します。
  2. prerequisites を完了します。
  3. PII データの特定、マスキング、匿名化に使用できる available methods を確認します。
  4. Apply the methods to Weave calls を確認します。

概要

以下のセクションでは、weave.op を使用した入出力のロギングの概要と、Weave で PII データを扱う際のベストプラクティスを紹介します。

weave.op を使用して入力と出力のロギングをカスタマイズする

Weave Ops では、入力と出力の後処理関数を定義できます。これらの関数を使用すると、LLM call に渡すデータや Weave にログされるデータを変更できます。 次の例では、2 つの後処理関数を定義し、それらを weave.op() の引数として渡します。

PII データで Weave を使用する際のベストプラクティス

PII データで Weave を使用する前に、以下のベストプラクティスを確認してください。

テスト時

  • PII の検出を確認するため、匿名化したデータをログする
  • Weave トレースで PII の処理プロセスをトラッキングする
  • 実際の PII を露出させずに、匿名化のパフォーマンスを測定する

本番環境では

  • 未加工のPIIは絶対にログしない
  • ログする前に機微なフィールドを暗号化する

暗号化のポイント

  • 後で復号する必要があるデータには、可逆暗号化を使用します
  • 元に戻す必要のない一意の ID には、一方向ハッシュを使用します
  • 暗号化したまま分析する必要があるデータには、専用の暗号化方式の利用を検討します

事前準備

  1. まず、必要なパッケージをインストールします。
  1. 次の場所でAPIキーを作成します:
  1. Weaveプロジェクトを初期化します。
  1. 10 個のテキストブロックを含むデモ用 PII データセットを読み込みます。

マスキング方法の概要

セットアップ を完了したら、次のことができます PII データを検出して保護するために、以下の方法で PII データを特定してマスクし、必要に応じて匿名化します。
  1. 正規表現を使用して PII データを特定し、マスクします。
  2. Microsoft Presidio。マスキングと置換の機能を備えた、Python ベースのデータ保護 SDK です。
  3. Faker。偽データを生成するための Python ライブラリです。

Method 1: 正規表現でフィルターする

正規表現 (正規表現) は、PII データを特定してマスクするための最もシンプルなmethodです。正規表現 を使うと、電話番号、メールアドレス、社会保障番号などの機密情報のさまざまな形式に一致するパターンを定義できます。正規表現 を使えば、より複雑な NLP 手法を使わなくても、大量のテキストをスキャンして情報を置き換えたりマスクしたりできます。
サンプルテキストを使ってこの関数をテストしてみましょう:

方法 2: Microsoft Presidio を使用してマスクする

次の方法では、Microsoft Presidio を使用して PII データを完全に除去します。Presidio は PII をマスクし、PII のタイプを表すプレースホルダーに置き換えます。たとえば、Presidio は "My name is Alex" 内の Alex<PERSON> に置き換えます。 Presidio では、一般的な Entities が標準でサポートされています。以下の例では、PHONE_NUMBERPERSONLOCATIONEMAIL_ADDRESSUS_SSN のいずれかに該当するすべての Entities をマスクします。Presidio による処理は関数にまとめられています。
サンプルテキストを使って、この関数をテストしてみましょう:

method 3: Faker と Presidio を使用した置換による匿名化

テキストをマスクする代わりに、Faker Python ライブラリで生成したダミーデータを使用し、MS Presidio で名前や電話番号などの PII を置き換えて匿名化できます。たとえば、次のようなデータがあるとします。 "My name is Raphael and I like to fish. My phone number is 212-555-5555" Presidio と Faker を使用してデータを処理すると、次のようになります。 "My name is Katherine Dixon and I like to fish. My phone number is 667.431.7379" Presidio と Faker を効果的に併用するには、独自のオペレーター への参照を指定する必要があります。これらのオペレーター は、PII をダミーデータに置き換える役割を持つ Faker の function を Presidio が使用できるようにします。
コードを1つのクラスにまとめ、Entitiesの一覧に、先ほど特定した追加項目も含めましょう。
サンプルテキストでこの関数をテストしてみましょう:

Method 4: autopatch_settings を使用する

autopatch_settings を使用すると、サポートされる1つ以上のLLMインテグレーションについて、初期化時にPII処理を直接設定できます。この方法の利点は次のとおりです。
  1. PII処理ロジックを初期化時に一元化して適用できるため、各所に分散したカスタムロジックの必要性を減らせます。
  2. PII処理のワークフローは、特定のインテグレーションごとにカスタマイズしたり、完全に無効化したりできます。
autopatch_settings を使用してPII処理を設定するには、サポートされるLLMインテグレーションのいずれかについて、op_settingspostprocess_inputs および/または postprocess_output を定義します。

メソッドを Weave calls に適用する

以下の例では、PII のマスキングおよび匿名化のメソッドを Weave Models に統合し、その結果を Weave トレース で確認します。 まず、Weave Model を作成します。Weave Model は、設定、モデルの重み、モデルの動作を定義するコードなどの情報を組み合わせたものです。 このモデルには、Anthropic API を呼び出す predict 関数を含めます。トレース を使用して LLM calls をトレースしながら、Anthropic の Claude Sonnet で感情分析を実行します。Claude Sonnet はテキストブロックを受け取り、次の感情分類のいずれか 1 つを出力します: positivenegative、または neutral。さらに、PII データが LLM に送信される前にマスクまたは匿名化されるようにするため、後処理関数も含めます。 このコードを実行すると、Weave のプロジェクトページへのリンクと、実行した特定のトレース (LLM calls) へのリンクが表示されます。

Regex method

最も単純なケースでは、regex を使用して元のテキスト内の PII データを検出し、マスクできます。

Presidio を使用したマスキング method

次に、Presidio を使用して元のテキスト内の PII データを特定し、マスクします。
特定された PII Entities とマスク済みテキスト出力を示す Presidio の PII マスキングプロセス

Faker と Presidio の置換 method

この例では、Faker を使用して匿名化された置換用の PII データを生成し、Presidio を使用して元のテキスト内の PII データを特定し、置換します。
元のテキスト、特定された PII、匿名化された置換値を含む、Faker と Presidio の PII 置換プロセス

autopatch_settings method

次の例では、初期化時に anthropicpostprocess_inputspostprocess_inputs_regex() 関数() に設定します。postprocess_inputs_regex 関数は、Method 1: Regular Expression Filtering で定義された redact_with_regex method を適用します。これにより、redact_with_regex がすべての anthropic モデルへの入力に適用されます。

(任意) データを暗号化する

暗号化されたテキスト出力と暗号鍵管理を含むPIIデータ暗号化プロセス
PII の匿名化に加えて、cryptography ライブラリの Fernet 対称暗号化を使ってデータを暗号化することで、セキュリティをさらに高められます。この方法では、匿名化したデータが傍受された場合でも、暗号鍵がなければ内容を読み取ることはできません。