Los agentes de IA son lo más sobrevendido y lo más subestimado del ecosistema actual al mismo tiempo. Sobrevendidos porque la demo siempre funciona; subestimados porque cuando los implementas en producción, aprendes cosas que ningún tutorial menciona. Este es mi reporte honesto después de tres meses con un agente en producción.
Qué es un agente (de verdad)
Un agente no es magia. Es un loop: el LLM decide qué herramienta usar, la ejecuta, observa el resultado, y decide el siguiente paso. Repite hasta completar el objetivo o quedarse sin intentos.
[Objetivo] → LLM "piensa" → Elige herramienta → Ejecuta → Observa → LLM "piensa" → ...
La clave está en las herramientas que le das. Un agente sin buenas herramientas es un LLM caro que hace loops inútiles.
Mi caso de uso: revisión automática de PRs
El agente que construí hace esto al recibir un PR:
- Lee el diff del PR (GitHub API)
- Consulta las convenciones del equipo (RAG sobre docs internos)
- Ejecuta el linter y los tests (shell tool)
- Genera un reporte estructurado
- Crea un ticket en Jira si encuentra problemas críticos
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI
from langchain.tools import tool
@tool
def leer_pr(pr_url: str) -> str:
"""Lee el diff de un Pull Request de GitHub y retorna los cambios."""
# implementación con PyGithub
...
@tool
def consultar_convenciones(pregunta: str) -> str:
"""Consulta las convenciones de código del equipo."""
# implementación con RAG
...
@tool
def ejecutar_linter(ruta: str) -> str:
"""Ejecuta ESLint en la ruta especificada y retorna errores."""
import subprocess
result = subprocess.run(["eslint", ruta, "--format=json"], capture_output=True)
return result.stdout.decode()
herramientas = [leer_pr, consultar_convenciones, ejecutar_linter]
llm = ChatOpenAI(model="gpt-4o", temperature=0)
agente = create_openai_tools_agent(llm, herramientas, prompt)
executor = AgentExecutor(agent=agente, tools=herramientas, max_iterations=10)
Lo que nadie te dice sobre los agentes
Fallan de formas creativas. El agente decidió una vez ejecutar el linter en / (la raíz del servidor) en lugar de en el directorio del proyecto. Válido técnicamente. Desastroso en práctica. Los límites y validaciones en las herramientas son obligatorios, no opcionales.
El temperature=0 es tu amigo. Para agentes que toman decisiones con consecuencias reales, cualquier temperatura mayor a 0 introduce variabilidad que hace imposible predecir el comportamiento. Los tests fallan de forma aleatoria. No vale la pena.
El costo se dispara rápido. Un agente con 5 pasos en GPT-4o puede costar $0.15 por ejecución. En un equipo que abre 20 PRs al día, eso es $90/mes solo en un agente. Mide desde el día uno.
El patrón que funciona en producción
Después de muchos intentos, llegué a este patrón:
- Agentes para orquestación, no para lógica de negocio
- Herramientas deterministas con validación estricta de inputs
- Límite de iteraciones conservador (máx 8-10)
- Logging exhaustivo de cada paso del loop
- Fallback manual siempre disponible
Los agentes no son autónomos. Son amplificadores de flujos de trabajo que ya funcionan. Empieza por ahí.