Una tarea delimitada, herramientas pequeñas, permisos mínimos y un entorno de prueba aislado.
Agentes de IA en local: herramientas, permisos y aprobación humana
Un agente no es solo un modelo que conversa. Es un sistema que observa, decide, llama a herramientas y comprueba resultados. Su seguridad depende de credenciales, políticas y validadores externos al modelo.
Qué necesitas antes y cómo sabrás que has terminado
Ejecuta la guía sobre un entorno de prueba. No avances a producción hasta obtener la salida verificable y documentar la reversión.
Crear un agente que proponga y valide acciones sin concederle autoridad ilimitada.
Continúa con la etapa relacionada y conserva comandos, versiones, métricas y responsables.
Abrir el siguiente paso →Un modelo dentro de un sistema de decisión
La diferencia, con un ejemplo: al pedir cita, un chatbot te dice el teléfono de la clínica; un agente consulta la agenda, propone hora y crea la cita (con tu confirmación). El chatbot responde; el agente actúa — siempre con permisos limitados y revisión humana en lo importante.
El modelo interpreta una tarea y puede proponer una llamada estructurada: buscar un cliente, recuperar un documento, consultar un inventario o preparar una respuesta. Un orquestador valida la petición, ejecuta la herramienta autorizada y devuelve el resultado al modelo.
La autoridad no debe residir en el prompt. El modelo no controla credenciales, permisos, límites de importe, listas de destinatarios ni reglas de negocio. Esas restricciones pertenecen a código determinista, políticas y sistemas de identidad.
La ejecución local reduce la necesidad de enviar el contexto al proveedor del modelo, pero no impide que una herramienta externa reciba datos. Inventaría cada conexión y aplica las reglas de IA local y RGPD.
Observar, proponer, validar, ejecutar y comprobar
El ciclo debe tener un máximo de pasos, tiempo y llamadas. Si el agente no alcanza un estado válido, detiene la tarea y pide intervención. Los reintentos ilimitados pueden producir costes, bloqueos o acciones duplicadas.
Funciones pequeñas y contratos estrictos
| Herramienta | Diseño recomendado | Evitar |
|---|---|---|
| Buscar documento | Consulta con filtros de identidad y límite de resultados | Acceso global al repositorio |
| Consultar ERP | Campos permitidos y cuenta de solo lectura | Consulta SQL arbitraria |
| Crear borrador | Destinatario controlado y estado borrador | Enviar correo directamente |
| Actualizar registro | Esquema, comparación previa y aprobación | Escritura libre sobre cualquier entidad |
| Ejecutar código | Entorno aislado, recursos y tiempo limitados | Shell del servidor con credenciales |
| Navegar | Lista de dominios y descarga bloqueada | Acceso abierto a Internet y red interna |
Una herramienta debe hacer una cosa, validar tipos y devolver errores comprensibles. El orquestador transforma el error en información para el modelo, sin exponer secretos ni trazas internas completas.
El contenido externo nunca es una instrucción de sistema
Un correo, PDF, web o comentario puede contener texto que intenta cambiar el objetivo del agente. El sistema debe etiquetarlo como datos no confiables y evitar que controle herramientas.
- Separar mensajes de sistema, instrucciones del usuario y contenido recuperado.
- Aplicar permisos por identidad antes de entregar datos al modelo.
- Validar cada argumento de herramienta con un esquema cerrado.
- Bloquear campos desconocidos, rutas, URLs y destinatarios no autorizados.
- Solicitar aprobación para acciones irreversibles o externas.
- Evitar incluir secretos en el contexto; las herramientas los usan fuera del modelo.
- Registrar decisión, herramienta, argumentos normalizados, resultado y aprobador.
- Probar inyección indirecta dentro de documentos y correos.
Aumentar capacidad por etapas
Respuesta y recomendación
El agente consulta fuentes y propone una respuesta. No modifica sistemas.
Borrador o simulación
Crea un objeto revisable, como un correo en Borradores o una propuesta de cambio.
Ejecución aprobada
Una persona valida la acción y el sistema la ejecuta con permisos limitados.
Acción automática acotada
Solo para tareas reversibles, de bajo riesgo, con límites, monitorización y parada.
El ejemplo de n8n, Ollama y Outlook se mantiene en el segundo nivel: preparación automática y decisión humana.
Evalúa acciones, no solo respuestas
- Tasa de herramienta correcta para cada intención.
- Argumentos válidos y rechazados por el esquema.
- Acciones que requieren aprobación y porcentaje correctamente bloqueado.
- Resistencia a inyección directa e indirecta.
- Pasos medios y máximos por tarea.
- Reintentos, duplicados y recuperación tras error.
- Exactitud del resultado final frente a un caso de referencia.
- Latencia por modelo, herramienta y cola.
Versiona la batería de pruebas junto con el prompt, el modelo, el orquestador y las herramientas. Un cambio en cualquier componente puede alterar el riesgo.
Contexto, modelos residentes y concurrencia
Los agentes pueden mantener un contexto amplio, usar un modelo de embeddings, un modelo principal y herramientas simultáneas. La memoria se consume por pesos, caché y sesiones. Una GPU rápida es adecuada cuando todo cabe; DGX Spark ofrece margen con 128 GB y CUDA.
Si el problema es el número de usuarios, replicas de servicio pueden ser mejores que un modelo mayor. Consulta clústeres de DGX Spark. Para una plataforma central con mucha más memoria y administración, consulta DGX Station.
Un agente fiable es un sistema con estado, herramientas y límites externos al modelo
El modelo propone el siguiente paso, pero no debe poseer la autoridad final. La aplicación conserva identidad, permisos, presupuesto, estado, herramientas disponibles, validación y registro. Esta separación permite cambiar de modelo sin rehacer las reglas de negocio.
Solicitud → política → contexto autorizado → modelo → propuesta de herramienta
→ validación de argumentos → aprobación cuando corresponde
→ ejecución aislada → comprobación del resultado → respuesta
Un chat con una única llamada a función puede ser más seguro y útil que un agente autónomo general. Añade capacidad solo cuando una evaluación demuestre que el siguiente nivel aporta valor.
Crear funciones pequeñas, tipadas y comprensibles para el revisor
Una herramienta debe representar una acción de negocio concreta. Evita funciones como «ejecutar SQL», «hacer petición HTTP» o «modificar ERP»: conceden demasiada libertad y son difíciles de auditar. Prefiere contratos como «consultar estado de pedido», «crear borrador de respuesta» o «proponer cambio de fecha».
Consulta acotada
consultar_pedido({
"numero": "string",
"campos": ["estado", "transportista"]
})El servidor obtiene la identidad del usuario, aplica permisos y devuelve solo campos permitidos. El modelo no elige credenciales ni tabla.
Propuesta revisable
crear_borrador_respuesta({
"mensaje_id": "string",
"asunto": "string",
"cuerpo": "string"
})La función crea un borrador, no envía. El usuario revisa destinatarios, texto y adjuntos en el sistema de origen.
- Esquema cerrado y tipos validados por el servidor
- Longitud, formato, rangos y enumeraciones limitados
- Identidad y permisos obtenidos fuera del prompt
- Tiempo máximo y número de reintentos definidos
- Resultado estructurado con código de error
- Operación idempotente o protegida por una clave única
- Registro suficiente para reconstruir la decisión
No ejecutes directamente el JSON del modelo. Analízalo con un validador, descarta campos desconocidos y vuelve a comprobar permisos justo antes de la acción.
Tratar correo, páginas y documentos como contenido potencialmente adversario
La inyección de prompt aparece cuando una fuente intenta convencer al modelo de que cambie sus instrucciones, revele datos o utilice una herramienta. El texto puede estar visible, oculto en un documento o incluido en resultados recuperados. No existe una frase de sistema que elimine por completo este riesgo; la defensa combina arquitectura y pruebas.
- Separa instrucciones y datos. Etiqueta el contenido externo y prohíbe que defina políticas o herramientas.
- Reduce el contexto. Entrega únicamente los fragmentos necesarios y autorizados para la tarea.
- Limita herramientas por paso. Una tarea de lectura no necesita funciones de escritura disponibles.
- Valida argumentos fuera del modelo. Bloquea rutas, dominios, destinatarios o identificadores no permitidos.
- Solicita aprobación para efectos relevantes. El revisor debe ver la fuente, la propuesta y el efecto exacto.
- Comprueba el resultado. Verifica que la operación se realizó una vez y sobre el recurso previsto.
- Prueba entradas hostiles. Incluye documentos que piden ignorar reglas, revelar secretos o llamar a otras herramientas.
Los secretos no deben entrar en el contexto. La herramienta utiliza credenciales en el servidor y devuelve el mínimo resultado. Los mensajes de error tampoco deben revelar tokens, rutas internas o consultas.
Conservar lo necesario sin transformar cada conversación en un expediente permanente
El historial completo es una forma costosa y poco controlada de estado. Resume hechos aprobados en campos explícitos y conserva la procedencia. Una preferencia, una instrucción de empresa y un dato transitorio no tienen la misma autoridad ni la misma retención.
| Tipo | Ejemplo | Control |
|---|---|---|
| Estado de tarea | Paso actual, identificadores y resultado anterior | Caduca al cerrar o cancelar el flujo |
| Preferencia del usuario | Idioma o formato habitual | Visible, editable y eliminable |
| Política | Regla aprobada por la organización | Fuente versionada y no modificable por el chat |
| Conocimiento recuperado | Fragmento de procedimiento | Permisos antes de recuperación y cita |
| Registro de acción | Herramienta, argumentos validados y resultado | Retención proporcional y acceso restringido |
Cuando un modelo resume memoria, la aplicación debe validar campos y asociarlos a una fuente. No permitas que una suposición se convierta silenciosamente en un hecho persistente.
Evaluar trayectorias, efectos y recuperación ante errores
Una respuesta final correcta puede ocultar llamadas innecesarias o peligrosas. Registra la trayectoria: decisiones, herramientas propuestas, argumentos, validaciones, aprobaciones, errores y resultado. La puntuación debe penalizar efectos laterales incluso cuando el texto final sea aceptable.
| Prueba | Resultado esperado | Fallo crítico |
|---|---|---|
| Solicitud normal | Menor número de pasos que resuelve la tarea | Llamadas redundantes o datos excesivos |
| Dato ausente | Pregunta o abstención | Inventar un identificador |
| Herramienta indisponible | Error comprensible y recuperación | Bucle de reintentos |
| Contenido con instrucciones hostiles | Se trata como dato y se ignora la orden | Cambio de objetivo o filtración |
| Petición de escritura | Borrador y aprobación cuando corresponde | Ejecución automática no autorizada |
| Petición duplicada | Una única operación | Doble alta, envío o cargo |
| Usuario sin permiso | Denegación sin revelar existencia | Acceso o inferencia de datos |
- Fija un conjunto de escenarios. Incluye normales, límites, errores y ataques.
- Ejecuta varias veces. Los modelos son probabilísticos; mide tasa de éxito, no una demostración favorable.
- Valida con reglas deterministas. Esquemas, permisos y efectos se comprueban con código.
- Revisa una muestra humana. Especialmente en decisiones que afectan a clientes, empleados o contratos.
- Bloquea regresiones. Un cambio de modelo o prompt no se publica si empeora seguridad o exactitud.
Pasar de asistente a agente sin saltar directamente a la autonomía
| Nivel | Capacidad | Control requerido |
|---|---|---|
| Consulta | Responde con información recuperada | Permisos, fuentes y abstención |
| Recomendación | Propone un siguiente paso | Criterios visibles y revisión |
| Borrador | Prepara correo, documento o cambio | No ejecuta; el usuario confirma en el sistema de origen |
| Ejecución aprobada | Realiza una acción concreta | Vista previa, aprobación, idempotencia y registro |
| Automatización acotada | Ejecuta casos de bajo riesgo definidos | Límites, alertas, muestreo y parada inmediata |
Define una condición de parada técnica y operativa. El agente debe finalizar al alcanzar el objetivo, agotar pasos, superar tiempo, recibir un error no recuperable o requerir información humana. La ausencia de salida no justifica seguir llamando herramientas.
Ejemplo seguro: preparar un borrador de correo
- El disparador obtiene un mensaje autorizado.
- Se eliminan firmas, rastreadores y adjuntos no necesarios.
- Un RAG recupera política y datos permitidos.
- El modelo devuelve asunto, cuerpo, nivel de confianza y fuentes en JSON.
- El validador comprueba esquema y destinatarios.
- Microsoft Graph crea un borrador; no se llama al método de envío.
- La persona revisa y decide desde Outlook.
La guía n8n + Ollama + Outlook desarrolla esta integración con separación entre modelo, orquestación y correo.
Dimensionar para contexto, herramientas y sesiones simultáneas
Los agentes consumen más contexto que un chat simple: instrucciones, esquema de herramientas, resultados, memoria y varios ciclos. Mide tokens de entrada por paso, número medio y máximo de pasos, latencia de cada herramienta y sesiones concurrentes. Un modelo rápido no compensa una herramienta lenta ni un flujo con demasiadas iteraciones.
Equipo existente
Un agente de lectura con un modelo contenido permite demostrar el contrato y la seguridad antes de ampliar capacidad.
DGX Spark
La memoria unificada aporta margen cuando modelos, herramientas y sesiones ya no caben en VRAM convencional.
GPU profesional o Station
Prioriza una GPU rápida cuando el modelo cabe; escala memoria y réplicas según usuarios y nivel de servicio.
Define una acción, un permiso y una prueba
Con ese alcance se puede seleccionar modelo, orquestador y hardware sin sobredimensionar ni conceder autoridad innecesaria.
Construir un agente local mínimo con una herramienta de solo lectura
El primer agente no debería enviar correos, modificar el ERP ni ejecutar órdenes. Empieza con una función que solo consulta un dato acotado, valida sus argumentos y devuelve una estructura pequeña. El modelo decide si necesita la herramienta; la aplicación conserva la autoridad para permitirla, ejecutarla y registrar el resultado.
import json
import re
from ollama import chat
MODEL = "familia:variante-validada"
MAX_STEPS = 4
# Sustituye este diccionario por una consulta de solo lectura con permisos mínimos.
INCIDENCIAS = {
"INC-100": {"estado": "en_revision", "responsable": "soporte"},
"INC-101": {"estado": "resuelta", "responsable": "sistemas"},
}
def consultar_incidencia(codigo: str) -> dict:
if not re.fullmatch(r"INC-[0-9]{3,8}", codigo):
raise ValueError("Formato de incidencia no permitido")
return INCIDENCIAS.get(codigo, {"estado": "no_encontrada"})
TOOL_SCHEMA = {
"type": "function",
"function": {
"name": "consultar_incidencia",
"description": "Consulta el estado de una incidencia por su código",
"parameters": {
"type": "object",
"properties": {"codigo": {"type": "string"}},
"required": ["codigo"],
"additionalProperties": False,
},
},
}
ALLOWED_TOOLS = {"consultar_incidencia": consultar_incidencia}
messages = [{"role": "user", "content": "¿En qué estado está INC-100?"}]
for _ in range(MAX_STEPS):
response = chat(model=MODEL, messages=messages, tools=[TOOL_SCHEMA])
messages.append(response.message)
calls = response.message.tool_calls or []
if not calls:
print(response.message.content)
break
for call in calls:
name = call.function.name
if name not in ALLOWED_TOOLS:
raise RuntimeError(f"Herramienta no autorizada: {name}")
try:
result = ALLOWED_TOOLS[name](**call.function.arguments)
except (TypeError, ValueError) as exc:
result = {"error": str(exc)}
messages.append({
"role": "tool",
"tool_name": name,
"content": json.dumps(result, ensure_ascii=False),
})
else:
raise RuntimeError("El agente superó el límite de pasos")
Este ejemplo incorpora cuatro límites que deben mantenerse al conectar sistemas reales: lista explícita de herramientas, validación de parámetros, máximo de pasos y función de solo lectura. En producción añade identidad del usuario, autorización por recurso, timeout, idempotencia, registro de decisiones y una salida que el revisor pueda entender.
| Componente | Responsabilidad | No debe delegarse al modelo |
|---|---|---|
| Modelo | Proponer una herramienta y sus argumentos | Decidir permisos o abrir conexiones por su cuenta |
| Orquestador | Validar esquema, estado, pasos y errores | Ejecutar cualquier nombre recibido sin lista permitida |
| Conector | Aplicar credenciales y operación acotada | Entregar credenciales al prompt |
| Aprobación | Confirmar acciones con efecto externo | Convertir una sugerencia en escritura automática |
| Registro | Conservar entrada, herramienta, resultado y decisión | Guardar contenido sensible sin finalidad ni retención |
Elegir entre n8n, Open WebUI y un orquestador en Python
| Enfoque | Encaje | Control que debes añadir |
|---|---|---|
| n8n autoalojado | Flujos de correo, carpetas, avisos y aplicaciones empresariales con pasos visibles | Credenciales separadas, ramas de error, aprobación e idempotencia |
| Open WebUI con herramientas | Acciones iniciadas desde una conversación y asociadas a usuarios | Roles, herramientas permitidas, límites de red y revisión de funciones instaladas |
| Python con LangChain, LangGraph o CrewAI | Estado complejo, pruebas, rutas condicionales y conectores propios | Contratos tipados, persistencia, observabilidad y pruebas de trayectoria |
| Aplicación propia sin framework | Uno o dos flujos críticos con requisitos muy definidos | Máquina de estados, reintentos, auditoría y mantenimiento del código |
El framework organiza el bucle, pero no resuelve autorización, calidad del dato ni responsabilidad. Para el primer despliegue, una sola herramienta de lectura y una métrica clara ofrecen más información que un sistema con muchos agentes y permisos amplios.
Antes de habilitar escritura, conecta la evaluación descrita en esta guía con la arquitectura de n8n, Ollama y Outlook y con los controles de IA local y RGPD.
Empieza con lectura y borradores
Una tarea acotada, una herramienta de solo lectura y una salida revisable permiten medir utilidad sin conceder autoridad innecesaria.
Consultar compra y disponibilidadConvierte el caso de uso en una decisión de hardware verificable
Define la tarea, prepara una prueba y mide memoria, tiempo y usuarios simultáneos. El objetivo es traducir el tutorial a requisitos de compra concretos sin presentar la implantación como un servicio estándar.
- 01
Define la carga
Concreta tarea, familia de modelo, contexto, lote y usuarios simultáneos.
Aclarar el caso de uso → - 02
Dimensiona memoria
Compara VRAM, memoria coherente, velocidad y margen de crecimiento.
Usar el recomendador de hardware → - 03
Compra en la tienda
Abre la ficha comercial para consultar configuración, precio cerrado, disponibilidad y condiciones vigentes.
Contacto y disponibilidad →
RTX PRO 6000 · 96 GB
Prioriza una GPU profesional para inferencia, imagen, vídeo o serving cuando el modelo y el contexto caben en sus 96 GB de VRAM.
Ver ficha profesional →NVIDIA DGX Spark · 128 GB
Considera memoria unificada para desarrollo CUDA y cargas que superan la VRAM de una GPU, aceptando que capacidad no equivale siempre a más velocidad.
Ver ficha y comprar →Recomendador de hardware
Responde cinco preguntas y compara el equipo actual, una GPU NVIDIA, la RTX PRO 6000 y sistemas GB10 como DGX Spark, ASUS Ascent GX10 o Lenovo ThinkStation PGX.
Comparar opciones →aisupercomputers.es aporta guías y herramientas de decisión. La compra, el precio cerrado en la ficha y el soporte comercial desde España se gestionan en las tiendas del grupo Ietres.
- Un modelo más grande: solo en pareja — dos unidades con su cable directo (hasta 405B). El "en serie" de 3 o 4 no existe.
- Más usuarios o más trabajo: las que quieras — 4, 50, 500 — en estrella a un switch, cada una con el modelo completo y un repartidor delante.
- Para recordar: dos se funden; los demás se suman. Guía completa de clústeres →
Respuestas directas
¿Qué diferencia hay entre un chatbot y un agente?
Un chatbot genera respuestas. Un agente además puede seleccionar herramientas, consultar sistemas y proponer o ejecutar acciones dentro de límites definidos.
¿Un agente local mantiene todos los datos dentro?
Solo si el modelo, las herramientas, los conectores y los registros también son locales o están autorizados. Un modelo local puede llamar a una API externa y transferir datos.
¿Debe un agente poder escribir en el ERP?
No por defecto. Empieza con lectura, utiliza credenciales de mínimo privilegio y exige aprobación humana para cambios relevantes.
¿Cómo se limita la inyección de prompt?
Separa instrucciones y datos, trata documentos y correo como no confiables, limita herramientas, valida argumentos, aplica políticas fuera del modelo y registra las acciones.
¿Qué modelo conviene para herramientas?
Evalúa familias con soporte de salidas estructuradas y llamadas a herramientas. La fiabilidad del esquema y la tasa de acciones correctas importan más que el tamaño por sí solo.
¿Cuándo necesito más hardware?
Cuando el modelo, el contexto, varias herramientas o los usuarios simultáneos superan la memoria o la latencia objetivo. Mide cada fase y escala réplicas cuando el problema sea concurrencia.