Skip to main content
Un appel d’agent délégué au sein d’un tour de conversation. Correspond à un span OTel invoke_agent imbriqué dans la même trace. SubAgent est un modèle Pydantic. Lors de sa construction, vous pouvez définir chacun des champs ci-dessous sous forme d’argument nommé. SubAgent est un gestionnaire de contexte et peut être utilisé dans une instruction with.

Champs

Méthodes

start_llm

Démarre un appel LLM au sein de ce sous-agent. 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. Rattache le parent OTel du LLM au span de ce SubAgent si l’on est déjà entré dans le SubAgent.

start_tool

Démarre une exécution d’outil au sein de ce sous-agent. Rattache le parent OTel du Tool au span de ce SubAgent lorsque l’on est entré dans le SubAgent.

start_subagent

Démarre un sous-agent imbriqué sous celui-ci. Rattache le parent OTel du SubAgent imbriqué au span de ce SubAgent lorsque le contexte de ce SubAgent a été ouvert.

record

Définit plusieurs champs du sous-agent en un seul appel. Remplace par un seul appel à arguments nommés les affectations champ par champ qu’un agent instrumenté manuellement doit sinon effectuer sur un sous-agent (system_instructions, agent_id, …). Seuls les champs explicitement transmis (différents de None) sont appliqués ; les valeurs existantes sont conservées. Renvoie self pour permettre le chaînage. Fonctionne comme Turn.record / LLM.record. Remarque : en mode streaming (with), le span du sous-agent est nommé d’après name lors de __enter__. Si le nom du span doit refléter cette valeur, définissez donc name via start_subagent / turn.subagent plutôt que via record. record met toutefois à jour l’attribut gen_ai.agent.name.

end

start

Démarre le span de ce sous-agent. Équivaut à __enter__ sans le with. Passez set_current=False à start_subagent lorsque plusieurs sous-agents peuvent s’exécuter simultanément. end() se détache via ContextVar.reset, ce qui corrompt silencieusement la pile de contexte ambiante lorsque des spans qui se chevauchent ne se terminent pas dans l’ordre LIFO : le span restant au même niveau cesse d’être le span courant, et le dernier détachement restaure un span déjà terminé. Dans tous les cas, les enfants créés via start_llm / start_tool / start_subagent s’imbriquent sous ce span, car ces fabriques transmettent explicitement un contexte parent.

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 une fois le span démarré par une fabrique start_*, par start() ou par with, et avant sa fin. En dehors de cette fenêtre, l’appel est sans effet 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