Antes de empezar
- Una tarea repetitiva y concreta
- Una entrada y una salida fáciles de comprobar
- Una persona que revise los primeros resultados
AI Supercomputers es el portal de IA local del grupo ietres.La compra se realiza en nuestras tiendas oficiales. Si una referencia no aparece con stock, consulta la posibilidad de reserva y la siguiente entrada prevista.
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.
Al terminar tendrás un asistente limitado que consulta información o prepara un borrador, sin darle permiso para actuar libremente.
No necesitas entender toda la parte técnica para comenzar. Sigue el recorrido básico y abre los apartados avanzados únicamente cuando la primera prueba funcione.
El primer objetivo no debe ser un agente autónomo. Empieza con una tarea de lectura o con un borrador que una persona revise. Así puedes medir utilidad sin dar permisos innecesarios.
Un formulario o correo entra, la IA prepara una propuesta y una persona decide qué hacer.
Compara hardware cuando el modelo sea útil pero resulte lento, no quepa o deba atender a varias personas.
Escrituras automáticas en ERP, memoria persistente, varios agentes y acciones sin revisión.
La explicación avanzada continúa debajo. Puedes consultarla cuando el uso, los datos o el número de personas lo justifiquen.
Ejecuta la guía sobre un entorno de prueba. No avances a producción hasta obtener la salida verificable y documentar la reversión.
Una tarea delimitada, herramientas pequeñas, permisos mínimos y un entorno de prueba aislado.
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 →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.
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.
| 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.
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.
El agente consulta fuentes y propone una respuesta. No modifica sistemas.
Crea un objeto revisable, como un correo en Borradores o una propuesta de cambio.
Una persona valida la acción y el sistema la ejecuta con permisos limitados.
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.
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.
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.
No necesitas esta parte para completar el tutorial básico. Ábrela únicamente si vas a administrar el sistema, compartirlo con más personas o resolver una incidencia.
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.
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».
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.
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.
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.
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.
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.
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.
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 |
| 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, evitar acciones duplicadas 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.
La guía n8n + Ollama + Outlook desarrolla esta integración con separación entre modelo, coordinación de pasos y correo.
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.
Un agente de lectura con un modelo contenido permite demostrar el contrato y la seguridad antes de ampliar capacidad.
La memoria unificada aporta margen cuando modelos, herramientas y sesiones ya no caben en VRAM convencional.
Prioriza una GPU rápida cuando el modelo cabe; escala memoria y réplicas según usuarios y nivel de servicio.
Con ese alcance se puede seleccionar modelo, orquestador y hardware sin sobredimensionar ni conceder autoridad innecesaria.
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, evitar acciones duplicadas, 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 |
| 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 evitar acciones duplicadas |
| 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, registros y avisos 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.
Una tarea acotada, una herramienta de solo lectura y una salida revisable permiten medir utilidad sin conceder autoridad innecesaria.
Consultar compra y disponibilidadLas especificaciones, funciones y límites descritos se contrastan con documentación primaria de Open WebUI, documentos y agentes. Las recomendaciones de compra, el orden de los pasos y los márgenes de planificación son criterios editoriales de AI Supercomputers: deben confirmarse con la versión instalada y una prueba real.
Workspace de Open WebUI · Knowledge y RAG · Modelos configurados · Seguridad de Tools
Un chatbot genera respuestas. Un agente además puede seleccionar herramientas, consultar sistemas y proponer o ejecutar acciones dentro de límites definidos.
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.
No por defecto. Empieza con lectura, utiliza credenciales de mínimo privilegio y exige aprobación humana para cambios relevantes.
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.
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.
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.