


Calls
CallsはWeaveの基本的な構成要素です。関数の単一の実行を表し、以下を含みます:
- 入力(引数)
- 出力(戻り値)
- メタデータ(実行時間、例外、LLM使用状況など)
- Trace(同じ実行コンテキスト内のCallのコレクション)に属する
- 親子関係のCallを持ち、ツリー構造を形成する
Callsの作成
Weaveでのcallの作成には主に3つの方法があります:1. LLMライブラリの自動トラッキング
Weaveは自動的に一般的なLLMライブラリへの呼び出しを追跡します。例えば
openai
、anthropic
、cohere
、そしてmistral
などです。プログラムの開始時に単にweave.init('project_name')
を呼び出すだけです:Weaveのデフォルトのトラッキング動作はの
autopatch_settings
引数を使用してweave.init
制御できます。showLineNumbers
サマリー
メトリクスやその他の呼び出し後の値をCallのsummary
summary
辞書に保存できます。実行中にcall.summary
summaryを変更すると、追加した値は呼び出しが終了したときにWeaveの計算されたサマリーデータとマージされます。
2. 関数の装飾とラッピング
しかし、LLMアプリケーションには、追跡したい追加のロジック(前処理/後処理、プロンプトなど)がある場合が多いです。Weaveではまた、クラスのメソッドも追跡できます。
@weave.op
デコレータを使用してこれらの呼び出しを手動で追跡できます。例えば:showLineNumbers
同期および非同期ジェネレータ関数のトレース
Weaveは同期および非同期ジェネレータ関数の両方をトレースすることをサポートしており、深くネストされたパターンも含まれます。ジェネレータは値を遅延的に生成するため、出力はジェネレータが完全に消費された場合(例えば、リストに変換することによって)にのみログに記録されます。
トレースに出力が確実に記録されるようにするには、ジェネレータを完全に消費してください(例えば、
list()
を使用するなど)。showLineNumbers

実行中にcallオブジェクトのハンドルを取得する
時にはその後、
Call
Callop.call
with_resultCall
CallshowLineNumbers
call
callオブジェクトopがクラスのメソッドである場合は、インスタンスを最初の引数としてopに渡す必要があります(以下の例を参照)。
showLineNumbers
showLineNumbers
Call表示名
場合によっては、callの表示名を上書きしたいことがあります。これは次の4つの方法のいずれかで実現できます:
- opを呼び出す時に表示名を変更する:
showLineNumbers
この
__weave
metadata- call単位で表示名を変更します。これは
Op.call
with_resultCall
CallCall.set_display_name
set_display_name
showLineNumbers
- 特定のOpのすべてのCallの表示名を変更する:
showLineNumbers
-
この
call_display_name
display_nameCall
CallCall
Call -
一般的なユースケースの1つは、関数名にタイムスタンプを追加するだけです。
-
また、
.attributes
@weave.op
weave.opでデコレートされた関数またはメソッドです。
デフォルトでは、Opの名前は関数名であり、関連するcallも同じ表示名を持ちます。上記の例は、特定のOpのすべてのCallの表示名を上書きする方法を示しています。時々、ユーザーはOp自体の名前を上書きしたいと思うことがあります。これは次の2つの方法のいずれかで実現できます:- 任意のcallがログに記録される前に、Opの
name
name
showLineNumbers
- opデコレータで
name
name
showLineNumbers
属性
追跡された関数を呼び出す際、
weave.attributes
weave.attributesenv
example'production'
valueshowLineNumbers
call.attributes
attributesはcallが開始されると変更できません。このコンテキストマネージャを使用して、opを呼び出す前に任意のメタデータを設定してください。並列(マルチスレッド)関数呼び出しのトレース
デフォルトでは、並列呼び出しはすべてWeaveで別々のルート呼び出しとして表示されます。同じ親Weave UIでは、これにより5つのネストされた子呼び出しを持つ単一の親呼び出しが生成されるため、インクリメントが並列で実行されていても完全に階層的なトレースが得られます。
op
CallThreadPoolExecutor
weave.trace_context以下のコードサンプルはThreadPoolExecutor
weave.trace_contextの使用方法を示しています。
最初の関数func
incrementop
weave.opx
xx+1
x + 1outer
increment_allop
weave.opouter
increment_allThreadPoolExecutor
weave.trace_contextexc.map(func, inputs)
concurrent.futuresfunc
increment
3. 手動Call追跡
APIを直接使用してCallを手動で作成することもできます。showLineNumbers
4. クラスとオブジェクトメソッドを追跡する
クラスとオブジェクトメソッドも追跡できます。クラス上の任意のメソッドを追跡するには
weave.op
.showLineNumbers
コールの表示
Webアプリでコールを表示するには:
- プロジェクトの「Traces」タブに移動します
- リストから表示したいコールを見つけます
- コールをクリックして詳細ページを開きます

コールの更新
コールは作成後はほとんど不変ですが、いくつかの変更がサポートされています: これらの変更はすべて、コール詳細ページに移動してUIから実行できます:
表示名の設定
コールの表示名を設定するには、
Call.set_display_name
メソッドを使用できます。showLineNumbers
フィードバックの追加
詳細については、フィードバックドキュメントを参照してください。コールの削除
Python APIを使用してコールを削除するには、
Call.delete
メソッドを使用できます。showLineNumbers
複数のコールの削除
Python APIを使用してコールのバッチを削除するには、コールIDのリストを
delete_calls()
に渡します。showLineNumbers
コールのクエリとエクスポート

/calls
ページ(「Traces」タブ)には、プロジェクト内のすべてのコールのテーブルビューが含まれています。そこから、以下のことができます:
- ソート
- フィルタリング
- エクスポート

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