メインコンテンツへスキップ
このページでは、@weave.op デコレーターでトレースされる関数の属性について説明します。Weave agent SDK でエージェントをインストルメントする場合は、代わりにエージェント スパン (TurnLLMToolSubAgent) に属性とイベントを設定してください。詳しくは、エージェント スパンに属性とイベントを設定するを参照してください。
Weave の属性を使用すると、トレースと評価にカスタムメタデータを追加できます。このメタデータには、環境名、モデルバージョン、実験 ID、ユーザー ID などの情報に加え、Weave データの整理、フィルター、分析に役立つその他のコンテキスト情報も含められます。 属性は、特に次の項目でトレースをグループ化またはフィルターする際に役立ちます。
  • デプロイ
  • テナント
  • Experiments
Weave では、属性を追加する方法が 2 つあります。
  • Call ごとの属性: weave.attributes() コンテキストマネージャーを使用して、特定の op やコードブロックにメタデータを追加します。
  • グローバル属性: 初期化時に global_attributes フィールドを使用して属性を設定すると、project 内のすべてのトレースと評価に適用されます。
UI では、トレースと評価の実行中にログされたすべての属性を表示できます。さらに、それらを使用してデータをフィルターしたりグループ化したりできます。 このガイドは、カスタムメタデータでトレースと評価を拡張したい Weave Users 向けです。個々の call に属性を追加する方法、初期化時に project 全体のデフォルトを設定する方法、2 つのアプローチを組み合わせる方法、および実行中に現在の属性セットを読み取る方法について説明します。

Call ごとの属性

weave.attributes() コンテキストマネージャーを使用すると、特定のトレース対象の op にメタデータを追加できます。これを使用して、特定の function の Call や評価 run にコンテキスト情報をタグ付けできます。
Call が開始されると、call.attributes は変更できません。op を呼び出す前に、このコンテキストマネージャーを使用して必要なメタデータを設定してください。
この function は、コンテキストマネージャーブロック (Python) またはコールバック function (TypeScript) 内のすべてのトレース対象 op に属性を付加します。 weave.attributes() コンテキストはネストすることもできます。同じ Key に対しては、内側のコンテキストが外側のコンテキストを上書きします。

グローバル属性

Weave の初期化時にグローバル属性を設定すると、それらは project 内のすべてのトレースと評価に自動的に適用されます。これは、環境、デプロイメント バージョン、チーム情報など、project 全体に共通するメタデータを引き継ぐ場合に便利です。

グローバル属性と Call ごとの属性を組み合わせる

グローバル属性と Call ごとの属性は一緒に使用できます。同じキーを持つ Call ごとの属性は、グローバル属性を上書きします。

実行中に属性を取得する

実行時には、Call に現在適用されている属性を確認できます。これは、Weave がどのメタデータを付加しているかをデバッグしたい場合や、外側の呼び出し元によって設定されたコンテキスト情報に応じてコードの処理を分岐させる必要がある場合に役立ちます。
次の例では、process_data 関数をログするように Weave デコレータを設定し、ログする属性を設定して、実行時にそれらを返します。
出力は次のとおりです。
weave.get_current_call() は、@weave.op でデコレートされた関数内でのみ動作します。op の外側では None を返します。