- Published on
Desarrollo de Agentes de Anthropic: La Simplicidad Supera la Complejidad
Definición de Agentes Inteligentes
El concepto de agentes inteligentes es diverso. Algunos los ven como "mayordomos todo en uno" capaces de pensar de forma independiente, tomar decisiones autónomas y utilizar herramientas para completar tareas complejas. Otros los consideran "empleados obedientes" que ejecutan flujos de trabajo preestablecidos. Anthropic engloba ambos bajo el término "sistemas inteligentes", diferenciando entre flujos de trabajo y agentes:
- Flujos de trabajo: Sistemas que orquestan modelos de lenguaje grandes (LLM) y herramientas a través de rutas de código predefinidas.
- Agentes: Sistemas donde un LLM guía dinámicamente su propio proceso y el uso de herramientas, controlando de forma autónoma cómo se completan las tareas.
Cuándo Optar por Agentes Inteligentes
Anthropic aconseja seguir el principio de "mantenerlo simple" al desarrollar aplicaciones de IA. No todos los escenarios requieren la construcción de sistemas inteligentes complejos. Aunque los sistemas inteligentes son poderosos, pueden llevar a respuestas más lentas y costos mayores. Los desarrolladores deben equilibrar funcionalidad y eficiencia.
- Flujos de trabajo: Adecuados para tareas claras que requieren predictibilidad y consistencia.
- Agentes: Más apropiados para escenarios a gran escala que necesitan flexibilidad y decisiones basadas en modelos.
En muchas aplicaciones, usar buenas instrucciones (prompts) junto con recuperación y ejemplos contextuales, preguntando directamente al modelo grande, suele ser suficiente.
Uso de Frameworks
Existen varios frameworks para ayudar a los desarrolladores a construir agentes de IA, como:
- LangGraph de LangChain
- El framework AI Agent de Amazon Bedrock
- Rivet, una herramienta de construcción de flujos de trabajo de modelos grandes de arrastrar y soltar
- Vellum, una herramienta GUI para construir y probar flujos de trabajo complejos
Aunque estos frameworks simplifican el proceso de desarrollo, también añaden capas de abstracción al código, haciendo que la lógica subyacente sea menos transparente, aumentando la dificultad de depuración y posiblemente introduciendo soluciones excesivamente complejas en escenarios simples.
Anthropic recomienda que los desarrolladores comiencen usando directamente las API de los modelos grandes. Muchos patrones se pueden implementar con solo unas pocas líneas de código. Si se decide usar un framework, es crucial entender su funcionamiento interno. La falta de comprensión de los mecanismos subyacentes de un framework es una causa principal de problemas de desarrollo.
El cookbook de Anthropic proporciona ejemplos concretos.
Bloques de Construcción, Flujos de Trabajo y Agentes
Bloque de Construcción Básico: LLM Mejorados
El bloque de construcción fundamental de los sistemas inteligentes son los LLM mejorados, con capacidades como la recuperación y la memoria. Los modelos de Anthropic pueden utilizar estas capacidades de forma proactiva, por ejemplo, generando consultas de búsqueda, seleccionando herramientas y decidiendo qué información conservar.
Al expandir la funcionalidad, es esencial centrarse en:
- Adaptar la funcionalidad al caso de uso específico.
- Asegurar interfaces simples y bien documentadas para el modelo.
El protocolo de contexto de modelos recientemente publicado por Anthropic facilita la integración de modelos de IA con ecosistemas de herramientas de terceros.
Flujo de Trabajo: Cadenas de Prompts
Las cadenas de prompts dividen las tareas complejas en varios pasos, con cada paso invocando el modelo grande una vez, y los pasos siguientes procesando los resultados del paso anterior. Los desarrolladores pueden añadir puntos de control en el medio para asegurar que el proceso avanza como se espera.
Las cadenas de prompts son adecuadas para dividir tareas complejas en una serie de subtareas fijas. Cada modelo se enfoca en completar una tarea simple, y aunque el tiempo de respuesta general puede ser un poco más largo, la precisión aumenta significativamente.
Ejemplos típicos de aplicación:
- Generar primero un texto de marketing y luego traducirlo a otros idiomas.
- Escribir primero un esquema de documento y verificar su cumplimiento, y luego escribir el documento completo basado en el esquema.
Flujo de Trabajo: Enrutamiento Inteligente
La técnica de enrutamiento determina el tipo de tarea de entrada y la asigna al módulo correspondiente. Este diseño permite que cada módulo se optimice para una tarea específica, evitando la interferencia entre diferentes tipos de tareas. El enrutamiento inteligente es apropiado para escenarios donde las tareas tienen características de clasificación claras. El sistema de IA puede usar un modelo de lenguaje grande o algoritmos tradicionales para identificar con precisión el tipo de tarea y enrutarla.
Ejemplos típicos de aplicación:
- En sistemas de atención al cliente, dirigir consultas generales, solicitudes de reembolso y soporte técnico a los procesos correspondientes.
- Asignar preguntas simples y comunes a modelos más pequeños y problemas difíciles y raros a modelos más poderosos, optimizando así costos y velocidad.
Flujo de Trabajo: Paralelo
Los modelos de lenguaje grandes pueden procesar tareas simultáneamente y agregar las salidas mediante programación. Las características del flujo de trabajo paralelo incluyen:
- Segmentación de tareas: Dividir una tarea en subtareas que se pueden ejecutar en paralelo y luego integrar los resultados.
- Mecanismo de votación: Ejecutar la misma tarea varias veces, seleccionando el mejor resultado o combinando múltiples respuestas.
El método paralelo es muy efectivo cuando las subtareas se pueden ejecutar en paralelo para aumentar la velocidad, o cuando se necesitan múltiples intentos para obtener resultados con mayor confianza. Para tareas complejas, enfocar cada invocación en un aspecto específico produce mejores resultados.
Ejemplos típicos de aplicación:
- Segmentación de tareas:
- Seguridad: Un modelo procesa las solicitudes de los usuarios, mientras que otro realiza la revisión del contenido.
- Evaluación del rendimiento: Diferentes modelos evalúan las métricas de rendimiento del sistema.
- Mecanismo de votación:
- Verificación de seguridad del código: Múltiples modelos de detección identifican vulnerabilidades en el código.
- Moderación de contenido: Múltiples modelos evalúan la seguridad del contenido desde diferentes perspectivas.
Flujo de Trabajo: Líder - Ejecutor
Un modelo de lenguaje grande central descompone dinámicamente las tareas, las asigna a modelos ejecutores y resume los resultados.
Este flujo de trabajo es adecuado para tareas complejas donde los pasos específicos no se pueden determinar de antemano. La división de tareas no es fija, sino que el sistema de IA la decide dinámicamente según la situación.
Ejemplos típicos de aplicación:
- Aplicaciones de programación que requieren modificaciones complejas en varios archivos.
- Tareas de búsqueda que requieren recopilar y analizar información relevante de múltiples fuentes.
Flujo de Trabajo: Evaluación - Optimización
Un LLM genera una respuesta, y otro proporciona evaluación y retroalimentación, formando un ciclo.
Este flujo de trabajo es especialmente efectivo cuando existen criterios de evaluación claros y la mejora iterativa puede aportar un valor significativo. El LLM puede proporcionar retroalimentación, similar al proceso de revisión repetida de un escritor humano.
Ejemplos típicos de aplicación:
- Traducción literaria: El modelo de evaluación identifica diferencias lingüísticas omitidas en la traducción y proporciona sugerencias de modificación.
- Búsqueda compleja: El modelo de evaluación determina si es necesario profundizar la búsqueda.
Agentes Inteligentes
Los agentes inteligentes emergen a medida que los LLM maduran en capacidades clave como la comprensión de entradas complejas, el razonamiento y la planificación, el uso de herramientas y la recuperación de errores.
El trabajo de un agente inteligente comienza con un comando del usuario o una discusión interactiva. Una vez que la tarea está clara, el agente planifica y opera de forma independiente, pudiendo requerir más información o la intervención humana para tomar decisiones.
En cada paso de la ejecución, obtener la "realidad" del entorno es crucial. El agente puede pausar en puntos de control o cuando encuentra bloqueos para obtener retroalimentación humana. Las tareas suelen terminar al completarse, pero también suelen incluir condiciones de detención.
Los agentes pueden manejar tareas complejas, pero su implementación suele ser sencilla, a menudo solo un modelo de lenguaje grande utilizando herramientas basadas en la retroalimentación del entorno en un ciclo. Por lo tanto, diseñar un conjunto de herramientas y documentarlo de forma clara y cuidadosa es esencial.
Los agentes son adecuados para problemas abiertos, donde el número de pasos necesarios es difícil de predecir y no se puede codificar una ruta fija. La autonomía de los agentes los convierte en una opción ideal para escalar tareas en entornos de confianza. Sin embargo, esta autonomía implica mayores costos y riesgo de acumulación de errores. Se recomienda realizar pruebas exhaustivas en entornos sandbox y establecer medidas de protección adecuadas.
Ejemplos de aplicación de agentes inteligentes:
- Un agente de código para resolver tareas SWE-bench que implican editar varios archivos según la descripción de la tarea.
- La función "Computer use" de Anthropic, donde Claude utiliza una computadora para completar tareas.
Combinación y Personalización
Estos bloques de construcción no son prescriptivos; los desarrolladores pueden moldearlos y combinarlos según el caso de uso. La clave del éxito es medir el rendimiento e iterar la implementación. Solo se debe considerar aumentar la complejidad cuando las soluciones más simples no son suficientes. El éxito en el campo de los LLM no radica en construir el sistema más complejo, sino en construir el sistema adecuado para las necesidades. Comienza con prompts simples, optimízalos con evaluaciones completas, y solo añade sistemas de agentes de múltiples pasos cuando las soluciones más simples no sean suficientes.
Al implementar agentes, es importante seguir estos principios:
- Mantener el diseño del agente simple.
- Priorizar la transparencia del agente, mostrando claramente cada paso planificado.
- Crear cuidadosamente la interfaz agente-computadora (ACI) con documentación y pruebas exhaustivas de las herramientas.