Installation
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
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.
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 :
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
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.
AgentWorkflow, ce nom est également celui sous lequel chaque transfert est enregistré :
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 :
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’optionsession_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
Tous les comptages de tokens sont null
Tous les comptages de tokens sont null
Ajoutez
additional_kwargs={"stream_options": {"include_usage": True}} à votre LLM. Voir Comptage de tokens.L'utilisation est renseignée mais les colonnes de tokens sont vides
L'utilisation est renseignée mais les colonnes de tokens sont vides
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.La timeline est pleine de setup_agent et parse_agent_output
La timeline est pleine de setup_agent et parse_agent_output
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.
Rien n'est enregistré
Rien n'est enregistré
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.

