メインコンテンツへスキップ
Weave for Agents はパブリック プレビューです。一般提供前に、機能、API、Agents view UI は変更される可能性があります。
LLM 呼び出しがすでに完了していて、その記録だけが必要なフレームワークでは、weave.log_turnweave.log_session を使用します。すべてのスパンは作成後すぐに終了し、コンテキストマネージャーを開いたままにしておく必要はありません。 この方法でログしたデータは過去の履歴データでも問題ありません。ライブセッションは不要です。会話を一意に識別できる安定した任意の文字列を session_id に設定してください。同じ session_id を共有するターンは、Agents ビューで 1 つのセッションとしてグループ化されます。 独自のエージェントループを構築している場合は、代わりに Trace your agents で説明されているリアルタイムのインストルメンテーション API を使用してください。

ターンをログする

完了した単一のターンを発生後に記録するには、weave.log_turn を使用します。weave.log_turn は、すべての LLM スパンとツールスパンを含む、完全に構成されたターンを受け入れます。
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

from weave.session.session import LLM, Message, Tool, Usage

llm_span = LLM(
    model="gpt-4o",
    provider_name="openai",
    input_messages=[Message(role="user", content="What is the weather?")],
    output_messages=[Message(role="assistant", content="Let me check.")],
    usage=Usage(input_tokens=100, output_tokens=20),
)

tool_span = Tool(
    name="get_weather",
    arguments='{"city": "Tokyo"}',
    result='"24°C, sunny"',
)

llm_span2 = LLM(
    model="gpt-4o",
    provider_name="openai",
    input_messages=[Message(role="user", content="What is the weather?")],
    output_messages=[Message(role="assistant", content="It is 24°C and sunny.")],
    usage=Usage(input_tokens=150, output_tokens=30),
)

# すべてのスパンを含むターンをログします。
weave.log_turn(
    session_id="my-session-abc",
    agent_name="weather-bot",
    messages=[
        Message(role="user", content="What is the weather in Tokyo?"),
        Message(role="assistant", content="It is 24°C and sunny in Tokyo."),
    ],
    spans=[llm_span, tool_span, llm_span2],
)
log_turn は、出力されたスパンのトレース ID を含む LogResult を返します。 log_turn のオプションの model パラメーターは、子 LLM スパンではなく、そのターン自体のスパンにモデルを設定します。各 LLM スパンは、それぞれ独立して独自の model を持ちます。ターンで複数のモデルを使用する場合は、そのターンの主要なモデルと見なすものを log_turnmodel に設定してください。

セッションをログする

複数ターンのセッション全体をまとめてインポートするには、weave.log_session を使用します。turns パラメーターは Turn オブジェクトのリストを受け取り、各オブジェクトは前の log_turn の例と同じ方法で作成します。
weave.log_session(
    session_id="my-session-abc",
    agent_name="weather-bot",
    turns=[turn_1, turn_2],
)