Skip to main content
ユーザーとエージェント間の 1 回のやり取りです。invoke_agent OTel スパンに対応します。 デフォルトでは、各ターンがそれぞれ独自の OTel トレースを開始するため (continue_parent_trace=False) 、 Conversations タブにはターンごとに 1 つのトレースが表示されます。外側のトレースがすでに アクティブな状態で、エージェントの invocation をその中にネストしたい場合は、Conversation (または Turn に直接) で continue_parent_trace=True を設定します。たとえば、fastapi でインストルメントされた リクエスト内で実行する場合などが該当します。 Turn は Pydantic モデルです。インスタンスを作成する際に、以下の任意のフィールドをキーワード引数として指定できます。 Turn はコンテキストマネージャーであり、with ステートメントで使用できます。

フィールド

メソッド

user

ターンの途中でユーザーメッセージを追加します。

start_llm

LLM Call(チャットスパン。このターンの子)を開始します。 _current_llm contextvar を設定します。これにより、コンテキストマネージャーを使用するかどうかにかかわらず、 get_current_llm() から LLM を参照できます。

start_tool

ツール実行を開始します (このターンの子となる execute_tool スパン) 。

start_subagent

sub-agent の invocation を開始します (同じトレース内のネストされた invoke_agent スパン) 。

record

複数のターンフィールドを 1 回の呼び出しでまとめて設定します。 手動でインストルメントされたエージェントがターンに対してフィールドごとに行う代入 (system_instructions、agent_id、 …) を、1 回のキーワード引数呼び出しにまとめます。明示的に渡された (None 以外の) フィールドのみが適用され、既存の値は保持されます。 messages と output_messages は、それぞれ独立してターンの 既存の入力メッセージと出力メッセージを置き換えます。この点で、入力メッセージを 1 件追加する Turn.user(...) とは異なります。メソッドチェーン用に self を返します。LLM.record に対応するメソッドです。 注: ストリーミング (with) パスでは、ターンのスパン名は __enter__ 時点の agent_name に基づいて決まります。そのため、スパン名に反映させたい場合は、agent_name を record ではなく start_turn で設定してください。なお、record でも gen_ai.agent.name 属性は更新されます。

end

start

このスパンを一度だけ開始します。コンテキストマネージャーとして開始 (エントリ) する場合も、同じパスが使用されます。

record_error

スパンを終了せずにエラーを記録します。スパンを終了する準備ができたら end() を呼び出します。

set_attributes

このスパンに任意の OTel 属性を設定します。 キーが 1 つでも複数でも dict を渡します。キーが 1 つの場合は span.set_attributes({"weave.tag": "value"}) のように呼び出します。OTel の Span.set_attributes と同じ仕様です。 start_* ファクトリ、start()、または with によってスパンが開始された後、 スパンが終了する前に呼び出す必要があります。この期間外に呼び出した場合は no-op となり、警告がログに記録されます。バッチ取り込みの場合は、オブジェクトの宣言済みフィールドに直接値を設定し、 log_turn / log_conversation に渡してください。
最終更新日 2026年9月30日