


Ops
@weave.op()(Python)でデコレートするか、weave.op()(TypeScript)でラップすると、Weave がその関数のコード、入力、出力、実行時メタデータを自動的に取得します。Op はトレース、評価用スコアラー、そして追跡対象となるあらゆる計算の基本要素です。
Calls
- 入力引数
- 出力値
- 実行時間とレイテンシ
- (ネストされた Call における)親子関係
- 発生したエラー
- Trace(同じ実行コンテキスト内の Call の集合)に属する
- 親と子の Call を持ち、木構造を形成する
Call の作成
1. 一般的な LLM ライブラリの自動トラッキング
- Python
- TypeScript
Weave は、
openai、anthropic、cohere、mistral などの一般的な LLM ライブラリへの呼び出しを自動的にトラッキングします。プログラムの冒頭で weave.init('project_name') を呼び出すだけです。summary 辞書に保存できます。実行中に call.summary を変更すると、追加した値は、呼び出し完了時に Weave が計算したサマリーデータとマージされます。
2. 関数のデコレートとラップ
- Python
- TypeScript
実行中に Call オブジェクトへのハンドルを取得する
- Python
- TypeScript
Call オブジェクト自体へのハンドルが必要になることがあります。これは op.call メソッドを呼び出すことで取得できます。このメソッドは、結果と Call オブジェクトの両方を返します。例えば次のようにします:call を使って追加のプロパティを設定・更新・取得できます(もっとも一般的な用途は、フィードバックに利用する call の ID を取得することです)。op がクラスのメソッドである場合、インスタンスを op への最初の引数として渡す必要があります(下の例を参照してください)。
実行時にコールの表示名を設定する
- Python
- TypeScript
コールの表示名を上書きしたい場合があります。これは次の 4 つの方法のいずれかで行えます。
opを呼び出すタイミングで表示名を変更する:
__weave 辞書を使用すると、コールの表示名が設定され、Op の表示名よりも優先されます。- コールごとに表示名を変更する。この方法では
Op.callメソッドを使ってCallオブジェクトを返し、その後Call.set_display_nameを使って表示名を設定します。
- 特定の Op に対するすべての Call の表示名を変更する:
-
call_display_nameは、Callオブジェクトを受け取り文字列を返す関数にすることもできます。関数が呼び出されるときにCallオブジェクトは自動的に渡されるため、関数名、コールの入力、フィールド、属性などに基づいて動的に名前を生成できます。 -
よくあるユースケースの 1 つは、関数名にタイムスタンプを付け足すことです。
-
.attributesを使ってカスタムメタデータを記録することもできます
@weave.op でデコレートされた関数またはメソッドです。
デフォルトでは、Op の名前は関数名となり、関連する Call も同じ表示名になります。上記の例は、特定の Op に対するすべての Call の表示名を上書きする方法を示しています。場合によっては、ユーザーが Op 自体の名前を上書きしたいこともあります。これは次の 2 つの方法のいずれかで実現できます。- いずれのコールも記録される前に、Op の
nameプロパティを設定する
- op デコレータで
nameオプションを設定する
並列(マルチスレッド)関数呼び出しをトレースする
- Python
- TypeScript
デフォルトでは、並列呼び出しはすべて Weave では別々のルート呼び出しとして表示されます。同じ親 Weave UI では、これにより 1 つの親呼び出しの下に 5 つの子呼び出しがネストされた形で表示されるため、インクリメントが並列で実行されていても、完全な階層構造のトレースが得られます。
op の下に正しくネストさせるには、ThreadPoolExecutor を使用します。次のコード例は、ThreadPoolExecutor の使用方法を示しています。
最初の関数 func は、x を受け取り x+1 を返す単純な op です。2 つ目の関数 outer は、入力リストを受け取る別の op です。
outer 内で ThreadPoolExecutor と exc.map(func, inputs) を使用することで、func への各呼び出しが同じ親トレースコンテキストを保持したまま実行されます。
3. Call の手動トラッキング
- Python
- TypeScript
- HTTP API
4. クラスおよびオブジェクトのメソッドの追跡
- Python
- TypeScript
クラスの任意のメソッドを
weave.op を使って追跡します。呼び出しの表示
- Web アプリ
- Python
- TypeScript
- HTTP API
Web アプリで呼び出しを表示するには、次の手順を実行します。
- プロジェクトの Traces タブに移動します。
- 一覧から表示したい呼び出しを探します。
- 呼び出しをクリックして詳細ページを開きます。

weave.Markdown を使ってレンダリングされるトレースをカスタマイズする
weave.Markdown を使用すると、元のデータを失うことなく、トレース情報の表示方法をカスタマイズできます。これにより、基盤となるデータ構造を保持しながら、入力と出力を読みやすい整形済みコンテンツのブロックとしてレンダリングできます。
- Python
- Typescript
@weave.op デコレータで postprocess_inputs と postprocess_output 関数を使用して、トレースデータのフォーマットを整えます。次のコードサンプルでは、ポストプロセッサを使って、Weave でのコールを絵文字付きで、より読みやすいフォーマットでレンダリングしています。
コールの更新

表示名を設定する
- Python
- TypeScript
- HTTP API
call の表示名を設定するには、
Call.set_display_name() メソッドを使用します。フィードバックを追加
Call を削除する
- Python
- TypeScript
- HTTP API
Python API を使用して Call を削除するには、
Call.delete メソッドを利用します。複数の Call を削除する
- Python
- TypeScript
Python API を使用して複数の Call を削除するには、Call ID のリストを
delete_calls() に渡します。Call のクエリ実行とエクスポート

/calls ページ(「Traces」タブ)には、そのプロジェクト内のすべての Call がテーブルビューで表示されます。ここから次の操作を行えます。
- ソート
- フィルタリング
- エクスポート

- Python
- TypeScript
- HTTP API
Python API を使って Call を取得するには、
client.get_calls メソッドを使用します。Call スキーマ
| Property | Type | Description |
|---|---|---|
id | string (uuid) | この call の一意な識別子 |
project_id | string (optional) | 関連付けられたプロジェクトの識別子 |
op_name | string | オペレーション名(参照を指す場合もあります) |
display_name | string (optional) | この call のわかりやすい名前 |
trace_id | string (uuid) | この call が属する trace の識別子 |
parent_id | string (uuid) | 親 call の識別子 |
started_at | datetime | call の開始時刻 |
attributes | Dict[str, Any] | call に関するユーザー定義メタデータ(実行中は読み取り専用) |
inputs | Dict[str, Any] | call の入力パラメータ |
ended_at | datetime (optional) | call の終了時刻 |
exception | string (optional) | call が失敗した場合のエラーメッセージ |
output | Any (optional) | call の結果 |
summary | Optional[SummaryMap] | 実行後のサマリー情報。実行中にこれを変更してカスタムメトリクスを記録できます。 |
wb_user_id | Optional[str] | 関連付けられた Weights & Biases ユーザー ID |
wb_run_id | Optional[str] | 関連付けられた Weights & Biases run ID |
deleted_at | datetime (optional) | 該当する場合の call 削除時刻 |
id、trace_id、parent_idフィールドは、システム内で call を整理し、相互に関連付けるのに役立ちます。- 時刻情報(
started_at、ended_at)により、パフォーマンス分析が可能になります。 attributesとinputsフィールドは call のコンテキストを提供します。attributesは call が開始すると固定されるため、weave.attributesを使って呼び出し前に設定してください。outputとsummaryは結果を保持し、実行中にsummaryを更新して追加のメトリクスを記録できます。- Weights & Biases とのインテグレーションは、
wb_user_idとwb_run_idを通じて行われます。
- コスト
- 所要時間
- ステータス
保存済みビュー
Traces テーブルで W&B run を表示する
@weave.op() で関数をトレースし、wandb.init() コンテキスト内で呼び出すと、Weave がトレースを自動的に該当する W&B run に関連付けます。
関連付けられた run へのリンクは Traces テーブルに表示されます。
- Python
- TypeScript
次の Python コードは、トレースされたオペレーションが このコードサンプルを使用するには、次の手順を実行します。
wandb.init() コンテキスト内で実行されたときに W&B
run にどのようにリンクされるかを示します。これらのトレースは Weave UI に表示され、対応する run に関連付けられます。- ターミナルで依存パッケージをインストールします:
- W&B にログインします:
- スクリプト内の
your-username/your-projectを、実際の W&B entity/project に置き換えます。 - スクリプトを実行します:
- https://weave.wandb.ai にアクセスし、自分のプロジェクトを選択します。
- Traces タブでトレース出力を確認します。関連付けられた run へのリンクが Traces テーブルに表示されます。
自動パッチの設定
openai、anthropic、cohere、mistral などの一般的な LLM ライブラリへの呼び出しを自動的にパッチして追跡します。
- Python
- TypeScript
よくある質問
大きなトレースが切り捨てられるのを防ぐにはどうすればよいですか?
トレースを無効にするには?
環境変数
WEAVE_DISABLED に true を設定します。
WEAVE_DISABLED は関数定義時に一度だけ読み込まれます。この変数を使用して、実行時にトレースの有効/無効を切り替えることはできません。
クライアントの初期化
disabled フラグを init の設定に指定してクライアントを初期化できます。
- Python
- TypeScript
コンテキストマネージャー
with tracing_disabled() を使用すると、with ブロック内で実行される関数呼び出しに対してのみトレースを抑制します。これは、ログを記録しない呼び出しの範囲を限定するために、アプリケーションコード内で使用することを想定しています。
Call についての情報を取得するにはどうすればよいですか?
op を直接呼び出します。
op の call メソッドを直接呼び出して、Call オブジェクトにアクセスすることもできます。
call オブジェクトに、その呼び出しに関するすべての情報(入力、出力、その他のメタデータ)が格納されます。