Phase 11 - Lesson 17

Tradeoffs de Frameworks de Agentes — LangGraph vs CrewAI vs AutoGen vs Agno

Todo framework vende a mesma demonstração (agente de pesquisa cria um relatório) e esconde o mesmo bug (o esquema de estado entra em conflito com a camada de orquestração). Escolha o framework cujas abstrações correspondam ao formato do seu problema; todo o resto é código de integração que você escreverá duas vezes.

Tipo: Learn Idiomas: Python Pré-requisitos: Phase 11 · 09 (Function Calling), Phase 11 · 16 (LangGraph) Tempo: ~45 minutos

O Problema

Você tem uma tarefa que precisa de mais de uma chamada de LLM. Talvez seja um fluxo de pesquisa (planejar, buscar, resumir, citar). Talvez seja um pipeline de revisão de código (analisar diff, criticar, corrigir, validar). Talvez seja um assistente de múltiplos turnos que reserva voos, escreve e-mails e envia relatórios de despesas. Você escolhe um framework.

Três dias depois, você descobre que as abstrações do framework falham. O CrewAI oferece papéis, mas dificulta as coisas quando o "pesquisador" precisa passar um plano estruturado para o "redator". O AutoGen oferece bate-papo entre agentes, mas não tem estado de primeira classe, de modo que seu checkpoint é uma serialização pickle de um histórico de conversa. O LangGraph oferece um grafo de estado, mas força você a nomear cada transição antes de saber o que o agente fará. O Agno oferece uma abstração de agente único que falha quando você tenta distribuir tarefas para três executores concorrentes.

A solução não é "escolher o melhor framework". É alinhar a abstração central do framework ao formato do seu problema. Esta lição desenha esse mapa.

O Concept

Agent framework matrix: core abstraction vs problem shape

Quatro frameworks dominam o cenário de 2026. Suas abstrações centrais não são as mesmas.

Framework Abstração central Melhor ajuste Pior ajuste
LangGraph StateGraph — estado tipado, nós, arestas condicionais, checkpointer. Fluxos de trabalho com estado explícito e interrupções com intervenção humana; agentes de produção que precisam de depuração com viagem no tempo. Brainstorming livre e baseado em papéis onde a topologia é desconhecida.
CrewAI Crew — papéis (objetivo, histórico), tarefas, processo (sequencial ou hierárquico). Fluxos de trabalho baseados em encenação ou personas com um plano linear/hierárquico curto. Qualquer coisa com estado além do histórico de turnos da equipe; ramificação complexa.
AutoGen ConversableAgent pair — dois ou mais agentes que conversam em turnos até uma condição de saída. Diálogo multiagente (professor-aluno, proponente-crítico, ator-revisor) onde o pensamento surge da conversa. Fluxos de trabalho determinísticos com um DAG conhecido; qualquer coisa que precise de estado durável após reinicializações.
Agno Agent — um único LLM + ferramentas + memória, combinável em equipes. Agentes únicos e equipes leves fáceis de construir; forte multimodalidade e drivers de armazenamento integrados. Grafos profundos com ramificações explícitas e redusores personalizados.

O que "abstração" realmente significa

A abstração central de um framework é o que você desenha no quadro branco quando apresenta a arquitetura.

  • LangGraph → você desenha um grafo. Nós são etapas, arestas são transições e o objeto de estado em cada ponto é tipado. O modelo mental é uma máquina de estados.
  • CrewAI → você desenha um organograma. Cada papel tem uma descrição de cargo e um gerente direciona as tarefas. O modelo mental é uma pequena equipe de especialistas.
  • AutoGen → você desenha uma conversa direta no Slack. Dois agentes trocam mensagens; um terceiro entra se você precisar de um moderador. O modelo mental é bate-papo.
  • Agno → você desenha uma única caixa com ferramentas conectadas a ela. Coloque as caixas lado a lado para formar uma equipe. O modelo mental é "agente com tudo incluso".

A questão do estado

O estado é onde a maioria das escolhas de framework falha em produção.

  • LangGraph. Estado tipado (TypedDict ou modelo Pydantic), redusores por campo, checkpointer de primeira classe (SQLite/Postgres/Redis). Retomada, interrupção e viagem no tempo são nativos. (Veja Phase 11 · 16.)
  • CrewAI. O estado flui como strings entre tarefas por meio do campo context, ou estruturado por meio de output_pydantic. Sem armazenamento durável por equipe nativo; você deve implementar o seu próprio se a equipe precisar sobreviver a uma reinicialização.
  • AutoGen. O estado é o histórico do bate-papo e qualquer context definido pelo usuário. As transcrições da conversa persistem; o estado arbitrário do fluxo de trabalho não, a menos que você escreva adaptadores.
  • Agno. Drivers de armazenamento integrados (SQLite, Postgres, Mongo, Redis, DynamoDB) conectados a um Agent via storage= — sessões de conversação e memórias de usuário persistem automaticamente. Não é um checkpointer de grafo completo; é um armazenamento de sessão.

A questão das ramificações

Todo agente não trivial possui ramificações. Quem decide a ramificação é o que importa.

  • LangGraph — você decide, por meio de arestas condicionais. O roteamento é uma função Python com ramificações nomeadas. As ramificações são elementos de primeira classe no grafo compilado; o checkpointer registra qual ramificação foi seguida.
  • CrewAI — o gerente decide no modo hierárquico; no modo sequencial, você decide no momento da construção. O roteamento é implícito na lista de tarefas; não há um "se" de primeira classe fora do prompt do gerente.
  • AutoGen — os agentes decidem por meio do bate-papo. A ramificação surge a partir de quem fala a seguir. O GroupChatManager seleciona o próximo orador; você pode escrever uma função speaker_selection_method personalizada, mas o padrão é baseado em LLM.
  • Agno — o agente decide por meio de qual ferramenta chamar a seguir. As equipes possuem os modos coordenador/roteador/colaborador; ramificações além disso são de responsabilidade do desenvolvedor.

A questão da observabilidade

  • LangGraph — OpenTelemetry via LangSmith ou qualquer exportador OTel. Cada transição de nó é um span de trace; os checkpoints funcionam como traces reproduzíveis. O LangSmith é a opção nativa; o Langfuse/Phoenix também possuem adaptadores.
  • CrewAI — OpenTelemetry de primeira classe desde o final de 2025; integrações com Langfuse, Phoenix, Opik, AgentOps.
  • AutoGen — integração com OpenTelemetry via autogen-core; AgentOps e Opik possuem conectores. A granularidade do rastreamento é por mensagem de agente, não por nó.
  • Agno — parâmetro monitoring=True integrado mais exportadores OpenTelemetry; integração estreita com Langfuse para traces de sessão.

Custo e latência

Todos os quatro frameworks adicionam sobrecarga por chamada (lógica do framework, validação, serialização). Ordem aproximada de sobrecarga crescente: Agno ≈ LangGraph < CrewAI ≈ AutoGen. A diferença é dominada por quanto roteamento extra de LLM o framework realiza. O gerente hierárquico do CrewAI consome tokens decidindo quem vai a seguir; o GroupChatManager do AutoGen faz o mesmo. O LangGraph só consome tokens onde você escreve llm.invoke. O caminho de agente único do Agno é leve.

Quando o custo por execução for importante, prefira roteamento explícito (arestas do LangGraph, speaker_selection_method do AutoGen) em vez de roteamento selecionado por LLM.

Interoperabilidade

  • LangGraph ↔ ferramentas, recuperadores e LLMs do LangChain. Adaptador MCP nativo (ferramentas importadas como servidores MCP).
  • CrewAI ↔ as ferramentas herdam de BaseTool; ferramentas LangChain, LlamaIndex e MCP são compatíveis. Delegação entre equipes via allow_delegation=True.
  • AutoGenFunctionTool envolve qualquer chamável do Python; adaptador MCP disponível. Acoplamento forte com o ecossistema AG2 para padrões de agente para agente.
  • Agno → decorador @tool ou subclasse BaseTool; adaptador MCP; ferramentas podem ser compartilhadas entre agentes e equipes.

A Habilidade

Você consegue explicar, em uma frase, por que um determinado framework é o correto para um determinado problema de agente.

Lista de verificação pré-construção:

  1. Desenhe o formato. Isso é um grafo (estado tipado, transições nomeadas)? Uma encenação (especialistas passando trabalho)? Um bate-papo (agentes conversando até terminar)? Um agente único com ferramentas?
  2. Decide quem ramifica. Ramificação decidida pelo desenvolvedor → LangGraph. Decidida pelo agente gerente → CrewAI hierárquico. Emergente da conversa → AutoGen. Decidida por chamada de ferramenta → Agno.
  3. Verifique o orçamento de estado. Você precisa retomar de um checkpoint? Viagem no tempo? Interrupções humanas no meio da execução? Se sim, o LangGraph é o padrão; sessões do Agno cobrem o estado com escopo de conversação.
  4. Verifique o orçamento de custo. O roteamento selecionado por LLM custa tokens adicionais por turno. Se o agente roda milhares de vezes por dia, prefira roteamento explícito.
  5. Estime a sobrecarga do framework. Cada framework é mais uma dependência. Se a tarefa exige duas chamadas de LLM e uma ferramenta, escreva 30 linhas de Python puro; nenhum framework é mais barato do que framework nenhum.

Recuse-se a adotar um framework antes de conseguir desenhar o grafo, o organograma, o bate-papo ou a caixa do agente. Recuse-se a escolher um que force você a lutar contra o modelo de estado dele para alcançar o que realmente precisa.

A Matriz de Decisão

Formato do problema Framework preferido Por quê
DAG de fluxo de trabalho com estado tipado, aprovações humanas, longa duração LangGraph Estado de primeira classe, checkpointer, interrupções, viagem no tempo.
Pipeline de pesquisa / escrita com papéis distintos CrewAI (sequencial) ou subgrafos LangGraph Papel por tarefa é simples de expressar no CrewAI; escale com LangGraph quando as ramificações ficarem complexas.
Diálogo proponente-crítico ou professor-aluno AutoGen O bate-papo entre dois agentes é o seu formato nativo.
Agente único com ferramentas, sessões, memória Agno Configuração mais simples, armazenamento e memória integrados.
Milhares de distribuições paralelas (fanout) com redusores LangGraph + Send O único com uma API de primeira classe para despacho paralelo.
Protótipo rápido, sem compromisso com framework Python puro + SDK do provedor Nenhum framework é o framework mais rápido.

Exercícios

  1. Fácil. Pegue a mesma tarefa — "pesquisar a sede da Anthropic, escrever um resumo de 200 palavras, citar fontes" — e implemente-a no LangGraph (quatro nós: planejar, buscar, escrever, citar) e no CrewAI (três papéis: pesquisador, escritor, editor). Relate o custo de tokens por execução e as linhas de código.
  2. Médio. Construa a mesma tarefa no AutoGen (bate-papo pesquisador ↔ escritor, com o editor participando via GroupChat) e no Agno (um único agente com search_tools e write_tools, além de um armazenamento de sessão). Classifique as quatro implementações em (a) custo por execução, (b) capacidade de retomar após uma falha, (c) capacidade de injetar uma aprovação humana antes da etapa de escrita.
  3. Difícil. Construa um script de árvore de decisão pick_framework.py que receba uma descrição curta do problema (JSON: {has_typed_state, has_roles, has_dialogue, has_parallel_fanout, needs_resume}) e retorne uma recomendação com justificativa de uma frase. Verifique-o em seis casos projetados por você mesmo.

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
Orquestração "Como os agentes coordenam" A camada que decide qual nó/papel/agente executa a seguir.
Estado durável "Retomar após uma reinicialização" Estado que sobrevive à morte do processo, associado a um checkpoint ou armazenamento de sessão.
Roteamento selecionado por LLM "Deixe o modelo decidir" Um LLM planejador escolhe a próxima etapa a cada turno; flexível, mas consome tokens a cada decisão.
Roteamento explícito "O desenvolvedor decide" Uma função Python ou aresta estática escolhe a próxima etapa; econômico e auditável.
Equipe (Crew) "Uma equipe do CrewAI" Papéis + tarefas + processo (sequencial ou hierárquico) integrados em um único executável.
Conversa em Grupo (GroupChat) "Bate-papo multiagente do AutoGen" Uma conversa gerenciada entre N agentes com um seletor de orador.
Equipe (Team - Agno) "Agno multiagente" Modo de rota / coordenação / colaboração sobre um conjunto de agentes.
Grafo de Estado (StateGraph) "Grafo do LangGraph" Abstração de estado tipado, nós, arestas condicionais e checkpointer.

Leituras Adicionais

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).