SubAgent は Pydantic モデルです。インスタンスを作成する際に、以下の任意のフィールドをキーワード引数として指定できます。
SubAgent はコンテキストマネージャーであり、with 文で使用できます。
フィールド
メソッド
start_llm
_current_llm contextvar を設定するため、コンテキストマネージャーを使用するかどうかにかかわらず、
get_current_llm() から LLM を参照できます。
SubAgent のコンテキストに入っている場合は、LLM の OTel 親をこの SubAgent のスパンに固定します。
start_tool
start_subagent
record
system_instructions、agent_id、
…) を行う必要がありますが、このメソッドはそれらを 1 回のキーワード引数による呼び出しにまとめます。明示的に渡された
(None 以外の) フィールドのみが適用され、既存の値は保持されます。メソッドチェーン用に
self を返します。Turn.record / LLM.record と同様の動作です。
注: ストリーミング (with) パスでは、サブエージェントのスパン名は __enter__ の時点で
name から決定されます。そのため、スパン名に反映させたい場合は、record ではなく start_subagent
/ turn.subagent で name を設定してください。なお、record を使用した場合でも gen_ai.agent.name
属性は更新されます。
end
start
with を使わずに __enter__ を呼び出すのと同じです。
サブエージェントが並行して実行される可能性がある場合は、start_subagent に set_current=False を渡してください。end() は ContextVar.reset を使ってデタッチするため、
重なり合うスパンが LIFO の順序どおりに終了しないと、アンビエントなコンテキストスタックが
警告なしに破損します。その結果、残った兄弟スパンがカレントではなくなり、
最後のデタッチでは、すでに終了したスパンが復元されてしまいます。
start_llm / start_tool / start_subagent で作成した子スパンは、
いずれの場合もこのスパンの下にネストされます。これらのファクトリーが
明示的な親コンテキストを引き渡すためです。
record_error
end() を呼び出します。
set_attributes
span.set_attributes({"weave.tag": "value"}) のように使用します。OTel の
Span.set_attributes に準拠しています。
start_* ファクトリー、start()、または with によってスパンが開始された後、
スパンが終了する前に呼び出す必要があります。このウィンドウ外での呼び出しは
no-op となり、警告がログされます。バッチ取り込みの場合は、オブジェクトの宣言済みフィールドに
直接値を設定し、そのオブジェクトを log_turn / log_conversation に渡してください。