> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# エージェントのバッチログ

> LLM Call がすでに完了しており、記録だけが必要なフレームワーク向けに、エージェントのトレースを手動でログします。

LLM Call がすでに完了しており、記録だけが必要なフレームワークでは、CoreWeave Forge SDK の `tracing.log_turn` と `tracing.log_conversation` を使用します。すべてのスパンは作成と同時に終了するため、コンテキストマネージャーを開いたままにしておく必要はありません。

この方法でログするデータは過去のものでもかまいません。進行中の会話は必要ありません。`conversation_id` には、会話を一意に識別する任意の固定文字列を設定します。同じ `conversation_id` を持つターンは、**Conversations** タブで 1 つの会話としてまとめて表示されます。

独自のエージェントループを構築する場合は、代わりに [エージェントをトレースする](/ja/products/agent-lens/tracing/instrument) で説明しているリアルタイムのインストルメンテーション API を使用してください。

<h2 id="log-a-turn">
  ターンをログする
</h2>

完了したターンを 1 件ずつ事後に記録するには、`tracing.log_turn` を使用します。このメソッドは、すべての LLM スパンとツールスパンを含む完全な形のターンを受け入れます。`LLM` オブジェクトと `Tool` オブジェクトは、`start_*` ファクトリーを使わずに直接構築してください。直接構築したスパンは `log_turn` に渡すまで何も送信しないため、これらのオブジェクトは単なるデータとして扱えます。

<Tabs>
  <Tab title="Python">
    ```python lines highlight="1,2,4,29" theme={"system"}
    from coreweave.forge.agentlens import tracing
    from coreweave.forge.agentlens.tracing import LLM, Message, Tool, Usage

    tracing.init("[YOUR-TEAM]/[YOUR-PROJECT]")

    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),
    )

    # すべてのスパンを含むターンをログします。
    tracing.log_turn(
        conversation_id="my-conversation-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],
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    This feature is not available in the TypeScript SDK yet.
    ```
  </Tab>
</Tabs>

`log_turn` は、送信されたスパンのトレース ID を含む `LogResult` を返します。

`log_turn` のオプションの `model` パラメーターは、子の LLM スパンではなく、ターン自体のスパンにモデルを設定します。各 `LLM` スパンは、それぞれ独自の `model` を個別に保持します。1 つのターンで複数のモデルを使用する場合は、そのターンのプライマリモデルと見なすモデルを `log_turn` の `model` に設定してください。

ログした時刻ではなく、ターンが実際に発生した時刻を記録するには、`started_at` と `ended_at` をタイムゾーン情報付きの `datetime` 値で渡します。

<h2 id="log-a-conversation">
  会話をログする
</h2>

マルチターンの会話全体を一度にまとめてインポートするには、`tracing.log_conversation` を使用します。`turns` パラメーターは `Turn` オブジェクトのリストを受け入れます。各オブジェクトは、前述の `log_turn` の例で示したスパンと同じ方法で構築します。

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    tracing.log_conversation(
        conversation_id="my-conversation-abc",
        agent_name="weather-bot",
        turns=[turn_1, turn_2],
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    This feature is not available in the TypeScript SDK yet.
    ```
  </Tab>
</Tabs>
