8 puntos por GN⁺ 2025-04-09 | Aún no hay comentarios. | Compartir por WhatsApp
  • Qodo es un equipo que desarrolla herramientas de asistencia de programación con IA desde la era de GPT-3, y recientemente eligió el framework LangGraph para crear agentes de programación más flexibles y dinámicos
  • Este documento explica cómo LangGraph logró satisfacer al mismo tiempo la flexibilidad del flujo de desarrollo y los estándares de calidad del código

De un enfoque estructurado inicial a la transición hacia LangGraph

  • En los inicios basados en GPT-3, el foco estaba en tareas estructuradas con flujos claros, como generación de pruebas, revisión de código y trabajo de mejora
  • Después de Claude Sonnet 3.5, el rendimiento de los LLM mejoró notablemente, lo que hizo posible diseñar agentes más dinámicos
  • Antes solo eran posibles flujos de trabajo estandarizados, pero se buscó desarrollar un sistema capaz de responder con flexibilidad a las solicitudes de los usuarios aprovechando los nuevos modelos
  • En el proceso de buscar un framework que permitiera experimentar y validar con rapidez, se terminó eligiendo LangGraph, que pudo escalar más allá de una prueba de concepto inicial hasta un producto real

Convivencia entre flexibilidad y reglas claras

  • LangGraph ofrece una estructura de grafo basada en una máquina de estados (state machine)
  • Cada nodo se encarga de una etapa individual del flujo de trabajo (recolección de contexto, planificación, ejecución, validación, etc.), y las aristas (edge) definen las reglas de transición entre etapas
  • Según la densidad de las aristas, cambia el nivel de flexibilidad o estructuración del flujo de trabajo
    • Grafo disperso → flujo fijo y predecible
    • Grafo denso → flujo dinámico y posibilidad de elegir entre varias rutas
  • La ventaja de LangGraph es que, a medida que el modelo evoluciona, se puede reajustar fácilmente el grado de estructuración del flujo de trabajo
  • El flujo principal tiene una estructura como la siguiente:
    • Recolección de contexto → planificación de tareas → ejecución de código → validación de resultados → repetición en caso de fallo

Una interfaz simple e intuitiva

  • LangGraph permite definir flujos de trabajo de forma declarativa, por lo que el código se lee casi como documentación
  • Funciona declarando un grafo de estado y agregando nodos y aristas
  • También es fácil implementar flujos condicionales (por ejemplo, volver al nodo de ejecución si falla la validación)
  • A diferencia de las abstracciones complejas de LangChain, LangGraph expone la lógica en su estructura, lo que ofrece una buena experiencia para desarrolladores

Reutilización entre distintos flujos de trabajo

  • Gracias a su estructura basada en nodos, es fácil reutilizar componentes
    • Por ejemplo, los nodos de recolección de contexto y validación se reutilizan repetidamente en la mayoría de los flujos
  • Incluso al crear nuevos flujos especializados (como TDD), es posible volver a conectar nodos existentes para ampliar el sistema rápidamente

Funcionalidad de gestión de estado incluida de forma nativa

  • LangGraph incluye de forma nativa funciones de almacenamiento de estado, lo que hace muy simple implementar persistencia
    • Por ejemplo, la función de checkpointing mediante Postgres puede configurarse con unas pocas líneas de código
  • Se puede guardar el estado completo, incluido el contexto recopilado, los planes y los resultados de ejecución, y también admite ramas y rollback
  • También se pueden sustituir fácilmente otros métodos, como SQLite o memoria en proceso

Aspectos que necesitan mejorar

  • Como es un framework que evoluciona rápidamente, a veces la documentación es incompleta o las actualizaciones tardan en reflejarse
    • Afortunadamente, la comunicación con los mantenedores a través de Slack fue rápida y muy activa
  • Las pruebas de sistemas LLM no deterministas siguen siendo un desafío
    • En el caso de agentes que interactúan con un IDE, es difícil construir un entorno de pruebas automatizado
    • Algunas funciones del IDE son muy difíciles de simular, por lo que hubo que depender de pruebas manuales, y eso ralentizó la velocidad de iteración
  • Los frameworks maduros suelen ofrecer infraestructura para pruebas y mocking, y se espera que LangGraph también evolucione en esa dirección

Aún no hay comentarios.

Aún no hay comentarios.