Los agentes representan un cambio respecto a los flujos de trabajo estructurados que hemos explorado anteriormente. Mientras que los flujos de trabajo destacan cuando conoces los pasos exactos necesarios para completar una tarea, los agentes brillan cuando el camino a seguir no está claro. En lugar de definir una secuencia rígida, le das a Claude un objetivo y un conjunto de herramientas, y luego dejas que descubra cómo combinar esas herramientas para lograr el objetivo.

Esta flexibilidad hace que los agentes sean atractivos para los desarrolladores. Puedes construir un agente una vez, asegurarte de que funcione razonablemente bien, y luego implementarlo para manejar una amplia variedad de tareas. Sin embargo, este enfoque viene con desventajas significativas en torno a la confiabilidad y el costo que exploraremos más adelante.
Cómo las herramientas hacen al agente
El verdadero poder de los agentes radica en su capacidad para combinar herramientas simples de maneras inesperadas. Considera un conjunto básico de herramientas de fecha y hora que cubrimos anteriormente en el curso:

get_current_datetime- Devuelve la fecha y hora actualesadd_duration_to_datetime- Agrega tiempo a una fecha dadaset_reminder- Crea un recordatorio para un momento específico
Cada herramienta es simple por sí sola, pero Claude puede combinarlas para manejar solicitudes diversas:

Para "¿Qué hora es?", Claude simplemente llama a get_current_datetime. Para "¿Qué día de la semana será en 11 días?", encadena get_current_datetime seguido de add_duration_to_datetime. Solicitudes más complejas como "Configura un recordatorio para ir al gimnasio el próximo miércoles" requieren las tres herramientas en secuencia.
Claude incluso puede reconocer cuándo necesita información adicional. Cuando se le pregunta "¿Cuándo vence mi garantía de 90 días?", primero le pregunta al usuario cuándo obtuvo la garantía, y luego usa esa información con add_duration_to_datetime para calcular la fecha de vencimiento.
Las herramientas deben ser abstractas
La idea clave para construir agentes efectivos es proporcionar herramientas razonablemente abstractas en lugar de herramientas hiperespecializadas. Claude Code demuestra este principio perfectamente.

Claude Code tiene acceso a herramientas genéricas y flexibles:
bash- Ejecuta comandosglob- Encuentra archivosgrep- Busca en el contenido de archivosread- Lee un archivowrite- Crea un archivoedit- Edita un archivowebfetch- Obtiene una URL
Observa lo que Claude Code no tiene: herramientas especializadas como "Refactorizar" o "Ejecutar pruebas" o "Instalar dependencias". En cambio, descubre cómo lograr estas tareas combinando las herramientas básicas disponibles. Para instalar dependencias, lee los archivos del proyecto para entender la configuración, y luego usa bash para ejecutar los comandos de instalación apropiados.
Mejor práctica: proporciona herramientas razonablemente abstractas
Al construir agentes, enfócate en herramientas que Claude pueda combinar de manera creativa en lugar de herramientas que resuelvan un problema específico. Considera un agente de creación de videos para redes sociales:

Las herramientas efectivas para este agente podrían incluir:
bash- Proporciona acceso a FFMPEG para el procesamiento de videogenerate_image- Crea imágenes a partir de indicaciones de textotext_to_speech- Convierte texto en audiopost_media- Publica contenido en redes sociales
Este conjunto de herramientas permite interacciones tanto simples como complejas. Un usuario podría solicitar "Crea y publica un video sobre programación en Python", y el agente se encarga de todo automáticamente. Alternativamente, la interacción podría ser más colaborativa:

El usuario podría decir "Quiero que hagas un video sobre Python, pero primero quiero elegir una imagen inicial para el video". El agente puede generar una imagen de muestra, mostrársela al usuario para su aprobación, y luego proceder con la creación del video una vez confirmada.
Esta flexibilidad surge naturalmente al proporcionar el nivel adecuado de abstracción en tus herramientas. Cada herramienta debe ser lo suficientemente general para ser útil en múltiples contextos, pero lo suficientemente específica para lograr un trabajo significativo cuando se combina con otras.