Saltar al contenido principal

Tutoriales de IA

Guías prácticas y probadas para autoalojar infraestructura de IA en una Instancia WEC: despliega agentes, conecta tus propios modelos, añade canales, evaluaciones y observabilidad. Cada guía se ejecuta desde cero en un servidor real, con los comandos, versiones y correcciones reales.

Level
Topic

Endurecimiento de la infraestructura de IA autoalojada

IntermedioParte 1

Tu firewall te está mintiendo: endurecimiento de redes Docker para sistemas multi-agente

· 16 min de lectura

Una caja ejecutando cinco pilas de agentes, un firewall configurado para denegar todo, y servicios que aún responden desde Internet público. Investigamos un despliegue real, encontramos una base de datos sin contraseña, demostramos por qué UFW nunca ve el tráfico de Docker, y lo solucionamos de cuatro maneras — cada comando y resultado de una ejecución en vivo.

dockerseguridadredesautoalojamientoagentesendurecimiento
Leer más →
IntermedioParte 2

Root por defecto: endurecimiento del privilegio del contenedor en una pila de IA autoalojada

· 9 min de lectura

Dos de los seis contenedores detrás de un despliegue en vivo de Langfuse estaban ejecutándose como root, sin razón aparente. Arreglarlo tomó una línea cada uno — y rompió un servicio que no tenía nada que ver con la solución. Una verdadera conversión, un verdadero fallo de coordinación, y cómo detectar ambos.

dockerseguridadcontenedoresautoalojamientoagentesendurecimiento
Leer más →
IntermedioParte 3

Un solo inicio de sesión para todo: poniendo authentik delante de una app autoalojada

· 22 min de lectura

La Parte 2 arregló cómo se ejecutan los contenedores. Esta arregla quién puede iniciar sesión. Despliega authentik como tu propio proveedor de identidad, conecta Langfuse a él por OIDC, y entiende las piezas — proveedor, aplicación, URI de redirección, scopes — en lugar de copiar una configuración. Incluye los dos fallos que produjo una ejecución real: un archivo compose que se traga tus ajustes en silencio, y OAuthAccountNotLinked.

seguridadssooidcauthentikidentidadlangfuseautoalojamientoendurecimiento
Leer más →
IntermedioParte 4

La vinculación que no estaba: control de acceso por grupos, y lo que el SSO no protege

· 18 min de lectura

La Parte 3 publicó SSO con vinculaciones vacías. Cerrar ese hueco en el gateway LiteLLM destapó algo peor: el asistente de authentik nos dejó configurar las vinculaciones, las mostró en su propia tabla, y no guardó ninguna — sin error, sin aviso. Después, ya con el control de acceso funcionando, la API respondió a una petición desde un shell sin cuenta, sin sesión y sin pertenencia. Ambas cosas son el post.

seguridadssooidcauthentikidentidadrbaclitellmgatewayendurecimiento
Leer más →
IntermedioParte 5

La clave que expira: darle a un agente su propia identidad en el gateway

· 20 min de lectura

La Parte 4 terminó con un shell, una clave estática y un modelo que respondió. Esto reemplaza esa clave por un token que emite tu proveedor de identidad, que lleva un scope, y que muere a los cinco minutos. authentik lo emite por client credentials, el gateway lo verifica en veinticinco líneas, y tres códigos de estado demuestran el límite. Incluye el requisito que authentik no documenta, y el muro de licencia con el que chocas si sigues la propia guía de LiteLLM.

seguridadoauth2oidcauthentikidentidadlitellmgatewayagentesendurecimiento
Leer más →
IntermedioParte 6

El token válido equivocado: autenticar un servidor de herramientas MCP con authentik

· 17 min de lectura

La parte 4 de orquestación de agentes recortó las herramientas en el cliente y admitió que el servidor seguía fiándose de quien alcanzara el puerto. Esto pone un verificador de JWT delante, con su propio cliente en authentik, de modo que el servidor de herramientas rechaza a quien llama sin identificarse — y rechaza también el token válido del gateway, porque un proveedor aparte significa un emisor aparte. Incluye el ayudante de client credentials que la documentación describe y que aquí no puede funcionar, y los cuatro 404 silenciosos que produce en lugar de decirlo.

seguridadoauth2oidcauthentikidentidadmcpagentesautoalojamientoendurecimiento
Leer más →
IntermedioParte 7

Limita la salida de un contenedor de agente para que solo alcance una API y nada más

· 23 min de lectura

Todas las partes anteriores de esta serie controlan qué puede llamar un agente. Ninguna controla adónde puede ir. Las mitigaciones de OWASP para Agencia Excesiva son tres reglas sobre herramientas y no dicen nada sobre la red. Esto pone una política de denegación por defecto delante de un contenedor, permite exactamente una API, y demuestra el límite con una resolución que funciona y un paquete que muere. Incluye la regla de conntrack que todo el mundo te dice que añadas y que esta no necesita, y una medición equivocada por tres órdenes de magnitud.

seguridaddockerredesiptablesfirewallagentesautoalojamientoendurecimiento
Leer más →
IntermedioParte 8

Mueve el demonio de Docker fuera de root para que una fuga del contenedor caiga en un usuario común

· 15 min de lectura

Si puedes ejecutar docker sin sudo, ya puedes leer cualquier archivo de la máquina. No por un fallo — así está construido Docker. Un solo comando lo demuestra. En un host que ejecuta agentes que corren código generado, ese es el ataque completo, y los contenedores no-root de la Parte 2 no lo tocan. Esto mueve el propio demonio a una cuenta sin privilegios, con la aritmética de UID que puedes comprobar, cuatro puntos donde la instalación te lleva contra un muro en Ubuntu, y qué deja de funcionar después.

seguridaddockerrootlesscontenedoresprivilegiosagentesautoalojamientoendurecimiento
Leer más →
IntermedioParte 9

Aísla el código que escribe tu agente y comprueba que cada límite se aplicó de verdad

· 12 min de lectura

OWASP nombra la ejecución de código generado por el modelo mediante exec o eval como una vulnerabilidad propia, te dice que trates al modelo como no confiable — y no dice nada sobre cómo contenerlo. Así que construimos la contención: sin red, 256 MB, 64 procesos, disco de solo lectura, sin capacidades. Todo eso funcionó. El límite de CPU fue rechazado de plano, y ocho bucles infinitos se llevaron el 605% del host. La causa es una línea de configuración de systemd que nadie menciona, y el arreglo no necesitó reiniciar pese a que la documentación insiste en lo contrario.

seguridaddockersandboxagentesejecución-de-códigocgroupsautoalojamientoendurecimiento
Leer más →
IntermedioParte 10

Dale a cada herramienta MCP su propio ámbito y devuelve un rechazo sobre el que el cliente pueda actuar

· 12 min de lectura

La parte 6 protegió todo el servidor con un solo ámbito, lo que significaba que el token que dejaba a un agente consultar un cliente también le dejaba emitir reembolsos. Separarlo por herramienta es fácil. Hacer que el rechazo sea útil no lo es: la implementación obvia devuelve HTTP 200 con el error enterrado en el cuerpo, así que el cliente no tiene nada con lo que disparar una autorización escalada. Conseguir el 403 y el desafío WWW-Authenticate que define la especificación implica salir por completo de la abstracción del framework — y la versión que lo hace decodifica el token una segunda vez, sin verificar.

seguridadmcpoauth2authentikjwtámbitosagentesautoalojamientoendurecimiento
Leer más →

Orquestación de agentes con LangGraph

IntermedioParte 1

Checkpoints de un agente LangGraph en una instancia WEC para que las caídas no te cuesten nada

· 21 min de lectura

Persiste el estado del agente en Postgres sobre una instancia WEC, llama a un modelo en la API de Inferencia de WEC, y luego mata el proceso a mitad de ejecución dos veces y reanuda ambas desde exactamente donde se detuvo — además de la pausa de aprobación humana, y la interrupción que dispara tus efectos secundarios dos veces en silencio.

aiagenteslanggraphstatepostgreslangfuseautoalojamientowecwec-inference
Leer más →
IntermedioParte 2

Pasar trabajo entre agentes LangGraph sin corromper el estado compartido

· 17 min de lectura

Un supervisor enruta trabajo a especialistas, un agente lo traspasa a mitad de tarea, y dos agentes escriben la misma clave de estado en el mismo paso. Uno de esos casos lanza un error en vez de elegir un ganador — y la decisión de enrutamiento cuesta 412 tokens de salida para decir una palabra.

aiagenteslanggraphmulti-agentstatepostgreslangfuseautoalojamientowecwec-inference
Leer más →
IntermedioParte 3

Reservar citas y reembolsar facturas desde un agente LangGraph con MCP

· 21 min de lectura

Los agentes de agenda y facturación de las Partes 1 y 2 nunca agendaron ni facturaron nada. Esto les da un calendario, una lista de clientes y un reembolso que ningún modelo puede emitir solo — por MCP, sobre la especificación sin sesiones, con el modelo en WEC Inference. Incluye tres cosas que nadie documenta: tu servidor sigue usando sesiones por defecto, ctx.elicit es la API vieja y su error de era va al modelo, no a ti, y cache=True no hace nada si el servidor no anuncia un TTL.

aiagenteslanggraphlangchainmcpherramientasautoalojamientowecwec-inference
Leer más →
IntermedioParte 4

Repartir una caja de herramientas MCP entre dos agentes para que el de agenda no pueda emitir reembolsos

· 14 min de lectura

La Parte 3 le dio a un solo agente las cinco herramientas y dejó que una pausa humana vigilara la peligrosa. Esa guarda depende de que el modelo pregunte. Esto reparte el mismo servidor MCP entre un agente de agenda y uno de facturación, de modo que el de agenda no puede reembolsar una factura por la razón más simple que existe: la herramienta nunca estuvo en su lista. Luego el supervisor vuelve encima, y resulta que el enrutado no es la garantía.

aiagenteslanggraphlangchainmcpherramientasseguridadautoalojamientowecwec-inference
Leer más →

Autoalojamiento de un gateway de LLMs

IntermedioParte 1

Un endpoint, muchos modelos: despliega un gateway LLM en una instancia WEC

· 16 min de lectura

Cada aplicación en una caja que tiene la misma clave API es un problema esperando a suceder. Un gateway soluciona eso: un endpoint, claves específicas por aplicación, presupuestos por clave y un registro de quién gastó qué. Desplegado de verdad en un host que ya ejecuta cinco otras pilas, incluyendo las partes que nos sorprendieron.

llmgatewaydockerautoalojamientoapilitellmwec
Leer más →
IntermedioParte 2

Enrutamiento de complejidad de LiteLLM: el modelo adecuado para cada solicitud y su costo en latencia

· 13 min de lectura

Cómo el enrutador de complejidad de LiteLLM decide qué modelo responde a una solicitud: las siete dimensiones de puntuación, la aritmética en un prompt real y una comparación medida del puntuador de palabras clave gratuito frente a un clasificador LLM.

llmgatewayenrutamientocosteautoalojamientolitellmwec
Leer más →
IntermedioParte 3

Enmascarar PII en la puerta de enlace: configurar Presidio, además de la línea que los documentos omiten

· 22 min de lectura

Configura el enmascaramiento de PII en una puerta de enlace LLM autoalojada con Presidio. El enmascaramiento puede estar en tres lugares: antes del modelo, en la respuesta, o solo en el camino hacia tus registros, y solo uno mantiene tu aplicación funcionando. Sigue la configuración documentada y las respuestas de tu modelo regresan redactadas; aquí está el porqué y la única configuración que lo soluciona.

llmgatewaypiiprivacyguardrailsautoalojamientolitellmpresidiowec
Leer más →
AvanzadoParte 4

Rastros limpios, respuestas intactas: enmascarando PII en los registros de LiteLLM sin corromper la respuesta

· 16 min de lectura

Enviar el tráfico de un gateway a Langfuse y la respuesta del modelo lleva la PII de vuelta a tus rastros. Ampliar el alcance de Presidio y enmascara la respuesta que reciben tus usuarios en su lugar. Ninguna de las configuraciones te da ambas cosas, así que aquí hay un callback de cuarenta líneas que lo hace — medido, y con el error que lo hace más lento.

llmgatewaypiiprivacyguardrailsobservabilidadlangfuselitellmpresidiowec
Leer más →
AvanzadoParte 5

Prueba de carga en un gateway LLM: encuentra el atasco que la mediana esconde

· 20 min de lectura

La Parte 4 midió una llamada bloqueante dentro de un callback en 200-350ms y advirtió que el daño real solo aparece bajo concurrencia. Esto lo ejecuta: dieciséis peticiones a la vez, con un control contra el upstream para distinguir la culpa de tu gateway de la del modelo. Las medianas de las dos versiones son casi idénticas. Una versión descarta peticiones y deja de enmascarar en silencio.

llmgatewaylitellmperformanceconcurrencypresidioobservabilidadwecwec-inference
Leer más →

Autoalojamiento de Hermes

Evaluaciones de IA y observabilidad

PrincipianteParte 1

Evalúa tus modelos con Promptfoo en la API de Inferencia WEC

· 15 min de lectura

Deja de estimar la salida de LLM. Construye un verdadero arnés de evaluación con Promptfoo apuntando a la API de Inferencia WEC — afirmaciones, límites de latencia, verificaciones de esquema JSON, rúbricas calificadas por el modelo, una comparación de modelos totalmente WEC, y una puerta CI. Cada comando y resultado es real.

aievalspromptfooinferenciatestingobservabilidad
Leer más →
IntermedioParte 2

JSON confiable: valida el esquema de la salida estructurada de tu modelo

· 16 min de lectura

Los LLM prometen JSON y entregan cercas de markdown y razonamiento. Construye una evaluación de Promptfoo que clasifique tickets de soporte en JSON validado por esquema en la API de Inferencia WEC — con transformaciones para recuperar salidas desordenadas, una matriz de fiabilidad del modelo y una puerta CI. Cada comando y resultado es real.

aievalspromptfooinferenciajsonstructured-outputobservabilidad
Leer más →
IntermedioParte 3

Deja de escribir casos de prueba a mano: genera un conjunto de evaluación con la API de WEC

· 16 min de lectura

Dos casos de prueba escritos a mano no son una evaluación. Usa la API de Inferencia de WEC para generar un conjunto de datos de evaluación etiquetado — luego valídalo y curátalo, porque las etiquetas generadas no son automáticamente correctas. El resultado es datos de prueba reales a gran escala; aliméntalo a tu arnés y la cobertura revela las malas clasificaciones y las etiquetas debatibles que dos casos ocultarían. Cada comando y resultado es real.

aievalspromptfooinferenciadatasetssynthetic-dataobservabilidad
Leer más →
AvanzadoParte 4

Captura lo que tus pruebas no ven: observa y evalúa tu aplicación WEC en producción con Langfuse

· 20 min de lectura

Las evaluaciones de CI pasan en un conjunto de pruebas fijo, pero la producción envía entradas que nunca probaste. Autoalojar Langfuse en una instancia WEC, rastrear cada llamada real, evaluar automáticamente el tráfico en vivo con un juez LLM, profundizar en el paso exacto que falló y retroalimentar los fallos para hacer tus evaluaciones más fuertes. Cada comando — y cada callejón sin salida — es real.

aiobservabilidadlangfuseevalsinferenciaproducciónautoalojamiento
Leer más →
AvanzadoParte 5

El proyecto final: construye, evalúa y observa un asistente de documentación RAG en la API de WEC

· 30 min de lectura

Construye un servicio RAG con forma de producción en Docker: extrae un sitio de documentación real, genera embeddings localmente, genera texto en la API de Inferencia de WEC — y luego caza una alucinación real, encuentra su causa en tu propio scraper, la arregla y la fija con un test de regresión. Cada comando, número y error es real.

airagembeddingschromadbdockerevalspromptfoolangfuseinferencia
Leer más →
AvanzadoParte 6

Prueba de regresión de tu servicio RAG con DeepEval — y resuelve un debate sobre modelos con datos

· 20 min de lectura

Envuelve el asistente RAG de la parte 5 en una suite de DeepEval en contenedor juzgada por gemma4 en la API de Inferencia WEC — sin clave de OpenAI en ninguna parte. Luego úsalo para responder a una pregunta real: ¿deberíamos cambiar nuestro modelo de generación? La misma calidad, 5.5× los tokens: la evaluación dice que no. Cada comando, número y error es real.

aievalsdeepevalragdockerciinferencia
Leer más →
IntermedioParte 7

Trazado a nivel de componente: depuración de llamadas a herramientas del agente

· 13 min de lectura

El pensamiento de tu agente y sus acciones son dos capas diferentes. Construye un agente que llame a herramientas en WEC Inference, trázalo con Langfuse y luego depura dos fallos reales del trazado, incluyendo la respuesta incorrecta y confiada que nunca lanza un rastreo de pila.

aievalsobservabilidadlangfuseagentestrazadoinferencia
Leer más →
PrincipianteParte 8

Agrega búsqueda web a tus llamadas de WEC Inference

· 3 min de lectura

Tu asistente RAG responde bien a partir de tus documentos, pero no sobre nada reciente. WEC Inference ahora tiene una herramienta de búsqueda web integrada: agrégala a una llamada de chat y el modelo obtiene información actual. Una prueba rápida antes/después.

aiinferenciaweb-searchtool-use
Leer más →

Automatización de WhatsApp en WEC

Autoalojamiento de OpenClaw

PrincipianteParte 1

Desplegar OpenClaw en una instancia WEC a través de Docker Compose

· 14 min de lectura

Desde una instancia WEC nueva hasta un agente OpenClaw autoalojado que realmente responde — Docker Compose, tu propia clave de modelo y cada error real y solución de un despliegue en vivo.

aiautoalojamientodockeropenclawvps
Leer más →
IntermedioParte 2

Asegurar OpenClaw con un proxy inverso Caddy + HTTPS

· 9 min de lectura

Coloca Caddy frente a OpenClaw para un verdadero HTTPS y autenticación emparejada por dispositivo, luego cierra los puertos del gateway para que el proxy sea la única forma de acceso — problemas y todo.

aiautoalojamientodockeropenclawcaddyhttpsseguridad
Leer más →
PrincipianteParte 3

Agregar un canal de Telegram a OpenClaw

· 7 min de lectura

Habla con tu agente OpenClaw autoalojado desde tu teléfono. Crea un bot de Telegram, conéctalo, limpia la puerta de emparejamiento y chatea — capturado de una ejecución real.

aiautoalojamientoopenclawtelegramchatbot
Leer más →
IntermedioParte 4

Haz que OpenClaw sea privado con una VPN de malla NetBird

· 20 min de lectura

Coloca OpenClaw en una malla privada con NetBird, redirige tu nombre de host a la IP de la malla y cierra los puertos públicos — así la misma URL de chat funciona solo para tus dispositivos. Comandos reales y problemas de una ejecución en vivo.

aiautoalojamientoopenclawnetbirdvpnmallaseguridad
Leer más →
PrincipianteParte 5

Ejecutar OpenClaw en Modelos WEC

· 8 min de lectura

Intercambia el proveedor cerrado por la propia inferencia de WiLine: apunta tu agente OpenClaw autoalojado a Modelos WEC — misma caja, un cambio de base-URL/clave/modelo, sin bloqueo por token.

aiautoalojamientoopenclawmodelos-wecinferencia
Leer más →
PrincipianteParte 6

Agregar un canal de WhatsApp a OpenClaw

· 6 min de lectura

Coloca tu agente autoalojado en WhatsApp. Agrega el canal, confía en el plugin, escanea un QR — y entiende por qué un enlace de compañero hace que el agente actúe como tu cuenta. Cada comando y error de una ejecución real.

aiautoalojamientoopenclawwhatsappchatbot
Leer más →