Skip to main content
Un échange entre l’utilisateur et l’agent. Correspond à un span OTel invoke_agent. Par défaut, chaque tour de conversation démarre sa propre trace OTel (continue_parent_trace=False) afin que l’onglet Conversations affiche une trace par tour de conversation. Définissez continue_parent_trace=True sur la Conversation (ou directement sur le Turn) lorsqu’une trace externe est déjà active et que vous souhaitez y imbriquer l’appel d’agent, par exemple dans une requête instrumentée par fastapi. Turn est un modèle Pydantic. Vous pouvez définir chacun des champs ci-dessous comme argument nommé lors de sa construction. Turn est un gestionnaire de contexte et peut être utilisé dans une instruction with.

Champs

Méthodes

user

Ajoute un message utilisateur au cours d’un tour de conversation.

start_llm

Démarre un appel LLM (span de chat, enfant de ce tour de conversation). Définit la contextvar _current_llm afin que le LLM soit accessible via get_current_llm(), qu’un gestionnaire de contexte soit utilisé ou non.

start_tool

Démarre l’exécution d’un outil (span execute_tool, enfant de ce tour de conversation).

start_subagent

Démarre un appel de sous-agent (span invoke_agent imbriqué, dans la même trace).

record

Définit plusieurs champs du tour de conversation en un seul appel. Regroupe en un seul appel à arguments nommés les affectations champ par champ qu’un agent instrumenté manuellement devrait sinon effectuer sur un tour de conversation (system_instructions, agent_id, …). Seuls les champs explicitement transmis (différents de None) sont appliqués ; les valeurs existantes sont conservées. messages et output_messages remplacent, indépendamment l’un de l’autre, les messages d’entrée et de sortie existants du tour de conversation. Contrairement à Turn.user(...), qui ajoute un seul message d’entrée. Renvoie self pour permettre le chaînage. Reprend le fonctionnement de LLM.record. Remarque : sur le chemin de streaming (with), le span du tour de conversation est nommé d’après agent_name lors de __enter__. Si le nom du span doit refléter cette valeur, définissez donc agent_name via start_turn plutôt que via record ; record met tout de même à jour l’attribut gen_ai.agent.name.

end

start

Démarre ce span une seule fois ; l’entrée dans le gestionnaire de contexte emprunte le même chemin.

record_error

Enregistre un échec sans terminer le span ; appelez end() le moment venu.

set_attributes

Ajoute des attributs OTel arbitraires à ce span. Passez un dict, que vous ayez une seule clé ou plusieurs ; pour une seule clé, utilisez span.set_attributes({"weave.tag": "value"}). Équivalent de la méthode Span.set_attributes d’OTel. Doit être appelée après le démarrage du span par une fabrique start_*, par start() ou par with, et avant sa fin. En dehors de cet intervalle, l’appel n’a aucun effet (no-op) et journalise un avertissement. Pour l’ingestion par lots, renseignez directement les champs déclarés de l’objet et passez-le à log_turn / log_conversation.
Dernière modification le 30 septembre 2026