Saltar al contenido
Revisión pendiente desde 29 jul 20263 fuentes primarias

De chat a agente: cinco escalones que no son sinónimos

Un prompt no es una herramienta, MCP no es RAG y ninguno de los dos convierte automáticamente una aplicación en agente. Construiremos el mismo asistente ficticio cinco veces para ver qué capacidad aparece —y qué riesgo se añade— en cada escalón.

Qué vas a conseguir ahora

Un asistente local que pasa de responder sin fuentes a buscar una política mediante MCP y finalizar con una cita validada.

  1. 1Separa cada concepto
  2. 2Ejecuta cinco versiones
  3. 3Rompe y verifica los límites
60 min Evidencia

Salida de las cinco etapas, protocolo negociado, tool permitida, IDs recuperados, traza del loop y tres condiciones de parada provocadas.

Objetivos de aprendizaje
  • Distinguir llamada, tool, MCP, recuperación RAG y agente.
  • Observar cuándo el modelo decide y cuándo decide el código.
  • Implementar el ciclo MCP sobre stdio.
  • Detener repeticiones, pasos excesivos y citas inventadas.
Estado de verificación
Laboratorio comprobado el 27 de julio de 2026 con MCP 2025-11-25, Node.js 26.4.0, Ollama 0.32.1 ygemma3:4b. Sus pruebas no dependen del modelo. Las etapas generativas se vuelven a evaluar al cambiar modelo o versión.
En cristiano: sistema agéntico. Es una aplicación donde un modelo puede elegir el siguiente paso según el objetivo y lo que observa. El código sigue controlando herramientas, permisos, validaciones, presupuesto y parada.

El mapa antes del código

Estos conceptos pueden combinarse, pero responden a preguntas distintas:

Terminal
LLAMADA AL MODELO
  pregunta: ¿qué texto genera con el contexto recibido?

TOOL
  pregunta: ¿qué función acotada puede ejecutar?

MCP
  pregunta: ¿cómo descubre e invoca esa capacidad con un protocolo común?

RAG
  pregunta: ¿qué evidencia recuperamos antes de pedir una respuesta?

AGENTE
  pregunta: ¿puede elegir el siguiente paso según la observación?

SKILL
  receta reutilizable para hacer una tarea con criterio

SUBAGENTE
  trabajo delegado con contexto y herramientas separados
Idea clave. Añade complejidad solo cuando puedas señalar qué capacidad nueva aporta. Una función local puede bastar sin MCP; una llamada con buen contexto puede bastar sin loop; un workflow fijo suele ser más predecible que un agente.

Un único caso para comparar

Tienda Brújula es una empresa inventada. Su política sintética afirma que las compras online pueden devolverse durante treinta días naturales desde la entrega. Preguntaremos por ese plazo en las cinco versiones.

Usar siempre la misma pregunta evita confundir una arquitectura mejor con un ejemplo más fácil.

Terminal
OBJETIVO
¿Cuál es el plazo de devolución de una compra online
en Tienda Brújula?

FUENTE SINTÉTICA
[DEV-01] Las compras online pueden devolverse dentro
de los 30 días naturales posteriores a la entrega.

Prepara el laboratorio

El código es MIT, no utiliza cuentas ni dependencias y limita Ollama a loopback. Las pruebas automáticas usan decisiones simuladas para que la seguridad no dependa de que un modelo “se porte bien”.

Terminal
git clone https://github.com/aulafy/taller.git
cd taller/cursos/agentes-automatizacion/laboratorios/de-chat-a-agente

npm run verificar
Comprueba que funciona. Deben superar cinco pruebas y una auditoría: recuperación, contrato de tool, ciclo MCP, final correcto, repetición, cita inventada y máximo de pasos.

Etapa 1 · Una llamada no tiene tus datos

El modelo recibe la pregunta, pero no la política ficticia. En la ejecución verificada respondió “15 días” e incluso inventó una URL. Eso no demuestra que todos los modelos fallen siempre; demuestra que una frase plausible sin evidencia no es una respuesta de negocio.

Terminal
OLLAMA_MODEL=gemma3:4b npm run etapa:1

salida observada:
  respuesta: "15 días naturales"
  URL citada: inventada
  evidencia: []
  estado: no usar como hecho
Cuidado. Pedir “no alucines” no conecta un modelo con una política ni valida una fuente. El sistema debe proporcionar evidencia y comprobar la salida.

Etapa 2 · Una tool es una función con contrato

buscar_politica acepta una consulta breve y devuelve fragmentos con IDs. El código la llama directamente: todavía no hay MCP ni decisión del modelo.

Terminal
npm run etapa:2

entrada:
  tool: buscar_politica
  consulta: "plazo devolución compra online"

salida:
  DEV-01: política online de 30 días
  DEV-02: política de tienda física de 14 días

La tool no acepta rutas, comandos ni nombres arbitrarios. Un esquema estrecho reduce ambigüedad, pero la validación real se realiza también en el servidor.

Etapa 3 · MCP estandariza la conexión

Ahora un cliente inicia un servidor local como subproceso. Ambos intercambian JSON-RPC por entrada y salida estándar. Primero negocian versión y capacidades; después el cliente envía la notificación de inicialización, lista tools y llama a la misma búsqueda.

Terminal
npm run etapa:3

1. initialize
   protocolo solicitado: 2025-11-25
2. notifications/initialized
3. tools/list
   tools: [buscar_politica]
4. tools/call
   resultado: DEV-01, DEV-02
5. cerrar stdin y terminar el subproceso
Idea clave. MCP no decide cuándo actuar. Define cómo cliente y servidor negocian y usan capacidades. La decisión puede pertenecer a una persona, a un workflow o a un modelo.
Cuidado. La especificación recomienda mantener una persona capaz de denegar invocaciones. Si utilizas transporte HTTP, aparecen además autenticación, validación de Origin, sesiones y riesgo de exposición. Este primer servidor usa stdio y una única tool de lectura.

Etapa 4 · RAG añade evidencia antes de generar

La recuperación puntúa los documentos y selecciona los fragmentos más próximos a la pregunta. El modelo recibe esos textos y la orden de responder solo con la evidencia y citar sus IDs.

Terminal
OLLAMA_MODEL=gemma3:4b npm run etapa:4

recuperados: [DEV-01, DEV-02]
respuesta observada:
  "30 días naturales posteriores a la entrega [DEV-01]."
Cuidado. RAG no garantiza verdad. Puede recuperar el fragmento equivocado, omitir uno necesario o sufrir instrucciones maliciosas dentro del corpus. Evalúa recuperación y respuesta por separado.

Etapa 5 · El modelo elige el siguiente paso

En la última versión, el modelo devuelve una decisión estructurada: buscar o finalizar. El controlador solo reconoce esas dos acciones. Después de cada búsqueda añade la observación y vuelve a preguntar qué hacer.

Terminal
OLLAMA_MODEL=gemma3:4b npm run etapa:5

paso 1
  decisión: buscar_politica
  observación: [DEV-01, DEV-02]

paso 2
  decisión: finalizar
  respuesta: "30 días naturales posteriores a la entrega"
  citas: [DEV-01]

estado: completed
pasos: 2

El prompt propone; el código limita

  • Allowlist: solo existe buscar_politica.
  • Solo lectura: no hay shell, rutas, red externa ni escritura.
  • Máximo: tres decisiones por tarea.
  • Repetición: la misma tool con los mismos argumentos corta el bucle.
  • Citas: el final debe citar un ID recuperado durante esa ejecución.
  • Destino: Ollama solo puede usar localhost o una IP de loopback.
Terminal
PROVOCA LOS FALLOS

1. tools/list antes de inicializar
   esperado: sesión no inicializada

2. tool = leer_archivo
   esperado: tool no permitida

3. repetir búsqueda idéntica
   esperado: bucle detenido

4. finalizar con cita FAKE-99
   esperado: cita ausente o inventada

5. seguir después de tres pasos
   esperado: máximo alcanzado
Comprueba que funciona. No des por terminada la misión solo porque la respuesta sea “30 días”. Explica qué componente aportó evidencia, cuál estandarizó la tool, quién eligió cada paso y qué tres reglas impidieron continuar.

Cuándo detener la escalera antes

  • Si solo redactas o clasificas con contexto disponible, usa una llamada.
  • Si el camino es fijo, usa un workflow y gates deterministas.
  • Si una función solo vive dentro de tu aplicación, MCP puede no aportar todavía.
  • Si no puedes evaluar la recuperación, no añadas un loop sobre un RAG débil.
  • Si una acción tiene impacto, añade vista previa y aprobación humana antes de escritura.

Fuentes primarias consultadas

Las publicaciones de X detectadas por el radar de Grok se usaron únicamente para priorizar la necesidad educativa; no sustentan las afirmaciones técnicas.

Guardar y reabrir el proyecto.
Abre el laboratorio completo en Aulafy/Taller y guarda dos evidencias: la traza correcta de dos pasos y un fallo intencionado por cita inventada. Si no puedes explicar ambas, repite antes de añadir una tool con escritura.

Si has guardado la evidencia de esta lección, continúa con «Subagentes con roles». Si no, repite la comprobación antes de avanzar.

Mapa completo de AulafyConsulta cómo encaja esta lección sin salir de tu ruta.

Mapa completo de Aulafy

Cómo se relacionan todos los cursos

No es una lista que debas completar. Empieza por la base, elige un resultado y profundiza solo cuando tu proyecto necesite más control.

  1. 1Comprender
  2. 2Aplicar o construir
  3. 3Operar con confianza
01

Empieza aquí

Crea una base común: qué puede hacer la IA, cómo pedir resultados y cómo comprobarlos antes de especializarte.

Desde esta base puedes aplicar la IA a una tarea o aprender a construir con código.

02

Elige una aplicación

Convierte la base en un resultado visible: una web, una mejora de negocio, contenido o una experiencia interactiva.

Si necesitas mantener código, datos o infraestructura, continúa por la rama técnica.

03

Construye con código

Prepara el entorno, trabaja con agentes de programación y aprende a ejecutar modelos con control sobre tus proyectos.

Esta rama prepara los conocimientos necesarios para diseñar y operar sistemas de IA fiables.

04

Lleva sistemas a producción

Combina recuperación, agentes, evaluación, seguridad, despliegue y adaptación de modelos cuando el problema lo exija.

No es obligatorio completarlo todo: elige solo la pieza que tu sistema necesita y vuelve al mapa cuando crezca.

Ver catálogo completo