- A Octomind usa agentes de IA para gerar e corrigir automaticamente testes end-to-end no Playwright.
- No início, usava o framework LangChain, mas com o tempo o alto nível de abstração do LangChain passou a causar problemas.
Problemas do LangChain
- A abstração do LangChain foi útil no começo, mas, à medida que surgiram requisitos mais complexos, ficou difícil entender e manter o código.
- Entender a estrutura interna do LangChain e fazer debugging consumia muito tempo.
- Por exemplo, até em um código para traduzir uma simples palavra em inglês para o italiano, usar LangChain aumentava a complexidade.
O problema das abstrações do LangChain
- O LangChain empilha várias abstrações, aumentando a complexidade do código.
- Essas abstrações tornam mais difícil entender o código e fazer debugging.
- Por exemplo, até em uma tarefa simples de buscar dados JSON de uma API, usar LangChain aumentava a complexidade.
Impacto na equipe de desenvolvimento
- Ao tentar implementar uma arquitetura de agentes complexa, o LangChain passou a atuar como fator limitante.
- Depois de remover o LangChain, a equipe conseguiu programar com liberdade de acordo com os requisitos.
É preciso um framework para criar aplicações de IA?
- O LangChain foi útil no início, mas, no longo prazo, teria sido melhor desenvolver sem framework.
- A maioria das aplicações de IA pode ser implementada suficientemente bem com código simples e alguns pacotes externos.
- Até que os padrões de uso de agentes estejam estabelecidos, recomenda-se uma abordagem simples.
Desenvolvimento rápido e conciso com blocos de construção modulares
- Frameworks impõem estrutura, mas as aplicações de IA ainda não têm padrões de uso consolidados.
- A abordagem de blocos de construção modulares prefere código simples de baixo nível e acelera o desenvolvimento.
- Usando componentes modulares como bancos de dados vetoriais, é possível manter a base de código enxuta e adaptável.
Opinião do GN⁺
- Limites do LangChain: o alto nível de abstração do LangChain é útil no começo, mas pode se tornar um obstáculo quando surgem requisitos complexos.
- Vantagens da abordagem modular: a abordagem com blocos de construção modulares facilita a compreensão e a manutenção do código, além de acelerar o desenvolvimento.
- Repensando a necessidade de frameworks: nem toda aplicação de IA precisa de um framework; muitas podem ser implementadas apenas com código simples e pacotes externos.
- A importância da velocidade de desenvolvimento: na área de IA, experimentação rápida e prototipagem são essenciais, e frameworks podem limitar isso.
- Padrões futuros de uso de agentes: até que os padrões de uso de agentes estejam estabelecidos, é melhor manter uma abordagem simples.
2 comentários
Dizem que é uma arquitetura fracassada, e agora estou vendo isso até no GeekNews.
Comentários do Hacker News
Construiu o primeiro agente LLM comercial em outubro/novembro do ano passado: construir o agente do zero, sem usar LangChain, ajudou a obter resultados melhores.
Complexidade dos frameworks de LLM: frameworks de LLM como o LangChain tendem a introduzir complexidade ao estilo de Java ou Python.
Comparação entre LangChain e ChatGPT: o LangChain foi criado antes do surgimento do ChatGPT, mas, como o ChatGPT passou a oferecer um modelo conversacional melhor, a necessidade do LangChain diminuiu.
Controvérsia sobre o valor do LangChain: o LangChain tentou se posicionar entre o desenvolvedor e o LLM, mas não adicionou valor prático e introduziu abstrações desnecessárias.
Boas abstrações e más abstrações: boas abstrações lidam com a lógica da aplicação, enquanto más abstrações escondem o trabalho necessário e fazem perder percepção.
Problemas no uso de agentes: para geração de conteúdo, usar prompts sequenciais é mais fácil e mais eficaz do que usar agentes.
Apresentação do framework Ragged: apresenta o Ragged, um conector leve que permite integração fácil com LLMs. Ele oferece uma interface unificada semelhante a um ORM.
Falta de utilidade do LangChain: a abordagem do LangChain é interessante, mas, na prática, usar diretamente bibliotecas de runtime para LLM é mais eficiente.
Frameworks de agentes que mudam rapidamente: o framework de agentes em uso muda muito rápido, e até pequenas mudanças de versão podem quebrar a configuração atual.
Problema de complexidade do LangChain: o LangChain é complexo demais para casos de uso simples e difícil de adaptar para casos complexos. Em muitos casos, codificar diretamente é a melhor opção.