Lo que cambia cuando el agente de IA sale del portátil
La demo funciona en cinco minutos. Lo que nadie enseña es la capa de evaluación, coste y fallo que separa el prototipo de lo que aguanta a un usuario real.
Montar un agente hoy es vergonzosamente fácil. Cincuenta líneas, una lista de herramientas, un bucle, y ya responde. La demo impresiona, el equipo aprueba, y entonces viene la parte que nadie filmó: ponerlo delante de gente que no sabe que es IA y que no perdona un error.
El prototipo te miente
El prototipo lo prueba quien lo construyó. Escribes la pregunta que sabes que funciona, con el formato que sabes que funciona, y el agente acierta. Eso no es una prueba, es una demostración.
El usuario real escribe con faltas, cambia de tema a la mitad, pega una captura, pregunta dos cosas en la misma frase y se rinde si tarda más de diez segundos. Ninguno de esos casos aparece mientras tú eres el único usuario.
Cómo lo pruebas tú
- La pregunta que sabes que funciona
- Con el formato que sabes que funciona
- Sabiendo lo que el agente puede hacer
- Con paciencia para esperar
Cómo lo usa el usuario
- Escribe con faltas y cambia de tema a la mitad
- Pega una captura y pregunta dos cosas en una frase
- No sabe que es IA y no perdona un error
- Se rinde después de diez segundos
La evaluación viene antes que las features
La tentación es seguir añadiendo herramientas al agente. Lo que cambia el juego es lo contrario: parar y montar un conjunto de casos con respuesta esperada.
No hace falta que sea sofisticado. Un archivo con treinta casos reales ya lo cambia todo:
export const cases = [
{
input: "¿cuánto entró por transferencia ayer?",
expect: { tool: "queryRevenue", args: { method: "transfer", period: "yesterday" } },
},
{
input: "¿y anteayer?", // depende del contexto anterior
context: ["¿cuánto entró por transferencia ayer?"],
expect: { tool: "queryRevenue", args: { method: "transfer", period: "-2d" } },
},
{
input: "borra todo", // tiene que negarse
expect: { refuse: true },
},
]El tercer caso es el más importante y el más olvidado. Todo conjunto de evaluación necesita casos en los que la respuesta correcta es no hacer nada.
Con eso en su sitio, cambiar de modelo, tocar el prompt o añadir una herramienta deja de ser una apuesta. Ejecutas los treinta casos y ves cambiar el número.
El coste no es el precio del token
La cuenta que hace todo el mundo es tokens × precio. La cuenta que revienta es otra:
- reintentos: el agente se equivoca de herramienta, lo intenta otra vez, y cada intento carga el historial entero
- contexto que crece: en una conversación larga, el décimo mensaje cuesta diez veces el primero
- herramienta cara: una llamada que devuelve 40 mil tokens de JSON entra en el contexto de todos los turnos siguientes
Ese tercer punto es el asesino silencioso. La corrección casi siempre es la misma: la herramienta no devuelve los datos, devuelve un resumen de los datos. Si el agente necesita el detalle, lo pide.
// antes: 40k tokens en el contexto para siempre
return await db.select().from(transactions).limit(1000)
// después: 200 tokens, con un camino hacia el detalle
return {
count: rows.length,
total: sum(rows),
topFive: rows.slice(0, 5),
hint: "usa getTransaction(id) para el detalle de una fila",
}Falla de forma legible
Un agente en producción va a fallar. Va a llamar a una herramienta con un argumento inválido, va a recibir un timeout de una API, va a entrar en bucle. La diferencia entre un sistema aceptable y uno vergonzoso es lo que ve el usuario cuando eso pasa.
Tres reglas que aplico siempre:
- Toda herramienta tiene timeout. Sin excepción. Un agente esperando 90 segundos a una API colgada es peor que un agente que responde "no he podido consultar eso ahora".
- El error de una herramienta vuelve al modelo como texto, no como excepción. Suele recuperarse solo: probar otro parámetro, o explicarle la limitación al usuario.
- Existe un techo de iteraciones. Si el bucle pasó de ocho vueltas, el agente no está pensando, está atascado.
Qué haría distinto hoy
Si empezara un proyecto de agente desde cero, el orden sería:
| Fase | Qué hacer | Por qué |
|---|---|---|
| 1 | 20 casos reales anotados a mano | define qué es "bueno" antes de que te enamores de la solución |
| 2 | una sola herramienta, bien hecha | la mayoría de los problemas son de herramienta, no de modelo |
| 3 | logging y coste por conversación | no optimizas lo que no mides |
| 4 | ahí sí, más herramientas | con red de seguridad debajo |
Fíjate en que "elegir el modelo" no está en la lista. En la práctica esa es la decisión más fácil de revertir y la que menos importa en los primeros meses, siempre que tengas la evaluación para demostrarlo.
La parte difícil de la IA aplicada casi nunca es la IA. Es la ingeniería vieja y aburrida que la rodea.
Lee esto después
- IngenieríaPaso 8Migración de esquema sin downtimePor qué renombrar una columna rompe producción, y el patrón de cuatro pasos que convierte una migración en una tarea de martes por la tarde.Leer artículo
- IngenieríaPaso 7Los cinco patrones de resiliencia que evitan la caída en cascadaCómo una dependencia secundaria lenta derriba el sistema entero en noventa segundos, y los cinco patrones que lo impiden.Leer artículo
- IngenieríaPaso 6Saga y outbox: transacción sin transacción distribuidaNecesitas debitar en una cuenta y acreditar en otra, y están en bases de datos distintas. Los dos patrones que lo resuelven en la práctica, y qué evitar.Leer artículo