Calls
CallsはWeaveの基本的な構成要素です。関数の単一の実行を表し、以下を含みます:
- 入力(引数)
- 出力(戻り値)
- メタデータ(実行時間、例外、LLM使用状況など)
- Trace(同じ実行コンテキスト内のCallのコレクション)に属する
- 親子関係のCallを持ち、ツリー構造を形成する
Callsの作成
Weaveでのcallの作成には主に3つの方法があります:1. LLMライブラリの自動トラッキング
- Python
- TypeScript
Weaveは自動的に一般的なLLMライブラリへの呼び出しを追跡します。例えば
openai、anthropic、cohere、そしてmistralなどです。プログラムの開始時に単にweave.init('project_name')を呼び出すだけです:showLineNumbers
サマリー
メトリクスやその他の呼び出し後の値をCallのsummarysummary
辞書に保存できます。実行中にcall.summarysummaryを変更すると、追加した値は呼び出しが終了したときにWeaveの計算されたサマリーデータとマージされます。
2. 関数の装飾とラッピング
しかし、LLMアプリケーションには、追跡したい追加のロジック(前処理/後処理、プロンプトなど)がある場合が多いです。- Python
- TypeScript
実行中にcallオブジェクトのハンドルを取得する
- Python
- TypeScript
時にはその後、
CallCallop.callwith_resultCallCallshowLineNumbers
callcallオブジェクトopがクラスのメソッドである場合は、インスタンスを最初の引数としてopに渡す必要があります(以下の例を参照)。
showLineNumbers
showLineNumbers
Call表示名
- Python
- TypeScript
場合によっては、callの表示名を上書きしたいことがあります。これは次の4つの方法のいずれかで実現できます:
- opを呼び出す時に表示名を変更する:
showLineNumbers
この
__weavemetadata- call単位で表示名を変更します。これは
Op.callwith_resultCallCallCall.set_display_nameset_display_name
showLineNumbers
- 特定のOpのすべてのCallの表示名を変更する:
showLineNumbers
-
この
call_display_namedisplay_nameCallCallCallCall -
一般的なユースケースの1つは、関数名にタイムスタンプを追加するだけです。
-
また、
.attributes
@weave.opweave.opでデコレートされた関数またはメソッドです。
デフォルトでは、Opの名前は関数名であり、関連するcallも同じ表示名を持ちます。上記の例は、特定のOpのすべてのCallの表示名を上書きする方法を示しています。時々、ユーザーはOp自体の名前を上書きしたいと思うことがあります。これは次の2つの方法のいずれかで実現できます:- 任意のcallがログに記録される前に、Opの
namename
showLineNumbers
- opデコレータで
namename
showLineNumbers
属性
- Python
- TypeScript
追跡された関数を呼び出す際、
weave.attributesweave.attributesenvexample'production'valueshowLineNumbers
並列(マルチスレッド)関数呼び出しのトレース
- Python
デフォルトでは、並列呼び出しはすべてWeaveで別々のルート呼び出しとして表示されます。同じ親Weave UIでは、これにより5つのネストされた子呼び出しを持つ単一の親呼び出しが生成されるため、インクリメントが並列で実行されていても完全に階層的なトレースが得られます。
opCallThreadPoolExecutorweave.trace_context以下のコードサンプルはThreadPoolExecutorweave.trace_contextの使用方法を示しています。
最初の関数funcincrementopweave.opxxx+1x + 1outerincrement_allopweave.opouterincrement_allThreadPoolExecutorweave.trace_contextexc.map(func, inputs)concurrent.futuresfuncincrement3. 手動Call追跡
APIを直接使用してCallを手動で作成することもできます。- Python
- TypeScript
- HTTP API
showLineNumbers
4. クラスとオブジェクトメソッドを追跡する
クラスとオブジェクトメソッドも追跡できます。- Python
- TypeScript
クラス上の任意のメソッドを追跡するには
weave.op.showLineNumbers
コールの表示
- Webアプリ
- Python
- TypeScript
- HTTP API
Webアプリでコールを表示するには:
- プロジェクトの「Traces」タブに移動します
- リストから表示したいコールを見つけます
- コールをクリックして詳細ページを開きます

コールの更新
コールは作成後はほとんど不変ですが、いくつかの変更がサポートされています: これらの変更はすべて、コール詳細ページに移動してUIから実行できます:
表示名の設定
- Python
- TypeScript
- HTTP API
コールの表示名を設定するには、
Call.set_display_name メソッドを使用できます。showLineNumbers
フィードバックの追加
詳細については、フィードバックドキュメントを参照してください。コールの削除
- Python
- TypeScript
- HTTP API
Python APIを使用してコールを削除するには、
Call.delete メソッドを使用できます。showLineNumbers
複数のコールの削除
- Python
- TypeScript
Python APIを使用してコールのバッチを削除するには、コールIDのリストを
delete_calls()に渡します。showLineNumbers
コールのクエリとエクスポート
プロジェクトの /calls ページ(「Traces」タブ)には、プロジェクト内のすべてのコールのテーブルビューが含まれています。そこから、以下のことができます:
- ソート
- フィルタリング
- エクスポート
エクスポートモーダル(上図)では、データを様々な形式でエクスポートできるだけでなく、選択したコールのPythonとCURLの同等のコードも表示されます!
始めるには、UIでビューを構築し、生成されたコードスニペットからエクスポートAPIについて詳しく学ぶのが最も簡単な方法です。
- Python
- TypeScript
- HTTP API
Python APIを使用してコールを取得するには、
client.get_calls method:コールスキーマ
フィールドの完全なリストについては、スキーマを参照してください。
上記の表はWeaveにおけるCallの主要なプロパティを概説しています。各プロパティは関数呼び出しの追跡と管理において重要な役割を果たします:
- The
id,trace_id, andparent_idフィールドは、システム内でコールを整理し関連付けるのに役立ちます。 - タイミング情報(
started_at,ended_at)はパフォーマンス分析を可能にします。 - The
attributesandinputsフィールドはコールのコンテキストを提供します。属性はコールが開始されると固定されるため、weave.attributesで呼び出し前に設定してください。outputandsummaryは結果をキャプチャし、summaryは実行中に更新して追加のメトリクスを記録できます。 - Weights & Biasesとの統合は
wb_user_idandwb_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 オブジェクトには、入力、出力、その他のメタデータを含むコールに関するすべての情報が含まれます。