メインコンテンツへスキップ
Weave Calls Screenshot Weave Calls Screenshot Weave Calls Screenshot
Calls CallsはWeaveの基本的な構成要素です。関数の単一の実行を表し、以下を含みます:
  • 入力(引数)
  • 出力(戻り値)
  • メタデータ(実行時間、例外、LLM使用状況など)
CallsはOpenTelemetryデータモデルのスパンに似ています。Callは以下のことができます:
  • Trace(同じ実行コンテキスト内のCallのコレクション)に属する
  • 親子関係のCallを持ち、ツリー構造を形成する

Callsの作成

Weaveでのcallの作成には主に3つの方法があります:

1. LLMライブラリの自動トラッキング

Weaveは自動的に一般的なLLMライブラリへの呼び出しを追跡します。例えばopenaianthropiccohere、そしてmistralなどです。プログラムの開始時に単にweave.init('project_name')を呼び出すだけです:
Weaveのデフォルトのトラッキング動作はautopatch_settings引数を使用してweave.init制御できます。
showLineNumbers

サマリー

メトリクスやその他の呼び出し後の値をCallのsummarysummary 辞書に保存できます。実行中にcall.summarysummaryを変更すると、追加した値は呼び出しが終了したときにWeaveの計算されたサマリーデータとマージされます。

2. 関数の装飾とラッピング

しかし、LLMアプリケーションには、追跡したい追加のロジック(前処理/後処理、プロンプトなど)がある場合が多いです。
Weaveでは@weave.opデコレータを使用してこれらの呼び出しを手動で追跡できます。例えば:
showLineNumbers
また、クラスのメソッドも追跡できます。

同期および非同期ジェネレータ関数のトレース

Weaveは同期および非同期ジェネレータ関数の両方をトレースすることをサポートしており、深くネストされたパターンも含まれます。
ジェネレータは値を遅延的に生成するため、出力はジェネレータが完全に消費された場合(例えば、リストに変換することによって)にのみログに記録されます。 トレースに出力が確実に記録されるようにするには、ジェネレータを完全に消費してください(例えば、list()を使用するなど)。
showLineNumbers
Tracing generator functions in Weave.

実行中にcallオブジェクトのハンドルを取得する

時にはCallCallop.callwith_resultCallCall
showLineNumbers
その後、callcallオブジェクト
opがクラスのメソッドである場合は、インスタンスを最初の引数としてopに渡す必要があります(以下の例を参照)。
showLineNumbers
showLineNumbers

Call表示名

場合によっては、callの表示名を上書きしたいことがあります。これは次の4つの方法のいずれかで実現できます:
  1. opを呼び出す時に表示名を変更する:
showLineNumbers
この__weavemetadata
  1. call単位で表示名を変更します。これはOp.callwith_resultCallCallCall.set_display_nameset_display_name
showLineNumbers
  1. 特定のOpのすべてのCallの表示名を変更する:
showLineNumbers
  1. このcall_display_namedisplay_nameCallCallCallCall
  2. 一般的なユースケースの1つは、関数名にタイムスタンプを追加するだけです。
  3. また、.attributes
技術的注意:「Calls」は「Ops」によって生成されます。Opは@weave.opweave.opでデコレートされた関数またはメソッドです。 デフォルトでは、Opの名前は関数名であり、関連するcallも同じ表示名を持ちます。上記の例は、特定のOpのすべてのCallの表示名を上書きする方法を示しています。時々、ユーザーはOp自体の名前を上書きしたいと思うことがあります。これは次の2つの方法のいずれかで実現できます:
  1. 任意のcallがログに記録される前に、Opのnamename
showLineNumbers
  1. opデコレータでnamename
showLineNumbers

属性

追跡された関数を呼び出す際、weave.attributesweave.attributesenvexample'production'value
showLineNumbers
call.attributesattributesはcallが開始されると変更できません。このコンテキストマネージャを使用して、opを呼び出す前に任意のメタデータを設定してください。

並列(マルチスレッド)関数呼び出しのトレース

デフォルトでは、並列呼び出しはすべてWeaveで別々のルート呼び出しとして表示されます。同じ親opCallThreadPoolExecutorweave.trace_context以下のコードサンプルはThreadPoolExecutorweave.trace_contextの使用方法を示しています。 最初の関数funcincrementopweave.opxxx+1x + 1outerincrement_allopweave.opouterincrement_allThreadPoolExecutorweave.trace_contextexc.map(func, inputs)concurrent.futuresfuncincrement
Weave UIでは、これにより5つのネストされた子呼び出しを持つ単一の親呼び出しが生成されるため、インクリメントが並列で実行されていても完全に階層的なトレースが得られます。The Trace UI, showing a single parent call for outer, with five nested child calls.

3. 手動Call追跡

APIを直接使用してCallを手動で作成することもできます。
showLineNumbers

4. クラスとオブジェクトメソッドを追跡する

クラスとオブジェクトメソッドも追跡できます。
クラス上の任意のメソッドを追跡するには weave.op.
showLineNumbers

コールの表示

Webアプリでコールを表示するには:
  1. プロジェクトの「Traces」タブに移動します
  2. リストから表示したいコールを見つけます
  3. コールをクリックして詳細ページを開きます
詳細ページには、コールの入力、出力、実行時間、およびその他のメタデータが表示されます。View Call in Web App

コールの更新

コールは作成後はほとんど不変ですが、いくつかの変更がサポートされています: これらの変更はすべて、コール詳細ページに移動してUIから実行できます: Update Call in Web App

表示名の設定

コールの表示名を設定するには、Call.set_display_name メソッドを使用できます。
showLineNumbers

フィードバックの追加

詳細については、フィードバックドキュメントを参照してください。

コールの削除

Python APIを使用してコールを削除するには、Call.delete メソッドを使用できます。
showLineNumbers

複数のコールの削除

Python APIを使用してコールのバッチを削除するには、コールIDのリストを delete_calls()に渡します。
showLineNumbers

コールのクエリとエクスポート

Screenshot of many calls プロジェクトの /calls ページ(「Traces」タブ)には、プロジェクト内のすべてのコールのテーブルビューが含まれています。そこから、以下のことができます:
  • ソート
  • フィルタリング
  • エクスポート
Calls Table View エクスポートモーダル(上図)では、データを様々な形式でエクスポートできるだけでなく、選択したコールのPythonとCURLの同等のコードも表示されます! 始めるには、UIでビューを構築し、生成されたコードスニペットからエクスポートAPIについて詳しく学ぶのが最も簡単な方法です。
Python APIを使用してコールを取得するには、client.get_calls method:

コールスキーマ

フィールドの完全なリストについては、スキーマを参照してください。 上記の表はWeaveにおけるCallの主要なプロパティを概説しています。各プロパティは関数呼び出しの追跡と管理において重要な役割を果たします:
  • The id, trace_id, and parent_id フィールドは、システム内でコールを整理し関連付けるのに役立ちます。
  • タイミング情報(started_at, ended_at)はパフォーマンス分析を可能にします。
  • The attributes and inputs フィールドはコールのコンテキストを提供します。属性はコールが開始されると固定されるため、weave.attributes で呼び出し前に設定してください。output and summary は結果をキャプチャし、summary は実行中に更新して追加のメトリクスを記録できます。
  • Weights & Biasesとの統合は wb_user_id and wb_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に表示され、対応する実行に関連付けられます。
コードサンプルを使用するには:
  1. ターミナルで依存関係をインストールします:
  2. W&Bにログインします:
  3. スクリプトで、your-username/your-project を実際のW&Bエンティティ/プロジェクトに置き換えます。
  4. スクリプトを実行します:
  5. Visit https://weave.wandb.ai にアクセスしてプロジェクトを選択します。
  6. Traces タブで、トレース出力を表示します。関連する実行へのリンクはトレーステーブルに表示されます。

自動パッチの設定

デフォルトでは、Weaveは openai, anthropic, cohere, and mistral などの一般的なLLMライブラリへの呼び出しを自動的にパッチし追跡します。 この動作は autopatch_settings 引数を weave.init で使用して制御できます。

すべての自動パッチを無効にする

showLineNumbers

特定の統合を無効にする

showLineNumbers

入力と出力の後処理

自動パッチング中に入力と出力(例:PII データ)を後処理する方法をカスタマイズすることもできます:
showLineNumbers
詳細については、How to use Weave with PII data をご覧ください。

よくある質問

大きなトレースが切り捨てられないようにするにはどうすればよいですか?

詳細については、Trace data is truncatedTroubleshooting guide でご覧ください。

トレースを無効にするにはどうすればよいですか?

環境変数

プログラム全体のトレースを無条件に無効にしたい場合は、環境変数 WEAVE_DISABLED=true を設定できます。

クライアント初期化

特定の条件に基づいて特定の初期化のトレースを条件付きで有効にしたい場合があります。この場合、初期設定で disabled フラグを使用してクライアントを初期化できます。

コンテキストマネージャー

最後に、アプリケーションロジックに基づいて単一の関数のトレースを条件付きで無効にしたい場合があります。この場合、コンテキストマネージャー with set_tracing_enabled(False) を使用できます。これは weave.trace.context.call_context からインポートできます。

Callに関する情報をキャプチャするにはどうすればよいですか?

通常、opを直接呼び出します:
ただし、opの call メソッドを呼び出すことで、コールオブジェクトに直接アクセスすることもできます:
ここから、call オブジェクトには、入力、出力、その他のメタデータを含むコールに関するすべての情報が含まれます。