Skip to main content

Installation

Unterstützt: llama-index-core 0.14.23 bis 0.15. Ab 0.14.23 überträgt der Workflow-Stream die typisierten Agent-Events, die dieser Adapter liest. Darunter fehlen sowohl Modellnamen als auch die Agent-Struktur.

Instrumentierung

Die Agent-API von LlamaIndex ist asynchron. Jeder Scope funktioniert sowohl mit async with als auch mit with und erzeugt identische Events. instrument() hängt einen Event-Handler und einen Span-Handler an den globalen Dispatcher von LlamaIndex. Gemeinsam machen sie die Agent-Schleife sichtbar – nicht nur deren Modellaufrufe.
Ohne ein zusätzliches Argument an Ihrem LLM ist jede Token-Anzahl im Trace null. Siehe Token-Anzahlen weiter unten.

Token-Anzahlen

FunctionAgent ruft astream_chat auf, und llama-index-llms-openai sendet beim Streamen kein stream_options={"include_usage": True}. Der Provider sendet daher niemals den Usage-Chunk, und es gibt nichts, das eine Instrumentierung lesen könnte. Dies ist ein vorgelagertes LlamaIndex-Verhalten. Aktivieren Sie es an Ihrem LLM:
Gemessen am selben Run und Modell: Nicht-Streaming-Aufrufe (llm.chat, llm.achat) melden die Nutzung ohne Konfiguration. Nur der Streaming-Pfad – der Standard-Agent-Pfad – benötigt dies.

Was aufgezeichnet wird

agent_id ist der FunctionAgent.name, wenn Sie einen gesetzt haben, andernfalls der Workflow-Klassenname. Unter einem AgentWorkflow erhält jeder Agent, der an die Reihe kommt, seinen eigenen verschachtelten Span unter dem Workflow – ein Handoff erscheint daher als zwei Agenten statt als einer. Die Retrieval-Ausgabe wird zusammengefasst statt vollständig ausgegeben. Ein Retriever gibt Dokumente zurück, und deren vollständige Speicherung im Payload würde Ihr Korpus bei jeder Anfrage einmal im Event-Store ablegen. Stattdessen werden Anzahl, Score-Bereich und gekürzte Ausschnitte gespeichert.

Beispiel

Die Agent-Schleife erscheint im Trace als Hook-Paare: init_run, setup_agent, run_agent_step, parse_agent_output, call_tool und aggregate_tool_results. Da es sich um die eigene Schleife des Frameworks handelt, sind sie Hooks statt Agents – das hält agent_id aussagekräftig.

Spans benennen

agent_id ist der FunctionAgent.name, wenn Sie einen gesetzt haben, andernfalls der Workflow-Klassenname.
In einem AgentWorkflow ist dieser Name auch der, unter dem jeder Handoff aufgezeichnet wird:
agent_id zeigt also welcher Agent die Arbeit erledigt hat, und parent_id zeigt welchem Workflow er angehörte. Ein Agent, der die Kontrolle später zurückgibt, öffnet einen zweiten Turn statt seinen ersten wieder aufzunehmen. Umschließen Sie den Run, um dies zu überschreiben oder mehrere Agenten unter einem gemeinsamen Parent zu gruppieren:
Halten Sie agent_id mit niedriger Kardinalität. Es ist die primäre Facette auf jeder Dashboard-Oberfläche – verwenden Sie also einen Rollen- oder Workflow-Namen, niemals eine UUID oder einen pro-Run-generierten String.

Session steuern

Dieser Adapter hat keine session_id-Option. Die Session kommt aus dem umschließenden Scope, andernfalls wird pro Workflow-Run ein uuid4().hex generiert:

Optionen

Human in the Loop

Wird erfasst, wenn das Warten innerhalb eines Tools stattfindet:
ctx.wait_for_event in einem gewöhnlichen Workflow-Step wird nicht erfasst. Die Runtime fängt den Drop ab, bevor er den Dispatcher erreicht – der Step beendet sich und läuft später erneut, ohne ein Signal, auf das eine Pause gestützt werden könnte. Das FunctionAgent-Muster, das LlamaIndex dokumentiert, wartet innerhalb eines Tools und wird vollständig erfasst.

Häufige Probleme

Fügen Sie additional_kwargs={"stream_options": {"include_usage": True}} zu Ihrem LLM hinzu. Siehe Token-Anzahlen.
LlamaIndex hat kein standardisiertes Usage-Feld. Der Adapter versucht mehrere bekannte Strukturen, und eine Integration, die ihre Zähler anders benennt, passt zu keiner davon.Das rohe Dict wird immer mitgeschickt – prüfen Sie usage im Payload, um zu sehen, wie Ihr Provider sie nennt.Ein befülltes usage bei gleichzeitig leeren Token-Spalten ist beabsichtigt – das ist besser als eine sichere, aber falsche Zahl.
Das ist die FunctionAgent-Schleife, ein Satz pro Iteration. Filtern Sie nach Hook-Namen im Dashboard. Diese Step-Timings sind meist der Grund, diesen Adapter statt eines reinen Modell-Adapters zu verwenden.
Prüfen Sie in dieser Reihenfolge: instrument() wurde vor dem Run aufgerufen; ein async with failproofai_sdk.session(): umschließt das await; llama-index-core ist 0.14.23 oder neuer; FAILPROOFAI_SDK_STRICT=1 ist gesetzt, damit ein fehlerhafter Hook eine Exception wirft statt verschluckt zu werden.

Weiter

So funktioniert es

Paare, IDs, Session-Lebenszyklus und Zustellung.

Einen Trace lesen

Die Kausalität durch die soeben erfasste Session verfolgen.

Andere Frameworks

LangGraph, CrewAI, Pydantic AI und eigene Agenten.