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.

Pruébalo con tu propio Crew

3 días gratis, sin tarjeta.

Empezar gratis →