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

# 에이전트용 배치 로깅

> LLM 호출이 이미 완료되어 결과를 기록해야 하는 프레임워크의 에이전트 트레이스를 수동으로 로깅합니다.

LLM 호출은 이미 완료되었고 그 호출만 기록하면 되는 프레임워크의 경우 `weave.log_turn` 및 `weave.log_conversation`을 사용하세요. 모든 span은 컨텍스트 관리자를 열린 상태로 유지하지 않고 즉시 생성되고 종료됩니다.

이 방식으로 로깅된 데이터는 과거 데이터여도 됩니다. 라이브 대화는 필요하지 않습니다. 대화를 고유하게 식별할 수 있는 안정적인 string으로 `conversation_id`를 설정하세요. 동일한 `conversation_id`를 공유하는 턴은 **Agents** 뷰에서 하나의 대화로 그룹화됩니다.

자체 에이전트 루프를 구축하는 경우에는 대신 [에이전트 트레이스](/ko/weave/guides/tracking/trace-agents)에 설명된 실시간 계측 API를 사용하세요.

<div id="log-a-turn">
  ## 턴 기록하기
</div>

완료된 단일 턴이 발생한 후 이를 기록하려면 `weave.log_turn`을 사용하세요. `weave.log_turn`은 모든 LLM 및 도구 span을 포함하는 완전한 형태의 턴을 받습니다.

<Tabs>
  <Tab title="Python">
    ```python lines highlight="1,3,28" theme={null}
    weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

    from weave.conversation 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),
    )

    # 모든 span이 포함된 턴을 기록합니다.
    weave.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={null}
    이 기능은 아직 TypeScript SDK에서는 사용할 수 없습니다.
    ```
  </Tab>
</Tabs>

`log_turn`은 생성된 span의 트레이스 IDs가 포함된 `LogResult`를 반환합니다.

`log_turn`의 선택적 `model` 파라미터는 하위 LLM span이 아니라 턴 자체의 span에 모델을 설정합니다. 각 `LLM` span은 자체 `model`을 독립적으로 가집니다. 턴에서 여러 모델을 사용하는 경우, 해당 턴의 기본 모델로 간주하는 값으로 `log_turn`의 `model`을 설정하세요.

<div id="log-a-conversation">
  ## 대화 기록하기
</div>

여러 턴으로 이루어진 전체 대화를 한 번에 일괄 임포트하려면 `weave.log_conversation`을 사용하세요. `turns` 매개변수는 `Turn` 객체 목록을 받으며, 각 객체는 이전 `log_turn` 예시와 같은 방식으로 생성됩니다.

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

  <Tab title="TypeScript">
    ```plaintext theme={null}
    이 기능은 아직 TypeScript SDK에서 사용할 수 없습니다.
    ```
  </Tab>
</Tabs>
