Installazione
llama-index-core dalla versione 0.14.23 alla 0.15. La 0.14.23 è la versione in cui il flusso di lavoro ha iniziato a trasportare gli eventi tipizzati dell’agente che questo adapter legge. Nelle versioni precedenti, sia i nomi dei modelli che la struttura dell’agente vanno perduti.
Strumentazione
async with che con with e produce eventi identici.
instrument() allega un gestore di eventi e un gestore di span al dispatcher globale di LlamaIndex. Insieme rendono visibile il ciclo dell’agente, non solo le sue chiamate ai modelli.
Conteggi di token
FunctionAgent chiama astream_chat, e llama-index-llms-openai non invia stream_options={"include_usage": True} quando effettua lo streaming. Il provider quindi non invia mai il chunk di utilizzo, e non c’è niente da leggere per alcuna strumentazione.
Questo è il comportamento a monte di LlamaIndex. Attiva il consenso sul tuo LLM:
Le chiamate non in streaming (
llm.chat, llm.achat) segnalano l’utilizzo senza configurazione. Solo il percorso di streaming, che è il percorso dell’agente predefinito, necessita di questo.
Cosa viene registrato
agent_id è il FunctionAgent.name quando lo imposti, altrimenti il nome della classe del flusso di lavoro. Sotto un AgentWorkflow, ogni agente che prende un turno ottiene il suo span annidato sotto il flusso di lavoro, quindi un passaggio di controllo si legge come due agenti anziché uno.
L’output del retrieval è riassunto anziché scaricato. Un retriever restituisce documenti, e archiviarli nel payload metterebbe il tuo corpus nell’archivio degli eventi una volta per query. Vengono mantenuti il conteggio, l’intervallo dei punteggi e i frammenti troncati.
Esempio
init_run, setup_agent, run_agent_step, parse_agent_output, call_tool, e aggregate_tool_results. Sono il ciclo proprio del framework, quindi sono hook anziché agenti, il che mantiene agent_id significativo.
Nomina i tuoi span
agent_id è il FunctionAgent.name quando lo imposti, altrimenti il nome della classe del flusso di lavoro.
AgentWorkflow, quel nome è anche quello sotto il quale ogni passaggio di controllo è registrato:
agent_id ti dice quale agente ha svolto il lavoro e parent_id ti dice quale flusso di lavoro gli apparteneva. Un agente che restituisce il controllo in seguito apre un secondo turno anziché riaprire il primo.
Avvolgi l’esecuzione per sovrascriverlo, o per raggruppare più agenti sotto un genitore comune:
agent_id a bassa cardinalità. È la sfaccettatura principale su ogni superficie di dashboard, quindi usa un ruolo o un nome di flusso di lavoro, mai un UUID o una stringa per esecuzione.
Controlla la sessione
Questo adapter non accetta alcuna opzionesession_id. La sessione proviene dall’ambito racchiudente, altrimenti un uuid4().hex generato per esecuzione del flusso di lavoro:
Opzioni
Umano nel ciclo
Catturato quando l’attesa accade all’interno di un tool:ctx.wait_for_event in un passaggio di flusso di lavoro semplice non è catturato. Il runtime raccoglie il drop prima che raggiunga il dispatcher, quindi il passaggio esce e viene rieseguito in seguito senza segnale per basare una pausa su. Il pattern FunctionAgent, che LlamaIndex documenta, aspetta dentro un tool ed è catturato in pieno.
Problemi comuni
Ogni conteggio di token è null
Ogni conteggio di token è null
Aggiungi
additional_kwargs={"stream_options": {"include_usage": True}} al tuo LLM. Vedi Conteggi di token.L'utilizzo è popolato ma le colonne dei token sono vuote
L'utilizzo è popolato ma le colonne dei token sono vuote
LlamaIndex non ha un campo di utilizzo standard. L’adapter prova diverse forme note, e un’integrazione che nomina i suoi contatori con qualcosa di nuovo non corrisponderà a nessuna di esse.Il dict grezzo è sempre spedito, quindi controlla
usage nel payload per vedere come il tuo provider li ha nominati.Un usage popolato insieme a colonne di token vuote è intenzionale — è meglio di un numero confidentemente sbagliato.La timeline è piena di setup_agent e parse_agent_output
La timeline è piena di setup_agent e parse_agent_output
Questo è il ciclo FunctionAgent, un set per iterazione. Filtra per nome di hook sul dashboard. Questi tempi dei passaggi sono di solito il motivo per usare questo adapter anziché uno solo per modelli.
Nulla è registrato
Nulla è registrato
Controlla in questo ordine:
instrument() è stato eseguito prima dell’esecuzione; c’è un async with failproofai_sdk.session(): intorno all’await; llama-index-core è 0.14.23 o più recente; FAILPROOFAI_SDK_STRICT=1 è impostato, quindi un hook degradato genera un’eccezione anziché essere inghiottito.Successivo
Come funziona
Coppie, id, ciclo di vita della sessione e consegna.
Leggi una traccia
Segui la causalità attraverso la sessione appena catturata.
Altri framework
LangGraph, CrewAI, Pydantic AI e agenti personalizzati.

