


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

weave.Markdown によるレンダリングされたトレースのカスタマイズ
weave.Markdown を使用すると、元のデータを失うことなく、トレース情報の表示方法をカスタマイズできます。これにより、基盤となるデータ構造を維持したまま、入力と出力を読みやすいフォーマットされたコンテンツブロックとしてレンダリングできます。
- Python
- Typescript
トレースデータをフォーマットするには、
@weave.op デコレータ内で postprocess_inputs および postprocess_output 関数を使用します。以下のコードサンプルは、ポストプロセッサを使用して Weave で絵文字や読みやすいフォーマットで Call をレンダリングします。
Updating Calls
Call は作成後にほぼ不変(イミュータブル)ですが、以下の変更はサポートされています。 これらの変更はすべて、UI の Call 詳細ページから実行できます。
表示名の設定
- 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() に渡します。Querying and exporting Calls

/calls ページ (“Traces” タブ) には、プロジェクト内のすべての Call のテーブルビューが表示されます。そこでは以下のことが可能です。
- ソート
- フィルタリング
- エクスポート

- Python
- TypeScript
- HTTP API
Python API を使用して Call を取得するには、
client.get_calls メソッドを使用できます。Call スキーマ
フィールドの完全なリストについては スキーマ を参照してください。| プロパティ | 型 | 説明 |
|---|---|---|
id | string (uuid) | Call の一意の識別子 |
project_id | string (オプション) | 関連付けられた Project の識別子 |
op_name | string | 操作の名前 (参照である場合もあります) |
display_name | string (オプション) | 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 (オプション) | Call が終了したタイムスタンプ |
exception | string (オプション) | Call が失敗した場合のエラーメッセージ |
output | Any (オプション) | Call の結果 |
summary | Optional[SummaryMap] | 実行後のサマリー情報。実行中にこれを変更してカスタムメトリクスを記録できます。 |
wb_user_id | Optional[str] | 関連付けられた Weights & Biases の User ID |
wb_run_id | Optional[str] | 関連付けられた Weights & Biases の Run ID |
deleted_at | datetime (オプション) | Call が削除されたタイムスタンプ(該当する場合) |
id、trace_id、およびparent_idフィールドは、システム内での Call の整理と関連付けに役立ちます。- タイミング情報 (
started_at,ended_at) により、パフォーマンス分析が可能になります。 attributesとinputsフィールドは Call のコンテキストを提供します。属性は Call 開始時に固定されるため、呼び出し前にweave.attributesで設定してください。outputとsummaryは結果を取得し、実行中にsummaryを更新して追加のメトリクスを記録できます。- Weights & Biases とのインテグレーションは
wb_user_idおよびwb_run_idを通じて行われます。
- Cost (コスト)
- Duration (期間)
- Status (ステータス)
Saved views
Trace テーブルの設定、フィルタ、ソートを saved views として保存し、好みのセットアップに素早くアクセスできます。UI および Python SDK を通じて saved views を構成・アクセスできます。詳細については、Saved Views を参照してください。Traces テーブルでの W&B run の表示
Weave を使用すると、コード内の関数呼び出しをトレースし、それらが実行された W&B Runs に直接リンクできます。 @weave.op() で関数をトレースし、wandb.init() コンテキスト内で呼び出すと、Weave は自動的にそのトレースを W&B Run と関連付けます。 関連付けられた Run へのリンクは Traces テーブルに表示されます。- Python
- TypeScript
以下の Python コードは、コードサンプルの使用方法:
wandb.init() コンテキスト内で実行されたときに、トレースされた操作が W&B Runs にどのようにリンクされるかを示しています。これらのトレースは Weave UI に表示され、対応する Run と関連付けられます。- ターミナルで依存関係をインストールします。
- W&B にログインします。
- スクリプト内で
your-username/your-projectを実際の W&B エンティティ/プロジェクトに置き換えます。 - スクリプトを実行します。
- https://weave.wandb.ai にアクセスし、プロジェクトを選択します。
- Traces タブでトレース出力を確認します。関連付けられた Run へのリンクが Traces テーブルに表示されます。
オートパッチの設定
デフォルトでは、Weave はopenai、anthropic、cohere、mistral などの一般的な LLM ライブラリへの呼び出しを自動的にパッチし、トラッキングします。
- Python
- TypeScript
FAQs
大きなトレースが切り捨てられないようにするにはどうすればよいですか?
詳細については、トラブルシューティングガイド の トレースデータが切り捨てられる を参照してください。トレースを無効にするにはどうすればよいですか?
環境変数
プログラム全体で無条件にトレースを無効にしたい場合は、環境変数WEAVE_DISABLED=true を設定できます。
クライアントの初期化
特定の条件に基づいて初期化時にトレースを無効にしたい場合があります。その場合は、init 設定でdisabled フラグを指定してクライアントを初期化できます。
- Python
- TypeScript
コンテキストマネージャ
最後に、アプリケーションロジックに基づいて特定の関数のみトレースを無効にしたい場合があります。その場合は、weave.trace.context.call_context からインポートできるコンテキストマネージャ with set_tracing_enabled(False) を使用できます。
Call に関する情報を取得するにはどうすればよいですか?
通常は op を直接呼び出します。call メソッドを呼び出すことで、Call オブジェクトに直接アクセスすることもできます。
call オブジェクトには入力、出力、その他のメタデータを含む、Call に関するすべての情報が含まれています。