8 pontos por GN⁺ 2025-04-09 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A Qodo é uma equipe que desenvolve ferramentas de assistência à programação com IA desde a era do GPT-3 e, mais recentemente, escolheu o framework LangGraph para criar agentes de programação mais flexíveis e dinâmicos
  • Este documento explica como o LangGraph conseguiu atender ao mesmo tempo à flexibilidade do fluxo de desenvolvimento e aos padrões de qualidade de código

Da abordagem estrutural inicial à transição para o LangGraph

  • No início, com base no GPT-3, o foco estava em tarefas estruturadas com fluxos claros, como geração de testes, revisão de código e melhorias
  • Após o Claude Sonnet 3.5, o desempenho dos LLMs melhorou bastante, tornando possível projetar agentes mais dinâmicos
  • Antes, só eram possíveis workflows padronizados, mas a ideia passou a ser desenvolver um sistema capaz de responder com flexibilidade às solicitações dos usuários usando os novos modelos
  • No processo de buscar um framework que permitisse experimentação e validação rápidas, a escolha acabou sendo o LangGraph, que conseguiu ir além da prova de conceito inicial e escalar até um produto real

Convivência entre flexibilidade e regras claras

  • O LangGraph oferece uma estrutura em grafo baseada em uma máquina de estados (state machine)
  • Cada nó é responsável por uma etapa individual do workflow (coleta de contexto, planejamento, execução, validação etc.), e as arestas (edges) definem as regras de transição entre as etapas
  • Dependendo da densidade das arestas, o workflow pode ficar mais flexível ou mais estruturado
    • Grafo esparso → fluxo fixo e previsível
    • Grafo denso → fluxo dinâmico e possibilidade de escolher vários caminhos
  • A vantagem do LangGraph é que, à medida que os modelos evoluem, o grau de estruturação do workflow pode ser reajustado com facilidade
  • O fluxo principal tem a seguinte estrutura:
    • Coleta de contexto → planejamento da tarefa → execução de código → validação do resultado → repetição em caso de falha

Interface simples e intuitiva

  • O LangGraph permite definir workflows de forma declarativa, fazendo com que o código seja lido quase como um documento
  • Ele funciona declarando um grafo de estados e adicionando nós e arestas
  • Fluxos condicionais também podem ser implementados facilmente (ex.: em caso de falha na validação, voltar em loop para o nó de execução)
  • Diferentemente das abstrações complexas do LangChain, o LangGraph expõe a lógica da estrutura, oferecendo uma boa experiência para desenvolvedores

Reutilização entre diferentes workflows

  • Graças à estrutura baseada em nós, é fácil reutilizar componentes
    • Ex.: os nós de coleta de contexto e validação são reutilizados na maioria dos fluxos
  • Mesmo ao criar novos fluxos especializados (como TDD), é possível expandir rapidamente reconectando nós já existentes

Recursos nativos de gerenciamento de estado

  • O LangGraph oferece armazenamento de estado por padrão, o que torna muito simples implementar persistência
    • Ex.: o recurso de checkpoint com Postgres pode ser configurado com apenas algumas linhas de código
  • É possível salvar o estado completo, incluindo contexto coletado, planejamento e resultados de execução, além de haver suporte a branches e rollback
  • Outros métodos, como SQLite e memória em processo, também podem ser trocados com facilidade

Pontos que ainda precisam melhorar

  • Como é um framework em rápida evolução, às vezes a documentação é incompleta ou demora para ser atualizada
    • Felizmente, a comunicação com os mantenedores via Slack foi rápida e bastante ativa
  • Testar sistemas LLM não determinísticos continua sendo um desafio
    • No caso de agentes que interagem com a IDE, é difícil montar um ambiente de testes automatizados
    • Alguns recursos da IDE são muito difíceis de mockar, então foi necessário depender de testes manuais, o que acabou deixando a iteração mais lenta
  • Frameworks mais maduros costumam oferecer infraestrutura de testes e mocking, e a expectativa é que o LangGraph evolua nessa direção

Ainda não há comentários.

Ainda não há comentários.