Cargando

Agentes y herramientas

Lección 643 min

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 actuales
  • add_duration_to_datetime - Agrega tiempo a una fecha dada
  • set_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 comandos
  • glob - Encuentra archivos
  • grep - Busca en el contenido de archivos
  • read - Lee un archivo
  • write - Crea un archivo
  • edit - Edita un archivo
  • webfetch - 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 video
  • generate_image - Crea imágenes a partir de indicaciones de texto
  • text_to_speech - Convierte texto en audio
  • post_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.