spinny:~/writing $ vim agentic-ai-frameworks-comparison.md
1~2Os agentes de IA passaram de demos de pesquisa para sistemas em producao. Espera-se que mais de 60% das aplicacoes de IA empresariais incluam componentes agentivos ate 2026. Mas construir agentes do zero - gerenciando loops de tool, estado, memoria, tratamento de erros e coordenacao multi-agente - e complexo. E ai que entram os frameworks.3~4Quatro frameworks dominam em 2026: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** e **Claude Agent SDK**. Cada um adota uma abordagem fundamentalmente diferente para o mesmo problema: dar aos LLM a capacidade de raciocinar, planejar, usar tool e colaborar.5~6## Visao Geral7~8| Aspecto | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Criado por** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Arquitetura** | Baseada em grafos | Baseada em papeis | Baseada em handoff | Loop autonomo |12| **Filosofia** | Controle maximo | Colaboracao de equipe | Abstracao minima | De um computador ao agente |13| **Linguagens** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Suporte a modelos** | Qualquer (OpenAI, Claude, local) | Qualquer | Qualquer (apesar do nome) | Apenas Claude |15| **Estrelas GitHub** | ~29k | ~40k | ~21k | ~6k |16| **Ideal para** | Workflows stateful complexos | Especializacao multi-agente | Routing e triage | Coding e tarefas com arquivos |17~18## LangGraph: O Construtor de Grafos19~20O LangGraph modela workflows de agentes como **grafos ciclicos dirigidos**. Voce define nos (funcoes que fazem o trabalho) e arestas (transicoes entre eles, opcionalmente condicionais). O estado flui pelo grafo e persiste via checkpointing.21~22Este e o framework mais explicito e controlavel - voce conecta cada passo manualmente.23~24```mermaid25graph LR26 Start --> Router[Router Node]27 Router -->|needs research| Research[Research Node]28 Router -->|needs code| Code[Code Node]29 Research --> Synthesize[Synthesize Node]30 Code --> Synthesize31 Synthesize --> End32```33~34### Conceitos Chave35~36- **StateGraph**: a definicao do grafo com estado tipado37- **Nodes**: funcoes Python que transformam o estado38- **Edges**: conexoes entre nos, podem ser condicionais39- **Checkpointing**: persistencia integrada para workflows de longa duracao40~41### Exemplo de Codigo42~43```python44from langgraph.graph import StateGraph, MessagesState, START, END45from langchain_openai import ChatOpenAI46~47llm = ChatOpenAI(model="gpt-4o")48~49def call_agent(state: MessagesState):50 response = llm.invoke(state["messages"])51 return {"messages": [response]}52~53def should_continue(state: MessagesState):54 last = state["messages"][-1]55 if last.tool_calls:56 return "tools"57 return END58~59def call_tools(state: MessagesState):60 # Execute tool calls and return results61 results = []62 for tool_call in state["messages"][-1].tool_calls:63 result = execute_tool(tool_call)64 results.append(result)65 return {"messages": results}66~67graph = StateGraph(MessagesState)68graph.add_node("agent", call_agent)69graph.add_node("tools", call_tools)70graph.add_edge(START, "agent")71graph.add_conditional_edges("agent", should_continue, {"tools": "tools", END: END})72graph.add_edge("tools", "agent")73~74app = graph.compile()75result = app.invoke({"messages": [{"role": "user", "content": "What's the weather?"}]})76```77~78### Pontos Fortes79~80- Controle granular sobre cada passo e transicao81- Checkpointing integrado e human-in-the-loop82- Paridade completa com TypeScript83- Funciona com qualquer provedor LLM84- Ideal para workflows complexos com ramificacao condicional e loops85~86### Pontos Fracos87~88- Curva de aprendizado ingreme - e preciso entender conceitos de teoria dos grafos89- Verboso para casos de uso simples - um agente basico requer mais boilerplate que outros frameworks90- O debugging de fluxos do grafo pode ser desafiador sem o LangSmith91~92### Precos93~94Open-source (MIT). O LangSmith (plataforma de observabilidade gerenciada) tem planos pagos para monitoramento em producao.95~96## CrewAI: O Montador de Equipes97~98O CrewAI usa uma metafora humana: voce monta um **crew** de agentes especializados, cada um com um **papel**, um **objetivo** e uma **historia**. Os agentes colaboram em **tarefas** usando **tool**, coordenados por um **processo** (sequencial, hierarquico ou consensual).99~100Pense nisso como contratar uma equipe onde cada membro tem um titulo e uma especialidade especificos.101~102```mermaid103graph TD104 Crew[Crew Manager] --> R[Researcher\nRole: Find data\nTools: WebSearch]105 Crew --> W[Writer\nRole: Write content\nTools: FileWrite]106 Crew --> E[Editor\nRole: Review quality\nTools: FileRead]107 R --> Task1[Research Task]108 W --> Task2[Writing Task]109 E --> Task3[Review Task]110 Task1 --> Task2 --> Task3111```112~113### Conceitos Chave114~115- **Agent**: um persona com papel, objetivo, historia e tool116- **Task**: uma atribuicao com descricao, saida esperada e agente designado117- **Crew**: um grupo de agentes trabalhando juntos118- **Process**: estrategia de execucao (sequencial, hierarquica, consensual)119- **Flow**: camada de orquestracao event-driven para conectar multiplos crews120~121### Exemplo de Codigo122~123```python124from crewai import Agent, Task, Crew, Process125~126researcher = Agent(127 role="Senior Research Analyst",128 goal="Find comprehensive data about the given topic",129 backstory="You have 10 years of experience in technology research. "130 "You are thorough and always verify facts from multiple sources.",131 tools=[web_search_tool],132 verbose=True,133)134~135writer = Agent(136 role="Technical Writer",137 goal="Create clear, engaging technical content",138 backstory="You write for a developer audience. "139 "Your articles are practical and include code examples.",140 tools=[file_tool],141 verbose=True,142)143~144research_task = Task(145 description="Research the latest developments in WebAssembly in 2026. "146 "Focus on WASI, Component Model, and production use cases.",147 expected_output="A structured research document with key findings and sources.",148 agent=researcher,149)150~151writing_task = Task(152 description="Write a blog post based on the research. "153 "Include code examples and Mermaid diagrams.",154 expected_output="A complete blog post in Markdown format.",155 agent=writer,156 context=[research_task], # Writer receives researcher's output157)158~159crew = Crew(160 agents=[researcher, writer],161 tasks=[research_task, writing_task],162 process=Process.sequential,163 verbose=True,164)165~166result = crew.kickoff()167print(result.raw)168```169~170### Pontos Fortes171~172- Abstracao baseada em papeis intuitiva - facil de compreender173- Mais de 100 integracoes de tool incorporadas174- Memoria compartilhada entre agentes (curto prazo, longo prazo, por entidade)175- Maior comunidade (~40k estrelas GitHub)176- Processo hierarquico com um agente "manager" que delega e valida177~178### Pontos Fracos179~180- Menos controle granular que o LangGraph - voce define papeis, nao caminhos de execucao exatos181- O processo hierarquico pode ser imprevisivel quando os agentes discordam182- O debugging de conversas multi-agente e mais dificil que fluxos de agente unico183~184### Precos185~186Core open-source (gratuito). CrewAI Platform: $99/mes (Teams) ate $120k/ano (Enterprise). Precos baseados em crews ativos e execucoes mensais.187~188## OpenAI Agents SDK: O Roteador189~190O OpenAI Agents SDK (sucessor espiritual do Swarm) foca em **handoff** - agentes que transferem conversas para outros agentes especializados. E o framework mais minimalista: agentes, tool, handoff e guardrail. So isso.191~192```mermaid193graph LR194 User --> Triage[Triage Agent]195 Triage -->|billing question| Billing[Billing Agent]196 Triage -->|refund request| Refund[Refund Agent]197 Triage -->|technical issue| Support[Support Agent]198 Billing --> Response[Response]199 Refund --> Response200 Support --> Response201```202~203### Conceitos Chave204~205- **Agent**: modelo + instrucoes + tool + handoff206- **Handoff**: uma transferencia para outro agente (modelada como um tool que o LLM pode chamar)207- **Guardrail**: validacao de entrada/saida que roda em paralelo com o agente208- **Runner**: executa o loop do agente209- **Tracing**: observabilidade integrada para todas as chamadas LLM, invocacoes de tool e handoff210~211### Exemplo de Codigo212~213```python214from agents import Agent, Runner, handoff, InputGuardrail, GuardrailFunctionOutput215from pydantic import BaseModel216~217class SafetyCheck(BaseModel):218 is_safe: bool219 reason: str220~221async def content_safety(ctx, agent, input_text):222 result = await Runner.run(223 Agent(name="Safety", instructions="Check if input is safe. No PII."),224 input_text,225 context=ctx,226 )227 output = SafetyCheck.model_validate_json(result.final_output)228 return GuardrailFunctionOutput(229 output_info=output, tripwire_triggered=not output.is_safe230 )231~232billing_agent = Agent(233 name="Billing Agent",234 instructions="You handle billing inquiries. Be precise with numbers.",235 tools=[lookup_invoice, process_payment],236)237~238refund_agent = Agent(239 name="Refund Agent",240 instructions="You process refund requests. Always verify the order first.",241 tools=[lookup_order, issue_refund],242)243~244triage_agent = Agent(245 name="Triage Agent",246 instructions="Route the customer to the right specialist. "247 "Ask clarifying questions if needed.",248 handoffs=[billing_agent, refund_agent],249 input_guardrails=[InputGuardrail(guardrail_function=content_safety)],250)251~252result = await Runner.run(triage_agent, "I need a refund for order #4521")253print(result.final_output)254# The triage agent routes to refund_agent, which processes the refund255```256~257### Pontos Fortes258~259- Padrao de handoff limpo - natural para workflows de routing/triage260- Os guardrail rodam em paralelo com a execucao (fail-fast, nao bloqueantes)261- Dashboard de tracing integrado para debugging262- Apesar do nome, suporta modelos nao-OpenAI263- Abstracao minima - facil de entender e estender264~265### Pontos Fracos266~267- Gerenciamento de estado menos maduro que o LangGraph268- Sem persistencia ou checkpointing integrados269- O ecossistema de tool de terceiros e mais limitado270- O design centrado em handoff pode nao se adequar a toda arquitetura271~272### Precos273~274Open-source (MIT). Voce paga por token conforme o modelo utilizado.275~276## Claude Agent SDK: O Desenvolvedor277~278O Claude Agent SDK adota uma abordagem diferente: em vez de definir workflows ou papeis, voce da ao agente um **conjunto de tool e o deixa descobrir como realizar a tarefa**. Ele usa o mesmo loop autonomo que alimenta o Claude Code - ler, agir, verificar, iterar.279~280```mermaid281graph TD282 Prompt[User Prompt] --> Loop[Autonomous Agent Loop]283 Loop --> Reason[Reason about next step]284 Reason --> Act[Execute tool]285 Act --> Verify[Check result]286 Verify -->|not done| Loop287 Verify -->|done| Output[Final output]288```289~290### Conceitos Chave291~292- **query()**: o ponto de entrada principal que inicia o loop do agente293- **Tool integrados**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Tool personalizados via MCP**: defina tool como servidores MCP in-process295- **Sub-agents**: agentes especializados para os quais o pai pode delegar296- **Sessions**: mantem o contexto entre multiplas interacoes297~298### Exemplo de Codigo299~300```typescript301import { tool, createSdkMcpServer, query } from "@anthropic-ai/claude-agent-sdk";302import { z } from "zod";303~304const searchDocs = tool(305 "search_docs",306 "Search the internal documentation for relevant information",307 { query: z.string().describe("Search query") },308 async ({ query }) => {309 const results = await vectorStore.similaritySearch(query, 5);310 return {311 content: [{ type: "text", text: results.map(r => r.pageContent).join("\n\n") }],312 };313 }314);315~316const docsServer = createSdkMcpServer({317 name: "docs",318 version: "1.0.0",319 tools: [searchDocs],320});321~322for await (const message of query({323 prompt: "Find how authentication works in our system and write a summary",324 options: {325 mcpServers: { docs: docsServer },326 allowedTools: ["Read", "Glob", "Grep", "mcp__docs__search_docs"],327 },328})) {329 if (message.type === "result" && message.subtype === "success") {330 console.log(message.result);331 }332}333```334~335### Pontos Fortes336~337- Integracao MCP de primeira classe - conecte-se a qualquer ecossistema de servidores MCP338- Tool integrados para operacoes de arquivo, terminal e acesso web339- Compactacao automatica de contexto para bases de codigo grandes340- Paralelismo de sub-agents para tarefas complexas341- Mesmo motor do Claude Code - testado em batalha em workflows de desenvolvimento reais342~343### Pontos Fracos344~345- Apenas modelos Claude - sem suporte multi-provedor346- Framework mais recente com uma comunidade menor347- Requer o runtime Node.js mesmo para o SDK Python348- Menos controle explicito do workflow comparado ao LangGraph349~350### Precos351~352Open-source. Tarifas padrao por token da API do Claude. Managed Agents (versao hospedada): $0.08 por hora de sessao alem dos custos por token.353~354## Quando Escolher Qual355~356```mermaid357graph TD358 Start{What's your priority?}359 Start -->|Full control over workflow| LG[LangGraph]360 Start -->|Multi-agent collaboration| CA[CrewAI]361 Start -->|Routing and triage| OA[OpenAI Agents SDK]362 Start -->|Coding and file automation| CS[Claude Agent SDK]363~364 LG --> LGU[Complex stateful workflows\nConditional branching\nHuman-in-the-loop]365 CA --> CAU[Team of specialized agents\nResearch + writing pipelines\nContent generation]366 OA --> OAU[Customer service routing\nMulti-step handoffs\nInput validation]367 CS --> CSU[Code generation and review\nFile-heavy automation\nMCP tool ecosystem]368```369~370### Escolha LangGraph se:371- Voce precisa de controle preciso sobre cada passo do workflow372- Seu caso de uso envolve logica condicional complexa e loops373- Voce quer persistencia integrada e checkpoints human-in-the-loop374- Voce precisa usar multiplos provedores LLM no mesmo workflow375~376### Escolha CrewAI se:377- Voce quer uma abstracao intuitiva baseada em papeis378- Sua tarefa envolve multiplos agentes com especialidades distintas379- Voce precisa que os agentes colaborem e passem contexto entre si380- Voce valoriza a maior comunidade e o maior numero de integracoes381~382### Escolha OpenAI Agents SDK se:383- Seu padrao principal e rotear conversas para especialistas384- Voce precisa de guardrail que validem entrada/saida em paralelo385- Voce quer a abstracao mais simples possivel com boilerplate minimo386- Tracing e observabilidade integrados sao importantes387~388### Escolha Claude Agent SDK se:389- Seus agentes precisam ler, escrever e executar codigo390- Voce quer integracao de primeira classe com servidores MCP391- Voce precisa de agentes autonomos que iteram e se auto-corrigem392- Voce ja usa Claude e quer a integracao mais profunda393~394## E Possivel Combinar os Frameworks?395~396Sim. Um padrao comum e usar um framework para orquestracao e outro para os agentes individuais:397~398- **LangGraph** para o grafo do workflow geral399- **CrewAI** para um no especifico que requer colaboracao multi-agente400- **Claude Agent SDK** para sub-tarefas relacionadas a coding via MCP401- **OpenAI Agents SDK** para triage e routing voltado ao cliente402~403Os frameworks nao sao mutuamente exclusivos. Use o que se encaixa em cada parte do seu sistema.404~405## Conclusao406~407Cada framework faz uma aposta clara:408~409- **LangGraph** otimiza para o controle - voce decide cada transicao410- **CrewAI** otimiza para a colaboracao - os agentes trabalham em equipe411- **OpenAI Agents SDK** otimiza para a simplicidade - abstracao minima, handoff limpos412- **Claude Agent SDK** otimiza para a autonomia - de os tool e deixe-o trabalhar413~414A escolha certa depende do seu workflow, da sua equipe e do seu stack existente. Escolha o que corresponde ao seu caso de uso principal, aprenda-o bem e incorpore os outros quando chegar ao ponto forte deles.415~
NORMAL · agentic-ai-frameworks-comparison.md [readonly]415 lines · :q to close