Turn、LLM、Tool、SubAgent) にカスタムメタデータを属性として付与できます。属性とは、スパンが持つキーと値のペアからなるプロパティです。属性を使用すると、ユーザー ID、テナント、実験名、環境ラベルなどのコンテキスト情報をエージェント スパンに記録できます。記録したメタデータを使って、CoreWeave Agent Lens UI でエージェントのアクティビティをフィルターおよびグループ化できます。
属性は、set_attributes() (Python) または setAttributes() (TypeScript) で個々のスパンに設定できます。また、会話が出力するすべてのスパンに適用される、会話全体の属性として設定することもできます。set_attributes は、OpenTelemetry (OTel) スパン API の Span.set_attributes メソッドに対応しています。Agent Lens SDK は OTel スパンを出力し、すべての属性を保存するため、Agent Lens で属性をクエリできます。
このページのサンプルは、エージェントをトレースするの手順に従って SDK をインストールし、初期化済みであることを前提としています。
スパンに属性を設定する
set_attributes() (Python) または setAttributes() (TypeScript) を使用すると、単一のスパンに任意の属性を付与できます。キーが 1 つの場合も複数の場合も、辞書またはオブジェクトを渡してください。このメソッドはスパンを返すため、呼び出しをチェーンできます。
- Python
- TypeScript
- Python
- TypeScript
weave.* で始まるキーは Agent Lens の組み込みフィールドに、gen_ai.* で始まるキーは OpenTelemetry GenAI セマンティック規約のフィールドにマッピングされます。前の例の weave.display_name は予約キーで、Agent Lens UI に表示されるスパンの表示名を設定します。フィルタリングやグループ化に使用する任意のメタデータには、user_id や tenant などの独自のキーを使用してください。Agent Lens はこれらをフィルタリング可能なカスタム属性として保存します。
スパンの実行中に発生したことを記録する
属性を使用すると、権限確認のプロンプトやその結果など、スパンの実行中に発生した出来事も記録できます。出来事が発生した時点で、スパンがまだ記録中のうちに属性を設定してください。- Python
- TypeScript
permission.granted_at のように、時刻を別の属性として記録してください。
OpenTelemetry が Span Event API を非推奨にするため、SDK の
add_event() (Python) メソッドおよび addEvent() (TypeScript) メソッドは非推奨となりました。このデータは代わりに属性で記録してください。会話内のすべてのスパンに属性を設定する
スパン固有のメタデータであれば、スパンごとに属性を付与する方法が適しています。ただし、メタデータの中には会話全体に適用されるものもあります。会話が出力するすべてのスパンに同じ属性を適用するには、会話の開始時にattributes を渡します。この方法は、デプロイメント名や環境など、会話全体に共通するメタデータを伝播させる場合に便利です。
- Python
- TypeScript
スパンごとの属性と同様に、会話の属性には独自のカスタムキーを使用してください。エージェント名、会話名、モデルなどのセマンティック規約フィールドは、
attributes ではなく、専用の型付きパラメーター (agent_name、conversation_name、model) で設定してください。また、予約済みの接頭辞 gen_ai.* および weave.* で始まるキーは使用しないでください。Agent Lens は取り込み時にこれらのキーを型付きフィールドに抽出するため、予約済みキーでのカスタム値の設定はサポートされていません。属性を設定できるタイミング
属性は、スパンの記録中、つまりスパンの開始後から終了前までの間に設定します。Python ではwith ブロックの内側、TypeScript では start*() の後から end() の前までが該当します。
まだ開始していないスパン、またはすでに終了したスパンに対して set_attributes()(または TypeScript の同等の関数)を呼び出すと、その呼び出しは no-op となり、修正方法を示す警告がログに出力されます。
警告が出力されずに呼び出しが無視されるのは、トレースが初期化されていない場合のみです。