メインコンテンツへスキップ
アプリケーションで LLM プロバイダのライブラリ (OpenAI、Anthropic、Cohere、Mistral など) を使用している場合、Weave は自動パッチ適用によって LLM Call をトレースします。weave.init() を呼び出すと、Weave はサポート対象の LLM クライアントライブラリをインターセプト (パッチ適用) します。アプリケーションコードを変更する必要はありません。通常どおりプロバイダの SDK を使用するだけで、Weave が各リクエストを Weave Call として記録します。 このページでは、この動作をいつどのように変更するかを説明します。自動トラッキングを無効にする方法、特定のプロバイダのみに制限する方法、入力と出力を後処理する方法 (たとえば PII をマスクする場合) を扱います。

デフォルトの動作

デフォルトでは、Weave は openaianthropic などの一般的な LLM ライブラリへの call を自動的にパッチしてトラッキングします。プログラムの開始時に weave.init(...) を呼び出し、それらのライブラリは通常どおり使用してください。これらの calls は、プロジェクトのトレースに表示されます。

自動パッチ適用を設定する

以下のセクションでは、Python と TypeScript で自動パッチ適用を有効化、無効化、または微調整する方法を説明します。お使いの SDK に対応するタブを選択してください。
autopatch_settings 引数は非推奨です。暗黙的なパッチ適用を無効にするには implicitly_patch_integrations=False を使用するか、patch_openai(settings={...}) のような特定のパッチ関数を呼び出してインテグレーションごとに設定してください。
Weave は、サポートされているすべてのインテグレーションに対して、デフォルトで暗黙的な自動パッチ適用を行います。暗黙的パッチ適用 (自動) : Weave は、ライブラリをいつ import したかに関係なく、自動的にパッチを適用します。
# オプション 1: weave.init() の前に import する
import openai
import weave
weave.init('your-team-name/your-project-name')  # OpenAI は自動的にパッチ適用されます。

# オプション 2: weave.init() の後に import する
import weave
weave.init('your-team-name/your-project-name')
import anthropic  # import hook により自動的にパッチ適用されます。
暗黙的パッチ適用を無効にする: 明示的に制御したい場合は、自動パッチ適用をオフにできます。
import weave

# オプション 1: settings パラメーターを使用する
weave.init('your-team-name/your-project-name', settings={'implicitly_patch_integrations': False})

# オプション 2: 環境変数を使用する
# スクリプトを実行する前に WEAVE_IMPLICITLY_PATCH_INTEGRATIONS=false を設定します

# 暗黙的パッチ適用が無効な場合は、インテグレーションに明示的にパッチを適用する必要があります
import openai
weave.patch_openai()  # OpenAI のトレースに必要になります
明示的パッチ適用 (手動) : より細かく制御するために、インテグレーションに明示的にパッチを適用できます。これは、暗黙的パッチ適用がオフの場合や、一部のプロバイダだけをトレースしたい場合に便利です。
import weave
weave.init('your-team-name/your-project-name')
weave.integrations.patch_openai()  # OpenAI のトレースを有効化
weave.integrations.patch_anthropic()  # Anthropic のトレースを有効化
前述のコードを実行すると、Weave は明示的にパッチを適用したプロバイダのみをトレースします。

入力と出力を後処理する

パッチ適用のオン/オフを切り替えるだけでなく、各呼び出しについて Weave が記録する内容を変換することもできます。パッチ関数に設定を渡すことで、Weave による入力と出力の記録方法をカスタマイズできます (たとえば、PII やシークレットをマスクする場合など) 。
import weave.integrations

def redact_inputs(inputs: dict) -> dict:
    if "email" in inputs:
        inputs["email"] = "[REDACTED]"
    return inputs

weave.init(...)
weave.integrations.patch_openai(
    settings={
        "op_settings": {"postprocess_inputs": redact_inputs}
    }
)
機密データの処理について詳しくは、How to use Weave with PII data を参照してください。