failproofai-sdk para que o Failproof AI possa reconstruir cada execução, auditar seu comportamento e encontrar falhas com evidências. O SDK grava eventos estruturados para que o daemon do Failproof os entregue ao Cloud. Requer Python 3.10 ou mais recente.
O tracing torna agentes personalizados observáveis e auditáveis. Para impedir que uma ação insegura seja executada, também é necessário um hook de aplicação no seu runtime.
Para aplicar políticas em uma configuração de agente personalizado, entre em contato com o Failproof AI. Vamos ajudá-lo a mapear os limites de modelo, ferramenta e ciclo de vida do seu runtime para hooks de política.
Instalar o failproofai-sdk
O SDK é distribuído atualmente como um wheel privado. Consulte seu contato no Failproof AI para obter a versão atual e acesso ao download.
uv, faça o download do wheel primeiro e execute uv add ./failproofai_sdk-${VERSION}-py3-none-any.whl. Fixe o wheel em um repositório de artefatos privado ou em um arquivo de lock de dependências.
O pacote é instalado como failproofai-sdk e importado no Python como failproofai.
Conectar o daemon do Failproof
- Dashboard
- CLI
-
Acesse Admin → Keys e crie uma chave com
events:add. - Conecte o daemon do Failproof ao Cloud na máquina do agente.
- Execute uma sessão instrumentada e encontre o ID exato dela em Observe → Events.
-
Acesse Observe → Sessions, selecione o mesmo ambiente e abra o trace reconstruído.

Instrumentar uma execução completa
Chameconfigure() uma vez na inicialização do processo. Toda chamada de evento usa apenas argumentos nomeados e requer um session_id e um agent_id estáveis.
agent_start uma vez por ator. Para sub-agentes, reutilize o session_id do pai, atribua a cada ator um agent_id distinto e defina parent_id como o ID do agente pai, não o ID da sessão.
Referência de configuração
O SDK grava no
base_dir explícito quando definido. Caso contrário, usa o spool custom-agents do daemon do Failproof sob FAILPROOFAI_HOME ou ~/.failproofai.
O SDK enfileira chamadas na memória e grava lotes em uma thread em segundo plano. Ele também tenta um flush final por meio do mecanismo atexit do Python. Para workers de curta duração, permita o encerramento normal do interpretador; uma finalização forçada do processo pode perder eventos ainda na memória.
Catálogo de eventos
Todos os métodos retornamNone. Campos definidos como None são omitidos em vez de serem gravados como null no JSON.
Use
outcome="failed", "error", "timeout" ou "rejected" quando uma conclusão deve ser contabilizada como falha. Outros valores, incluindo "failure", não são classificados como falhas pelo backend atual.
Regras de correlação e duração
- Reutilize o mesmo
tool_call_id,hook_id,pause_idouinput_idpara o evento de conclusão correspondente. - O SDK calcula
duration_msparatool_result,hook_completed,agent_resumeehuman_input. Passar esse valor manualmente para esses métodos geraValueError. - IDs de ferramentas e hooks compartilham um mapa de pendências único por processo. Torne-os globalmente únicos entre sessões concorrentes e entre ambos os namespaces; IDs de provedores ou UUIDs são as opções mais seguras.
- Um par dividido entre processos ainda se correlaciona downstream, mas o SDK não consegue calcular sua duração em processo.
- O mapa de pendências armazena no máximo 10.000 inícios e descarta a entrada mais antiga quando estiver cheio.
Campos e payloads personalizados
Todos os eventos aceitam campos de palavras-chave extras. Use valores compatíveis com JSON quando consultas downstream precisarem de estrutura. Tipos não suportados como UUIDs, datetimes, decimals, sets, bytes e objetos de modelo são convertidos para string pelo writer. Nomes personalizados reservados sãotimestamp, session_id, agent_id, type e environment. Erros de digitação em campos opcionais são aceitos como novos campos personalizados, portanto, revise o JSON emitido quando um campo padrão não aparecer no Cloud.
Entregar e verificar
- Dashboard
- CLI
Em Observe → Events, verifique se
agent_start existe primeiro e agent_end existe por último. Em seguida, abra Observe → Sessions e confirme se os eventos de modelo, ferramenta, humano, hook e erro aparecem na ordem pretendida. Use o ID de sessão como chave primária para resolução de problemas.$FAILPROOFAI_HOME/custom-agents/events, caso contrário ~/.failproofai/custom-agents/events. Arquivos JSONL comprovam a emissão pelo SDK; um spool crescente indica problema de configuração do daemon ou de entrega, enquanto um spool vazio indica problema de instrumentação ou de tempo de vida do processo.

