Guida agenti personalizzati
Installa, strumenta, i metodi degli eventi, un esempio completo e problemi comuni.
Stai usando un framework?
LangChain, CrewAI, LlamaIndex e Pydantic AI si strumentano automaticamente con una sola chiamata.
Installa
failproofai-sdk e importato in Python come failproofai_sdk. Gli extra dei framework come failproofai-sdk[langgraph] installano il framework stesso; gli adattatori vengono sempre forniti nella wheel di base.
Connetti il daemon Failproof
- Dashboard
- CLI
-
Vai su Admin → Keys e crea una chiave con
events:add. - Connetti il daemon Failproof al Cloud sulla macchina dell’agente.
- Esegui una sessione strumentata, quindi trova il suo ID esatto in Observe → Events.
-
Vai su Observe → Sessions, seleziona lo stesso ambiente e apri la traccia ricostruita.

Configurazione
Impostare tramite variabile di ambiente:
Gli eventi sono accodati in memoria e scritti in background ogni
flush_interval secondi, con uno scarico finale all’uscita dell’interprete. Un processo ucciso immediatamente perde qualunque cosa non fosse stata ancora scritta.
Identità
Ogni evento appartiene a una sessione e un agente. Gli scope riempiono entrambi, quindi raramente li passi:session_id o agent_id esplicitamente funziona ancora e ha la precedenza. Senza né un vincolo né un passaggio, la chiamata genera TypeError piuttosto che emettere un evento che il Cloud scarterebbero silenziosamente.
L’identità si basa su variabili di contesto. Segue automaticamente i compiti
asyncio, ma non i nuovi thread — avvolgi un worker in failproofai_sdk.propagate() o i suoi eventi rimangono scollati.Catalogo degli eventi
Quindici metodi. La maggior parte arriva in coppie — chiami l’opener, poi il closer, e l’SDK misura il divario.
Tre sono indipendenti:
error, human_pause, human_interrupt.
Ogni campo, per metodo
Ogni campo, per metodo
Ogni metodo accetta anche
session_id e agent_id, che gli scope riempiono per te. Qualunque cosa rimanga come None viene scartata piuttosto che inviata come JSON null, e ogni metodo restituisce None.Accoppiamento e durata
Una regola: dai all’evento di chiusura lo stesso id del suo opener. Questo è ciò che li accoppia e che permette all’SDK di misurare il divario.
Non passare
duration_ms tu stesso. L’SDK lo misura e passarlo genera ValueError.
L’unica eccezione è model_response, dove solo tu conosci la vera latenza del provider. Passa un numero intero di millisecondi — un float genera un’eccezione, perché la colonna è un intero a 32 bit e altrimenti sarebbe vuota.
Casi limite
Casi limite
- Gli Id devono essere univoci solo per tipo, per sessione. Una chiamata a uno strumento e un hook possono condividerne uno; due sessioni in esecuzione contemporaneamente possono riutilizzare gli stessi id senza collisioni.
- Non sono scoped a un agente. Una coppia aperta in un agente e chiusa in un altro corrisponde comunque — che è il caso normale nel codice multi-agente.
request_idè opzionale ma consigliato. Senza di esso, gli eventi del modello si accoppiano nell’ordine di arrivo, quindi due chiamate concorrenti nello stesso agente possono accoppiarsi male.- Una coppia divisa tra processi corrisponde comunque nel Cloud, ma l’SDK non può misurarla — nessuno in nessuno dei due processi ha visto entrambe le metà.
- Al massimo 10.000 opener attendono un closer contemporaneamente. Oltre questo il più vecchio viene scartato, quindi una perdita non può crescere senza limiti.
I tuoi campi propri
Qualunque extra keyword che passi viene memorizzato con l’evento:Decimal, un set, bytes, un oggetto modello — viene memorizzato come stringa.
Questi cinque nomi sono riservati e rifiutati immediatamente: timestamp, session_id, agent_id, type, environment.
Consegna e verifica
- Dashboard
- CLI
In Observe → Events, verifica che
agent_start esista per primo e agent_end esista per ultimo. Quindi apri Observe → Sessions e conferma che gli eventi modello, strumento, umano, hook ed errore appaiano nell’ordine previsto. Usa l’ID della sessione come chiave di risoluzione dei problemi primaria.$FAILPROOFAI_HOME/custom-agents/events, altrimenti ~/.failproofai/custom-agents/events. I file JSONL provano l’emissione dell’SDK; uno spool in crescita punta a configurazione del daemon o consegna, mentre uno spool vuoto punta a strumentazione o durata del processo.
Ispeziona lo spool solo quando il daemon è arrestato. Mentre è in esecuzione, raccoglie e cancella ogni batch in millisecondi, quindi un elenco di directory gara il collettore e mostra molti meno eventi di quelli emessi.

