Skip to main content

title: “Agenti personalizzati” description: “Strumenta le tracce da agenti personalizzati affinché Failproof AI possa ricostruire le esecuzioni e trovare errori.” icon: “python”

Strumenta le tracce da un agente personalizzato con failproofai-sdk affinché Failproof AI possa ricostruire ogni esecuzione, controllarne il comportamento e trovare errori supportati da prove. L’SDK scrive eventi strutturati per il daemon Failproof da consegnare al Cloud. Richiede Python 3.10 o versioni successive. L’instrumentazione rende gli agenti personalizzati osservabili e controllabili. Prevenire un’azione non sicura prima della sua esecuzione richiede anche un hook di enforcement nel tuo runtime.
Per applicare le policy in una configurazione con agente personalizzato, contatta Failproof AI. Ti aiuteremo a mappare i confini del modello, dello strumento e del ciclo di vita del tuo runtime ai hook delle policy.

Installa failproofai-sdk

L’SDK è attualmente distribuito come wheel privato. Chiedi al tuo contatto Failproof AI la versione attuale e l’accesso al download.
Con uv, scarica prima il wheel ed esegui uv add ./failproofai_sdk-${VERSION}-py3-none-any.whl. Fissa il wheel in un repository di artefatti privato o un lock di dipendenze. Il pacchetto viene installato come failproofai-sdk e importato in Python come failproofai.

Connetti il daemon Failproof

  1. Vai a Admin → Keys e crea una chiave con events:add.
  2. Connetti il daemon Failproof al Cloud sulla macchina dell’agente.
  3. Esegui una sessione instrumentata, quindi trova il suo ID esatto in Observe → Events.
  4. Vai a Observe → Sessions, seleziona lo stesso ambiente e apri la traccia ricostruita. Una sessione di agente Python personalizzato ricostruita come un grafico di esecuzione e una traccia di eventi ordinati.

Strumenta un’esecuzione completa

Chiama configure() una sola volta durante l’avvio del processo. Ogni chiamata di evento è solo con parole chiave e richiede un session_id e un agent_id stabili.
Emetti agent_start una sola volta per attore. Per sub-agenti, riutilizza il session_id del genitore, assegna a ogni attore un agent_id distinto e imposta parent_id sull’ID dell’agente genitore, non sull’ID della sessione.

Riferimento configurazione

L’SDK scrive nello base_dir esplicito quando è impostato. In caso contrario, utilizza lo spool custom-agents del daemon Failproof in FAILPROOFAI_HOME o ~/.failproofai. L’SDK accoda le chiamate in memoria e scrive i batch su un thread di background. Tenta anche un flush finale tramite la gestione atexit di Python. Per i worker di breve durata, consenti lo spegnimento normale dell’interprete; l’interruzione forzata del processo può perdere gli eventi ancora in memoria.

Catalogo degli eventi

Tutti i metodi restituiscono None. I campi lasciati come None vengono omessi anziché scritti come JSON null. Usa outcome="failed", "error", "timeout" o "rejected" quando un completamento dovrebbe contare come errore. Altri valori, incluso "failure", non vengono classificati come errori dal backend attuale.

Regole di correlazione e durata

  • Riutilizza lo stesso tool_call_id, hook_id, pause_id o input_id per l’evento di completamento corrispondente.
  • L’SDK calcola duration_ms per tool_result, hook_completed, agent_resume e human_input. Passarlo tu stesso a questi metodi genera ValueError.
  • Gli ID degli strumenti e degli hook condividono una mappa di sospensione a livello di processo. Rendili univoci globalmente tra le sessioni simultanee e tra entrambi gli spazi dei nomi; gli ID del provider o gli UUID sono i più sicuri.
  • Una coppia divisa tra processi si correla comunque a valle, ma l’SDK non può calcolare la sua durata in-process.
  • La mappa di sospensione contiene al massimo 10.000 inizi ed elimina la voce più vecchia quando piena.

Campi personalizzati e payload

Ogni evento accetta campi con parole chiave aggiuntive. Utilizza valori compatibili con JSON quando le query a valle necessitano di struttura. Le foglie non supportate come UUID, datetime, decimali, set, byte e oggetti modello vengono stringificate dal writer. I nomi personalizzati riservati sono timestamp, session_id, agent_id, type e environment. Gli errori di battitura nei campi opzionali vengono accettati come nuovi campi personalizzati, quindi rivedi il JSON emesso quando un campo standard non viene visualizzato nel Cloud.

Consegna e verifica

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 di modello, strumento, umano, hook e errore appaiano nell’ordine previsto. Utilizza l’ID della sessione come chiave primaria per la risoluzione dei problemi.
Se il Cloud è vuoto, ispeziona $FAILPROOFAI_HOME/custom-agents/events, altrimenti ~/.failproofai/custom-agents/events. I file JSONL provano l’emissione dell’SDK; uno spool in crescita indica una configurazione del daemon o un problema di consegna, mentre uno spool vuoto indica un problema di instrumentazione o di durata del processo.

Previeni errori in un runtime personalizzato

Utilizza i risultati dell’audit e le tracce collegate per definire l’azione non sicura, le prove richieste e la risposta prevista. Un’integrazione di enforcement personalizzata deve esporre l’azione prima dell’esecuzione, passare il suo input strutturato al motore delle policy e applicare la decisione risultante di allow, instruct o deny. Invia un’email a support@befailproof.ai per progettare e convalidare questa integrazione per il tuo runtime.