Turn、LLM、Tool、SubAgent) でカスタム メタデータを追加するメソッドを使用できます。これらのメソッドを使用して、ユーザー ID、テナント、experiment 名、環境ラベルなどのコンテキスト情報を エージェント スパン に付与し、そのメタデータに基づいて Weave UI で エージェント のアクティビティをフィルタリングしたりグループ化したりできます。
このメタデータには 2 つの形式があります。
- 属性: スパン 全体に付くキーと値のプロパティです。
set_attributes()(Python) またはsetAttributes()(TypeScript) を使用して単一の スパン に属性を付与することも、会話 が出力するすべての スパン に適用される 会話 全体の属性を設定することもできます。 - イベント: スパン の存続期間中に発生する時点のマーカーです。たとえば、権限プロンプトやライフサイクル遷移などがあります。
add_event()(Python) またはaddEvent()(TypeScript) を使用します。
set_attributes は OTel の Span.set_attributes に対応し、add_event は OTel の Span.add_event に対応します。Weave SDK は OTel スパン を出力し、すべての属性を保存するため、それらは Weave で引き続きクエリ可能です。
スパン に属性を設定する
set_attributes() (Python) または setAttributes() (TypeScript) を使用します。キーが 1 つでも複数でも、辞書またはオブジェクトを渡します。このメソッドは スパン を返すため、呼び出しをチェーンできます。
- Python
- TypeScript
- Python
- TypeScript
weave.* 配下のキーは Weave の組み込みフィールドにマップされ、gen_ai.* 配下のキーは OpenTelemetry GenAI のセマンティック規約フィールドにマップされます。前述の例では、weave.display_name は予約済みキーであり、Agents および Traces UI で スパン の表示名を設定します。フィルターやグループ化に使用したい任意のメタデータには、user_id や tenant などの独自キーを使用してください。Weave はそれらをフィルタリング可能なカスタム属性として保存します。
会話内のすべての スパン に属性を設定する
attributes を渡します。これは、インテグレーションのアイデンティティやデプロイ環境など、会話全体にわたるメタデータを伝播する場合に便利です。
- Python
- TypeScript
スパン ごとの属性と同様に、会話属性には独自のカスタムキーを使用してください。agent 名、conversation 名、model などのセマンティック規約フィールドは、
attributes ではなく、対応する型付きパラメーター (agent_name、conversation_name、model) で設定してください。予約済みの gen_ai.* および weave.* 接頭辞配下のキーは避けてください。Weave は取り込み時にそれらを型付きフィールドとして抽出するため、予約済みキー配下のカスタム値はサポートされません。属性を設定できるタイミング
with ブロック内、TypeScript では start*() の後から end() の前までです。
まだ開始していない、またはすでに終了した スパン に対して set_attributes()、またはそれに対応する TypeScript の関数を呼び出すと、その呼び出しは no-op となり、対処方法を示す警告がログされます。
呼び出しが何も出力しない (警告も出ない) のは、OTel がインストールされていない場合、または Weave が無効になっている場合だけです。