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