Integración · CrewAI
Human-in-the-Loop y seguridad para tu equipo de agentes de CrewAI
CrewAI organiza agentes por roles que colaboran en tareas — cada agente puede tener herramientas (Tools) propias. DatotecAudit se engancha justo ahí: en la herramienta que ejecuta la acción real.
Cómo se conecta
Se crea una Tool personalizada de CrewAI que llama a DatotecAudit antes de dejar pasar la acción.
from crewai.tools import BaseTool
import requests, time
DATOTEC_API_KEY = "dtk_live_xxxxx"
class BorrarRegistroConAprobacion(BaseTool):
name: str = "borrar_registro_con_aprobacion"
description: str = "Borra un registro de la base de datos, con aprobación humana previa."
def _run(self, registro_id: str) -> str:
r = requests.post(
"https://datotecaudit.com/api/agent-trace",
headers={"Authorization": f"Bearer {DATOTEC_API_KEY}"},
json={
"action": "borrar_registro",
"payload": {"registro_id": registro_id},
"requires_approval": True
}
)
approval_id = r.json()["approval_id"]
while True:
estado = requests.get(
f"https://datotecaudit.com/api/agent-approval-status?approval_id={approval_id}",
headers={"Authorization": f"Bearer {DATOTEC_API_KEY}"}
).json()["status"]
if estado != "pending":
break
time.sleep(3)
if estado == "approved":
# aquí tu lógica real de borrado
return "Registro borrado."
return "Borrado rechazado por un humano."
agente_datos = Agent(
role="Gestor de datos",
goal="Mantener la base de datos limpia, pidiendo aprobación antes de borrar nada",
tools=[BorrarRegistroConAprobacion()]
)
3 pasos para tenerlo funcionando
01
Conecta el repo de tu Crew
Auditamos el código de tus agentes y tareas en busca de secretos y dependencias vulnerables.
02
Envuelve las Tools sensibles
Cualquier herramienta que un agente del equipo pueda usar para tocar dinero, datos o comunicación externa.
03
Aprueba desde el panel
Ves qué agente del equipo pidió la acción y por qué, antes de decidir.
Nota de producción: el bucle
while True con time.sleep(3) del ejemplo es didáctico — bloquea el hilo mientras espera. En un agente real de producción, usa una tarea asíncrona, una cola de trabajo, o un webhook, en vez de esperar de forma bloqueante.