Skip to main content

Installation

Versions supportées : llama-index-core 0.14.23 à 0.15. La version 0.14.23 est celle où le stream de workflow a commencé à transporter les événements d’agent typés que cet adaptateur lit. En dessous, les noms de modèles et la structure de l’agent disparaissent tous les deux.

Instrumentation

L’API agent de LlamaIndex est asynchrone. Chaque scope fonctionne avec async with aussi bien qu’avec with et produit des événements identiques. instrument() attache un gestionnaire d’événements et un gestionnaire de spans au dispatcher global de LlamaIndex. Ensemble, ils rendent la boucle agent visible, pas seulement ses appels au modèle.
Sans un argument supplémentaire sur votre LLM, tous les comptages de tokens dans votre trace seront null. Consultez Comptage de tokens ci-dessous.

Comptage de tokens

FunctionAgent appelle astream_chat, et llama-index-llms-openai n’envoie pas stream_options={"include_usage": True} lors du streaming. Le fournisseur n’envoie donc jamais le chunk d’utilisation, et il n’y a rien à lire pour aucune instrumentation. Il s’agit d’un comportement LlamaIndex en amont. Activez l’option sur votre LLM :
Mesuré sur la même exécution et le même modèle : Les appels non-streaming (llm.chat, llm.achat) rapportent l’utilisation sans configuration. Seul le chemin streaming, qui est le chemin agent par défaut, en a besoin.

Ce qui est enregistré

agent_id correspond au FunctionAgent.name si vous en définissez un, sinon au nom de la classe du workflow. Sous un AgentWorkflow, chaque agent qui prend un tour obtient sa propre span imbriquée sous le workflow, de sorte qu’un transfert se lit comme deux agents plutôt qu’un. La sortie du retrieval est résumée plutôt que vidée. Un retriever retourne des documents, et les stocker dans le payload mettrait votre corpus dans le store d’événements à chaque requête. Le nombre, la plage de scores et des extraits tronqués sont conservés à la place.

Exemple

La boucle agent apparaît dans la trace sous forme de paires de hooks : init_run, setup_agent, run_agent_step, parse_agent_output, call_tool et aggregate_tool_results. Ce sont les boucles propres au framework, donc ce sont des hooks plutôt que des agents, ce qui permet à agent_id de rester significatif.

Nommez vos spans

agent_id correspond au FunctionAgent.name si vous en définissez un, sinon au nom de la classe du workflow.
Dans un AgentWorkflow, ce nom est également celui sous lequel chaque transfert est enregistré :
Ainsi, agent_id indique quel agent a effectué le travail et parent_id indique à quel workflow il appartenait. Un agent qui a rendu le contrôle ouvre un second tour plutôt que de rouvrir le premier. Enveloppez l’exécution pour le remplacer, ou pour regrouper plusieurs agents sous un même parent :
Gardez agent_id à faible cardinalité. C’est la facette principale sur toutes les surfaces du tableau de bord, donc utilisez un rôle ou un nom de workflow, jamais un UUID ou une chaîne propre à une exécution.

Contrôler la session

Cet adaptateur ne prend pas d’option session_id. La session provient du scope englobant, sinon un uuid4().hex généré par exécution de workflow :

Options

Humain dans la boucle

Capturé quand l’attente se produit à l’intérieur d’un outil :
ctx.wait_for_event dans une étape de workflow classique n’est pas capturé. Le runtime intercepte l’abandon avant qu’il n’atteigne le dispatcher, donc l’étape se termine et se réexécute plus tard sans signal pour déclencher une pause. Le pattern FunctionAgent, que LlamaIndex documente, attend à l’intérieur d’un outil et est capturé entièrement.

Problèmes courants

Ajoutez additional_kwargs={"stream_options": {"include_usage": True}} à votre LLM. Voir Comptage de tokens.
LlamaIndex n’a pas de champ d’utilisation standard. L’adaptateur essaie plusieurs formes connues, et une intégration qui nomme ses compteurs différemment ne correspondra à aucune d’elles.Le dict brut est toujours transmis, vérifiez donc usage dans la charge utile pour voir comment votre fournisseur les a nommés.Un usage renseigné avec des colonnes de tokens vides est délibéré — c’est préférable à un chiffre erroné affiché avec confiance.
C’est la boucle FunctionAgent, un ensemble par itération. Filtrez par nom de hook sur le tableau de bord. Ces timings d’étapes sont généralement la raison d’utiliser cet adaptateur plutôt qu’un adaptateur modèle uniquement.
Vérifiez dans cet ordre : instrument() a été exécuté avant l’exécution ; il y a un async with failproofai_sdk.session(): autour du await ; llama-index-core est en version 0.14.23 ou plus récente ; FAILPROOFAI_SDK_STRICT=1 est défini, de sorte qu’un hook dégradé lève une exception plutôt que d’être ignoré silencieusement.

Suite

Comment ça fonctionne

Paires, ids, cycle de vie de session et livraison.

Lire une trace

Suivez la causalité à travers la session que vous venez de capturer.

Autres frameworks

LangGraph, CrewAI, Pydantic AI et agents personnalisés.