> ## 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.

# Journalisation par lots pour votre agent

> Journalisez manuellement les traces d’agent pour les frameworks qui ont déjà effectué l’appel LLM et doivent l’enregistrer.

Pour les frameworks qui ont déjà effectué l’appel LLM et n’ont plus qu’à l’enregistrer, utilisez `tracing.log_turn` et `tracing.log_conversation` du SDK CoreWeave Forge. Tous les spans sont créés et clôturés immédiatement, sans qu’aucun gestionnaire de contexte ne reste ouvert.

Les données journalisées de cette manière peuvent être historiques : aucune conversation en direct n’est nécessaire. Définissez `conversation_id` sur une chaîne stable qui identifie la conversation de manière unique. Les tours de conversation partageant le même `conversation_id` sont regroupés en une seule conversation dans l’onglet **Conversations**.

Si vous développez votre propre boucle d’agent, utilisez plutôt les API d’instrumentation en temps réel décrites dans [Tracer vos agents](/fr/products/agent-lens/tracing/instrument).

<h2 id="log-a-turn">
  Journaliser un tour de conversation
</h2>

Pour enregistrer un tour de conversation terminé après coup, utilisez `tracing.log_turn`. Cette méthode accepte un tour de conversation complet, avec l’ensemble de ses spans LLM et d’outil. Construisez directement les objets `LLM` et `Tool` plutôt que de passer par une fabrique `start_*`. Un span construit directement n’émet rien tant que vous ne le transmettez pas à `log_turn`, si bien que ces objets servent de simples données.

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

    # Journaliser un tour de conversation avec tous ses spans.
    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` renvoie un `LogResult` contenant les ID de trace des spans émis.

Le paramètre facultatif `model` de `log_turn` définit le modèle du span propre au tour de conversation, et non celui des spans LLM enfants. Chaque span `LLM` possède son propre `model`, indépendamment des autres. Si un tour de conversation fait appel à plusieurs modèles, attribuez à `model` dans `log_turn` celui que vous considérez comme le modèle principal de ce tour de conversation.

Pour enregistrer le moment où le tour de conversation a réellement eu lieu, et non celui où vous l’avez journalisé, transmettez `started_at` et `ended_at` sous forme de valeurs `datetime` tenant compte du fuseau horaire.

<h2 id="log-a-conversation">
  Journaliser une conversation
</h2>

Pour importer en une seule fois une conversation complète sur plusieurs tours de conversation, utilisez `tracing.log_conversation`. Le paramètre `turns` accepte une liste d’objets `Turn`, chacun construit de la même manière que les spans de l’exemple `log_turn` précédent.

<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"}
    Cette fonctionnalité n’est pas encore disponible dans le SDK TypeScript.
    ```
  </Tab>
</Tabs>
