[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"post:\u002Fpost\u002Fai-agent-sdks-in-2026-the-framework-is-free-the-decision-is-yours":3,"categories-en":911},{"post":4,"related":840,"translations":908,"resolved":17},{"id":5,"slug":6,"title":7,"excerpt":8,"image":9,"featured":10,"groupId":11,"publishedAt":12,"readingTime":13,"views":14,"author":15,"category":18,"tags":22,"contentJson":29,"metaTitle":837,"metaDescription":838,"updatedAt":839},"eee1dfa1-2699-4038-b581-f9796625fe07","ai-agent-sdks-in-2026-the-framework-is-free-the-decision-is-yours","AI Agent SDKs in 2026: the framework is free, the decision is yours","The framework race is over. In 2026, agent infrastructure is open and free. The only variable left is your architecture.","https:\u002F\u002Fmfgiomkkbihnlpfdxwrt.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-assets\u002Fmedia\u002Ffeatured\u002F1781143639837-featured-i6g9ob.webp",false,"6533487e-2264-4841-8971-61ae06bc5856","2026-06-11T17:45:07.684259+00:00",7,0,{"name":16,"avatar":17},"Genildo Souza",null,{"slug":19,"name":20,"color":21},"inteligencia-artificial","Artificial Intelligence","#6366f1",[23,26],{"slug":24,"name":25},"llm","LLM",{"slug":27,"name":28},"ai","AI",{"type":30,"content":31},"doc",[32,53,61,79,115,121,139,175,222,228,234,286,292,688,693,699,711,716,725,736,744,762,768,810,815,821],{"type":33,"attrs":34,"content":36},"paragraph",{"id":35},"p_sdk0intro",[37,40,45,47,51],{"text":38,"type":39},"If 2024 was the year of chatbots and 2025 the year of RAG, 2026 is definitely ","text",{"text":41,"type":39,"marks":42},"the year of AI agents",[43],{"type":44},"bold",{"text":46,"type":39},". And the good news follows the trend of free APIs: ",{"text":48,"type":39,"marks":49},"all major agent frameworks are open-source, with MIT or Apache 2.0 licenses, and zero licensing cost",[50],{"type":44},{"text":52,"type":39},". What you pay for is LLM token consumption — and, as we've seen, even that can be free by combining providers like Groq, OpenRouter, and Cerebras. This article maps the agent SDK ecosystem in mid-2026, with technical analysis, comparative table, and copy-paste-ready code.",{"type":54,"attrs":55,"content":58},"heading",{"id":56,"level":57},"h_sdk1cenario",2,[59],{"text":60,"type":39},"The market consolidated: few winners, open standards",{"type":33,"attrs":62,"content":64},{"id":63},"p_sdk1a",[65,67,71,73,77],{"text":66,"type":39},"After two years of Cambrian explosion, the agent framework market consolidated around a few mature options. In Python, ",{"text":68,"type":39,"marks":69},"LangGraph became the production standard for complex stateful workflows",[70],{"type":44},{"text":72,"type":39},", CrewAI dominates rapid multi-agent prototyping, and the labs' own SDKs (OpenAI Agents SDK, Claude Agent SDK, Google ADK) gained traction in single-model stacks. In TypeScript, ",{"text":74,"type":39,"marks":75},"Mastra emerged as the most complete native framework",[76],{"type":44},{"text":78,"type":39}," and the Vercel AI SDK reigns in chat interfaces with streaming.",{"type":33,"attrs":80,"content":82},{"id":81},"p_sdk1b",[83,85,89,91,95,97,101,103,107,109,113],{"text":84,"type":39},"Two structural moves changed the game. First, Microsoft moved ",{"text":86,"type":39,"marks":87},"AutoGen to maintenance mode",[88],{"type":44},{"text":90,"type":39},", unifying it with Semantic Kernel into ",{"text":92,"type":39,"marks":93},"Microsoft Agent Framework 1.0",[94],{"type":44},{"text":96,"type":39}," (GA in April 2026, with stable APIs for .NET and Python). Second, the ",{"text":98,"type":39,"marks":99},"MCP (Model Context Protocol)",[100],{"type":44},{"text":102,"type":39}," and ",{"text":104,"type":39,"marks":105},"A2A (Agent-to-Agent)",[106],{"type":44},{"text":108,"type":39}," protocols were donated to the Linux Foundation and became interoperable standards: an agent built in Google ADK can discover and invoke a LangGraph or CrewAI agent. In practice, this means ",{"text":110,"type":39,"marks":111},"switching frameworks stopped being a rewrite and became a refactor",[112],{"type":44},{"text":114,"type":39}," — lock-in fell along with the cost barrier.",{"type":54,"attrs":116,"content":118},{"id":117,"level":57},"h_sdk2python",[119],{"text":120,"type":39},"Python: LangGraph for production, CrewAI for speed",{"type":33,"attrs":122,"content":124},{"id":123},"p_sdk2a",[125,127,131,133,137],{"text":126,"type":39},"The ",{"text":128,"type":39,"marks":129},"LangGraph",[130],{"type":44},{"text":132,"type":39}," (MIT, ~26k stars) models agents as a cyclic directed graph: nodes are functions or LLM calls, edges define control flow. This delivers what enterprise production demands — ",{"text":134,"type":39,"marks":135},"typed state, durable checkpoints (SQLite, Postgres), automatic resumption after failures, time-travel debugging, and human-in-the-loop",[136],{"type":44},{"text":138,"type":39},". Klarna, Replit, Uber, and LinkedIn run LangGraph in production. The price is the learning curve: a simple ReAct agent takes ~120 lines, versus ~40 in minimalist frameworks. Version 1.0 stabilized the API, with a commitment to not break compatibility until 2.0.",{"type":33,"attrs":140,"content":142},{"id":141},"p_sdk2b",[143,144,148,150,155,157,161,163,167,169,173],{"text":126,"type":39},{"text":145,"type":39,"marks":146},"CrewAI",[147],{"type":44},{"text":149,"type":39}," (MIT, ~53k stars) attacks from the opposite flank: role-based abstraction. You define agents with ",{"text":151,"type":39,"marks":152},"role",[153],{"type":154},"code",{"text":156,"type":39},", ",{"text":158,"type":39,"marks":159},"goal",[160],{"type":154},{"text":162,"type":39},", and ",{"text":164,"type":39,"marks":165},"backstory",[166],{"type":154},{"text":168,"type":39},", assemble a \"crew\" (researcher → writer → reviewer), and have a ",{"text":170,"type":39,"marks":171},"working multiagent prototype in an afternoon, with ~20 lines of code",[172],{"type":44},{"text":174,"type":39},". The company reports usage by 63% of the Fortune 500. Weaknesses show up at scale: limited observability, barely configurable retry, and sequential execution by default. The typical path is to prototype in CrewAI and migrate to LangGraph when the workflow demands conditional routing and auditability.",{"type":33,"attrs":176,"content":178},{"id":177},"p_sdk2c",[179,181,185,187,191,193,197,198,202,204,208,210,214,216,220],{"text":180,"type":39},"Among the lab SDKs, the ",{"text":182,"type":39,"marks":183},"OpenAI Agents SDK",[184],{"type":44},{"text":186,"type":39}," (MIT, successor to the experimental Swarm) stands out for its minimal API — Agents, Handoffs, Guardrails, and Tracing — and works with ",{"text":188,"type":39,"marks":189},"any endpoint compatible with the OpenAI API",[190],{"type":44},{"text":192,"type":39},", including Groq, OpenRouter, Ollama, and vLLM. Meaning: you can run an entire multiagent system on Llama 3.3 70B free on Groq, changing only ",{"text":194,"type":39,"marks":195},"base_url",[196],{"type":154},{"text":102,"type":39},{"text":199,"type":39,"marks":200},"api_key",[201],{"type":154},{"text":203,"type":39},". The ",{"text":205,"type":39,"marks":206},"Claude Agent SDK",[207],{"type":44},{"text":209,"type":39},", meanwhile, exposes the same harness that powers Claude Code, with filesystem access, shell, subagents, and the deepest MCP integration on the market — the natural choice for code agents and OS automation. For those who value type safety, ",{"text":211,"type":39,"marks":212},"Pydantic AI",[213],{"type":44},{"text":215,"type":39}," (MIT) brings the \"FastAPI feel\" to agents: structured outputs validated with automatic retry on validation failure. And for prototypes and research, ",{"text":217,"type":39,"marks":218},"smolagents",[219],{"type":44},{"text":221,"type":39}," from Hugging Face (Apache 2.0, ~1,000 lines of core logic) implements Code Agents that write Python instead of JSON to call tools.",{"type":223,"attrs":224},"svgDiagram",{"id":225,"svg":226,"label":227},"svg_arquiteturas","\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 760 340\" font-family=\"Helvetica, Arial, sans-serif\">\n  \u003Cdefs>\n    \u003Cmarker id=\"arr2\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"6.5\" markerHeight=\"6.5\" orient=\"auto-start-reverse\">\n      \u003Cpath d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#475569\"\u002F>\n    \u003C\u002Fmarker>\n  \u003C\u002Fdefs>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"340\" rx=\"12\" fill=\"#F8FAFC\"\u002F>\n  \u003Ctext x=\"380\" y=\"32\" text-anchor=\"middle\" font-size=\"17\" font-weight=\"bold\" fill=\"#0F172A\">Três jeitos de orquestrar agentes\u003C\u002Ftext>\n\n  \u003C!-- Painel 1: LangGraph -->\n  \u003Crect x=\"22\" y=\"52\" width=\"228\" height=\"262\" rx=\"10\" fill=\"#FFFFFF\" stroke=\"#E2E8F0\" stroke-width=\"1.5\"\u002F>\n  \u003Ctext x=\"136\" y=\"78\" text-anchor=\"middle\" font-size=\"13.5\" font-weight=\"bold\" fill=\"#1D4ED8\">LangGraph\u003C\u002Ftext>\n  \u003Ctext x=\"136\" y=\"95\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#64748B\">grafo com estado e ciclos\u003C\u002Ftext>\n\n  \u003Ccircle cx=\"136\" cy=\"122\" r=\"14\" fill=\"#DBEAFE\" stroke=\"#3B82F6\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"136\" y=\"126\" text-anchor=\"middle\" font-size=\"9\" fill=\"#1E3A8A\">início\u003C\u002Ftext>\n  \u003Cline x1=\"136\" y1=\"136\" x2=\"136\" y2=\"152\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n\n  \u003Crect x=\"96\" y=\"156\" width=\"80\" height=\"28\" rx=\"6\" fill=\"#DBEAFE\" stroke=\"#3B82F6\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"136\" y=\"174\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#1E3A8A\">nó: agente\u003C\u002Ftext>\n\n  \u003Cpolygon points=\"136,196 168,218 136,240 104,218\" fill=\"#FEF9C3\" stroke=\"#CA8A04\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"136\" y=\"222\" text-anchor=\"middle\" font-size=\"9\" fill=\"#713F12\">condição\u003C\u002Ftext>\n  \u003Cline x1=\"136\" y1=\"184\" x2=\"136\" y2=\"192\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n\n  \u003Crect x=\"40\" y=\"258\" width=\"78\" height=\"26\" rx=\"6\" fill=\"#DBEAFE\" stroke=\"#3B82F6\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"79\" y=\"275\" text-anchor=\"middle\" font-size=\"10\" fill=\"#1E3A8A\">nó: ferramenta\u003C\u002Ftext>\n  \u003Crect x=\"154\" y=\"258\" width=\"78\" height=\"26\" rx=\"6\" fill=\"#DBEAFE\" stroke=\"#3B82F6\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"193\" y=\"275\" text-anchor=\"middle\" font-size=\"10\" fill=\"#1E3A8A\">nó: humano\u003C\u002Ftext>\n\n  \u003Cpath d=\"M 116 232 C 100 240, 90 246, 82 254\" fill=\"none\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n  \u003Cpath d=\"M 156 232 C 172 240, 182 246, 190 254\" fill=\"none\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n  \u003Cpath d=\"M 60 258 C 50 200, 70 170, 92 165\" fill=\"none\" stroke=\"#94A3B8\" stroke-width=\"1.4\" stroke-dasharray=\"3 4\" marker-end=\"url(#arr2)\"\u002F>\n  \u003Ctext x=\"34\" y=\"206\" font-size=\"9\" fill=\"#64748B\">ciclo\u003C\u002Ftext>\n\n  \u003C!-- Painel 2: CrewAI -->\n  \u003Crect x=\"266\" y=\"52\" width=\"228\" height=\"262\" rx=\"10\" fill=\"#FFFFFF\" stroke=\"#E2E8F0\" stroke-width=\"1.5\"\u002F>\n  \u003Ctext x=\"380\" y=\"78\" text-anchor=\"middle\" font-size=\"13.5\" font-weight=\"bold\" fill=\"#B91C1C\">CrewAI\u003C\u002Ftext>\n  \u003Ctext x=\"380\" y=\"95\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#64748B\">equipe baseada em papéis\u003C\u002Ftext>\n\n  \u003Crect x=\"306\" y=\"112\" width=\"148\" height=\"42\" rx=\"8\" fill=\"#FEE2E2\" stroke=\"#EF4444\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"380\" y=\"130\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"bold\" fill=\"#7F1D1D\">Pesquisador\u003C\u002Ftext>\n  \u003Ctext x=\"380\" y=\"146\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#64748B\">coleta e analisa fontes\u003C\u002Ftext>\n\n  \u003Cline x1=\"380\" y1=\"154\" x2=\"380\" y2=\"172\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n\n  \u003Crect x=\"306\" y=\"176\" width=\"148\" height=\"42\" rx=\"8\" fill=\"#FEE2E2\" stroke=\"#EF4444\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"380\" y=\"194\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"bold\" fill=\"#7F1D1D\">Escritor\u003C\u002Ftext>\n  \u003Ctext x=\"380\" y=\"210\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#64748B\">redige o rascunho\u003C\u002Ftext>\n\n  \u003Cline x1=\"380\" y1=\"218\" x2=\"380\" y2=\"236\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n\n  \u003Crect x=\"306\" y=\"240\" width=\"148\" height=\"42\" rx=\"8\" fill=\"#FEE2E2\" stroke=\"#EF4444\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"380\" y=\"258\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"bold\" fill=\"#7F1D1D\">Revisor\u003C\u002Ftext>\n  \u003Ctext x=\"380\" y=\"274\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#64748B\">valida e entrega\u003C\u002Ftext>\n\n  \u003Ctext x=\"380\" y=\"302\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#64748B\">cada papel tem role, goal e backstory\u003C\u002Ftext>\n\n  \u003C!-- Painel 3: Agents SDK -->\n  \u003Crect x=\"510\" y=\"52\" width=\"228\" height=\"262\" rx=\"10\" fill=\"#FFFFFF\" stroke=\"#E2E8F0\" stroke-width=\"1.5\"\u002F>\n  \u003Ctext x=\"624\" y=\"78\" text-anchor=\"middle\" font-size=\"13.5\" font-weight=\"bold\" fill=\"#047857\">OpenAI Agents SDK\u003C\u002Ftext>\n  \u003Ctext x=\"624\" y=\"95\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#64748B\">triagem com handoffs\u003C\u002Ftext>\n\n  \u003Crect x=\"554\" y=\"116\" width=\"140\" height=\"40\" rx=\"8\" fill=\"#D1FAE5\" stroke=\"#10B981\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"624\" y=\"134\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"bold\" fill=\"#064E3B\">Agente de triagem\u003C\u002Ftext>\n  \u003Ctext x=\"624\" y=\"149\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#64748B\">classifica o pedido\u003C\u002Ftext>\n\n  \u003Cpath d=\"M 590 156 C 570 176, 562 188, 558 202\" fill=\"none\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n  \u003Cpath d=\"M 658 156 C 678 176, 686 188, 690 202\" fill=\"none\" stroke=\"#475569\" stroke-width=\"1.6\" marker-end=\"url(#arr2)\"\u002F>\n  \u003Ctext x=\"624\" y=\"186\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#047857\">handoff\u003C\u002Ftext>\n\n  \u003Crect x=\"522\" y=\"206\" width=\"96\" height=\"40\" rx=\"8\" fill=\"#D1FAE5\" stroke=\"#10B981\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"570\" y=\"224\" text-anchor=\"middle\" font-size=\"10.5\" font-weight=\"bold\" fill=\"#064E3B\">Vendas\u003C\u002Ftext>\n  \u003Ctext x=\"570\" y=\"239\" text-anchor=\"middle\" font-size=\"9\" fill=\"#64748B\">especialista\u003C\u002Ftext>\n\n  \u003Crect x=\"630\" y=\"206\" width=\"96\" height=\"40\" rx=\"8\" fill=\"#D1FAE5\" stroke=\"#10B981\" stroke-width=\"1.6\"\u002F>\n  \u003Ctext x=\"678\" y=\"224\" text-anchor=\"middle\" font-size=\"10.5\" font-weight=\"bold\" fill=\"#064E3B\">Suporte\u003C\u002Ftext>\n  \u003Ctext x=\"678\" y=\"239\" text-anchor=\"middle\" font-size=\"9\" fill=\"#64748B\">especialista\u003C\u002Ftext>\n\n  \u003Crect x=\"554\" y=\"262\" width=\"140\" height=\"32\" rx=\"8\" fill=\"#F0FDF4\" stroke=\"#86EFAC\" stroke-width=\"1.4\"\u002F>\n  \u003Ctext x=\"624\" y=\"282\" text-anchor=\"middle\" font-size=\"9.5\" fill=\"#166534\">guardrails validam entrada\u002Fsaída\u003C\u002Ftext>\n\u003C\u002Fsvg>","Three ways to orchestrate agents: stateful graph (LangGraph), role-based crew (CrewAI), and triage with handoffs (OpenAI Agents SDK).",{"type":54,"attrs":229,"content":231},{"id":230,"level":57},"h_sdk3typescript",[232],{"text":233,"type":39},"TypeScript: Mastra and Vercel AI SDK share the throne",{"type":33,"attrs":235,"content":237},{"id":236},"p_sdk3a",[238,240,244,246,250,251,255,256,260,262,266,268,272,274,278,280,284],{"text":239,"type":39},"The JS\u002FTS ecosystem is no longer a second-class citizen. ",{"text":241,"type":39,"marks":242},"Mastra",[243],{"type":44},{"text":245,"type":39}," (Apache 2.0, ~22k stars, from the founding team of Gatsby) combines ReAct-style agents, a graph workflow engine with ",{"text":247,"type":39,"marks":248},".then()",[249],{"type":154},{"text":156,"type":39},{"text":252,"type":39,"marks":253},".branch()",[254],{"type":154},{"text":162,"type":39},{"text":257,"type":39,"marks":258},".parallel()",[259],{"type":154},{"text":261,"type":39}," operators (the TS equivalent of LangGraph), persistent memory, RAG, MCP, and Zod validation. The ",{"text":263,"type":39,"marks":264},"mastra dev",[265],{"type":154},{"text":267,"type":39}," command spins up a local playground with Swagger UI — a developer experience LangGraph doesn't match. Replit, PayPal, and Brex use it in production. The ",{"text":269,"type":39,"marks":270},"Vercel AI SDK",[271],{"type":44},{"text":273,"type":39}," (Apache 2.0, the most downloaded AI SDK on npm) remains unbeatable for chat UIs: ",{"text":275,"type":39,"marks":276},"useChat",[277],{"type":154},{"text":279,"type":39}," hooks that manage streaming automatically and routing to 25+ providers. The winning combo in 2026 is ",{"text":281,"type":39,"marks":282},"Mastra for orchestration + Vercel AI SDK for the interface",[283],{"type":44},{"text":285,"type":39},". LangGraph.js exists, but historically it lags 4 to 8 weeks behind the Python version with every release.",{"type":54,"attrs":287,"content":289},{"id":288,"level":57},"h_sdk4tabela",[290],{"text":291,"type":39},"Quick framework map",{"type":293,"attrs":294,"content":296},"table",{"id":295},"tbl_sdkcompare",[297,338,378,417,455,494,534,572,611,650],{"type":298,"content":299},"tableRow",[300,311,320,329],{"type":301,"attrs":302,"content":304},"tableHeader",{"align":17,"colspan":303,"rowspan":303,"colwidth":17},1,[305],{"type":33,"attrs":306,"content":308},{"id":307},"p_sdkth1",[309],{"text":310,"type":39},"Framework",{"type":301,"attrs":312,"content":313},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[314],{"type":33,"attrs":315,"content":317},{"id":316},"p_sdkth2",[318],{"text":319,"type":39},"Language \u002F License",{"type":301,"attrs":321,"content":322},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[323],{"type":33,"attrs":324,"content":326},{"id":325},"p_sdkth3",[327],{"text":328,"type":39},"Main architecture",{"type":301,"attrs":330,"content":331},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[332],{"type":33,"attrs":333,"content":335},{"id":334},"p_sdkth4",[336],{"text":337,"type":39},"Ideal scenario",{"type":298,"content":339},[340,351,360,369],{"type":341,"attrs":342,"content":343},"tableCell",{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[344],{"type":33,"attrs":345,"content":347},{"id":346},"p_sdkr1a",[348],{"text":128,"type":39,"marks":349},[350],{"type":44},{"type":341,"attrs":352,"content":353},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[354],{"type":33,"attrs":355,"content":357},{"id":356},"p_sdkr1b",[358],{"text":359,"type":39},"Python + TS \u002F MIT",{"type":341,"attrs":361,"content":362},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[363],{"type":33,"attrs":364,"content":366},{"id":365},"p_sdkr1c",[367],{"text":368,"type":39},"Graph with state, checkpoints, HITL",{"type":341,"attrs":370,"content":371},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[372],{"type":33,"attrs":373,"content":375},{"id":374},"p_sdkr1d",[376],{"text":377,"type":39},"Complex enterprise production",{"type":298,"content":379},[380,390,399,408],{"type":341,"attrs":381,"content":382},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[383],{"type":33,"attrs":384,"content":386},{"id":385},"p_sdkr2a",[387],{"text":145,"type":39,"marks":388},[389],{"type":44},{"type":341,"attrs":391,"content":392},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[393],{"type":33,"attrs":394,"content":396},{"id":395},"p_sdkr2b",[397],{"text":398,"type":39},"Python \u002F MIT",{"type":341,"attrs":400,"content":401},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[402],{"type":33,"attrs":403,"content":405},{"id":404},"p_sdkr2c",[406],{"text":407,"type":39},"Multiagent by roles (Crews + Flows)",{"type":341,"attrs":409,"content":410},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[411],{"type":33,"attrs":412,"content":414},{"id":413},"p_sdkr2d",[415],{"text":416,"type":39},"Rapid prototyping, content pipelines",{"type":298,"content":418},[419,429,437,446],{"type":341,"attrs":420,"content":421},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[422],{"type":33,"attrs":423,"content":425},{"id":424},"p_sdkr3a",[426],{"text":182,"type":39,"marks":427},[428],{"type":44},{"type":341,"attrs":430,"content":431},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[432],{"type":33,"attrs":433,"content":435},{"id":434},"p_sdkr3b",[436],{"text":359,"type":39},{"type":341,"attrs":438,"content":439},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[440],{"type":33,"attrs":441,"content":443},{"id":442},"p_sdkr3c",[444],{"text":445,"type":39},"Agents + Handoffs + Guardrails",{"type":341,"attrs":447,"content":448},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[449],{"type":33,"attrs":450,"content":452},{"id":451},"p_sdkr3d",[453],{"text":454,"type":39},"Triage\u002Frouting, OpenAI-compatible APIs",{"type":298,"content":456},[457,467,476,485],{"type":341,"attrs":458,"content":459},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[460],{"type":33,"attrs":461,"content":463},{"id":462},"p_sdkr4a",[464],{"text":205,"type":39,"marks":465},[466],{"type":44},{"type":341,"attrs":468,"content":469},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[470],{"type":33,"attrs":471,"content":473},{"id":472},"p_sdkr4b",[474],{"text":475,"type":39},"Python + TS \u002F proprietary OSS",{"type":341,"attrs":477,"content":478},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[479],{"type":33,"attrs":480,"content":482},{"id":481},"p_sdkr4c",[483],{"text":484,"type":39},"Autonomous agent + subagents + MCP",{"type":341,"attrs":486,"content":487},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[488],{"type":33,"attrs":489,"content":491},{"id":490},"p_sdkr4d",[492],{"text":493,"type":39},"Code agents, OS automation",{"type":298,"content":495},[496,507,516,525],{"type":341,"attrs":497,"content":498},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[499],{"type":33,"attrs":500,"content":502},{"id":501},"p_sdkr5a",[503],{"text":504,"type":39,"marks":505},"Google ADK",[506],{"type":44},{"type":341,"attrs":508,"content":509},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[510],{"type":33,"attrs":511,"content":513},{"id":512},"p_sdkr5b",[514],{"text":515,"type":39},"Py\u002FGo\u002FJava\u002FTS \u002F Apache 2.0",{"type":341,"attrs":517,"content":518},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[519],{"type":33,"attrs":520,"content":522},{"id":521},"p_sdkr5c",[523],{"text":524,"type":39},"Agent hierarchy + native A2A",{"type":341,"attrs":526,"content":527},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[528],{"type":33,"attrs":529,"content":531},{"id":530},"p_sdkr5d",[532],{"text":533,"type":39},"Google Cloud, multi-language",{"type":298,"content":535},[536,546,554,563],{"type":341,"attrs":537,"content":538},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[539],{"type":33,"attrs":540,"content":542},{"id":541},"p_sdkr6a",[543],{"text":211,"type":39,"marks":544},[545],{"type":44},{"type":341,"attrs":547,"content":548},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[549],{"type":33,"attrs":550,"content":552},{"id":551},"p_sdkr6b",[553],{"text":398,"type":39},{"type":341,"attrs":555,"content":556},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[557],{"type":33,"attrs":558,"content":560},{"id":559},"p_sdkr6c",[561],{"text":562,"type":39},"Type-safe, validated structured output",{"type":341,"attrs":564,"content":565},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[566],{"type":33,"attrs":567,"content":569},{"id":568},"p_sdkr6d",[570],{"text":571,"type":39},"Python production with explicit contracts",{"type":298,"content":573},[574,584,593,602],{"type":341,"attrs":575,"content":576},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[577],{"type":33,"attrs":578,"content":580},{"id":579},"p_sdkr7a",[581],{"text":217,"type":39,"marks":582},[583],{"type":44},{"type":341,"attrs":585,"content":586},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[587],{"type":33,"attrs":588,"content":590},{"id":589},"p_sdkr7b",[591],{"text":592,"type":39},"Python \u002F Apache 2.0",{"type":341,"attrs":594,"content":595},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[596],{"type":33,"attrs":597,"content":599},{"id":598},"p_sdkr7c",[600],{"text":601,"type":39},"Minimalist code agents (ReAct)",{"type":341,"attrs":603,"content":604},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[605],{"type":33,"attrs":606,"content":608},{"id":607},"p_sdkr7d",[609],{"text":610,"type":39},"Prototypes, research, hackathons",{"type":298,"content":612},[613,623,632,641],{"type":341,"attrs":614,"content":615},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[616],{"type":33,"attrs":617,"content":619},{"id":618},"p_sdkr8a",[620],{"text":241,"type":39,"marks":621},[622],{"type":44},{"type":341,"attrs":624,"content":625},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[626],{"type":33,"attrs":627,"content":629},{"id":628},"p_sdkr8b",[630],{"text":631,"type":39},"TypeScript \u002F Apache 2.0",{"type":341,"attrs":633,"content":634},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[635],{"type":33,"attrs":636,"content":638},{"id":637},"p_sdkr8c",[639],{"text":640,"type":39},"ReAct + graph workflows + networks",{"type":341,"attrs":642,"content":643},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[644],{"type":33,"attrs":645,"content":647},{"id":646},"p_sdkr8d",[648],{"text":649,"type":39},"TS production agents, serverless",{"type":298,"content":651},[652,662,670,679],{"type":341,"attrs":653,"content":654},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[655],{"type":33,"attrs":656,"content":658},{"id":657},"p_sdkr9a",[659],{"text":269,"type":39,"marks":660},[661],{"type":44},{"type":341,"attrs":663,"content":664},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[665],{"type":33,"attrs":666,"content":668},{"id":667},"p_sdkr9b",[669],{"text":631,"type":39},{"type":341,"attrs":671,"content":672},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[673],{"type":33,"attrs":674,"content":676},{"id":675},"p_sdkr9c",[677],{"text":678,"type":39},"Streaming UI + tool loop",{"type":341,"attrs":680,"content":681},{"align":17,"colspan":303,"rowspan":303,"colwidth":17},[682],{"type":33,"attrs":683,"content":685},{"id":684},"p_sdkr9d",[686],{"text":687,"type":39},"Chat UIs in Next.js\u002FReact",{"type":223,"attrs":689},{"id":690,"svg":691,"label":692},"svg_estrelas","\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 760 400\" font-family=\"Helvetica, Arial, sans-serif\">\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"400\" rx=\"12\" fill=\"#F8FAFC\"\u002F>\n  \u003Ctext x=\"380\" y=\"34\" text-anchor=\"middle\" font-size=\"17\" font-weight=\"bold\" fill=\"#0F172A\">Tamanho da comunidade: estrelas no GitHub (milhares, ~2026)\u003C\u002Ftext>\n\n  \u003C!-- grade -->\n  \u003Cline x1=\"190\" y1=\"56\" x2=\"190\" y2=\"356\" stroke=\"#CBD5E1\" stroke-width=\"1.2\"\u002F>\n\n  \u003C!-- LangChain 137 -->\n  \u003Ctext x=\"180\" y=\"76\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">LangChain\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"62\" width=\"520\" height=\"20\" rx=\"4\" fill=\"#6366F1\"\u002F>\n  \u003Ctext x=\"704\" y=\"76\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">137k\u003C\u002Ftext>\n\n  \u003C!-- AutoGen 58 -->\n  \u003Ctext x=\"180\" y=\"106\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">AutoGen \u002F AG2\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"92\" width=\"220\" height=\"20\" rx=\"4\" fill=\"#94A3B8\"\u002F>\n  \u003Ctext x=\"404\" y=\"106\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">58k\u003C\u002Ftext>\n\n  \u003C!-- CrewAI 53 -->\n  \u003Ctext x=\"180\" y=\"136\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">CrewAI\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"122\" width=\"201\" height=\"20\" rx=\"4\" fill=\"#EF4444\"\u002F>\n  \u003Ctext x=\"385\" y=\"136\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">53k\u003C\u002Ftext>\n\n  \u003C!-- LlamaIndex 50 -->\n  \u003Ctext x=\"180\" y=\"166\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">LlamaIndex\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"152\" width=\"190\" height=\"20\" rx=\"4\" fill=\"#8B5CF6\"\u002F>\n  \u003Ctext x=\"374\" y=\"166\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">50k\u003C\u002Ftext>\n\n  \u003C!-- Agno 40 -->\n  \u003Ctext x=\"180\" y=\"196\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">Agno\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"182\" width=\"152\" height=\"20\" rx=\"4\" fill=\"#0EA5E9\"\u002F>\n  \u003Ctext x=\"336\" y=\"196\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">40k\u003C\u002Ftext>\n\n  \u003C!-- Semantic Kernel 28 -->\n  \u003Ctext x=\"180\" y=\"226\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">Semantic Kernel\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"212\" width=\"106\" height=\"20\" rx=\"4\" fill=\"#64748B\"\u002F>\n  \u003Ctext x=\"290\" y=\"226\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">28k\u003C\u002Ftext>\n\n  \u003C!-- LangGraph 26 -->\n  \u003Ctext x=\"180\" y=\"256\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">LangGraph\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"242\" width=\"99\" height=\"20\" rx=\"4\" fill=\"#3B82F6\"\u002F>\n  \u003Ctext x=\"283\" y=\"256\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">26k\u003C\u002Ftext>\n\n  \u003C!-- smolagents 26 -->\n  \u003Ctext x=\"180\" y=\"286\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">smolagents\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"272\" width=\"99\" height=\"20\" rx=\"4\" fill=\"#F59E0B\"\u002F>\n  \u003Ctext x=\"283\" y=\"286\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">26k\u003C\u002Ftext>\n\n  \u003C!-- Vercel AI SDK 25 -->\n  \u003Ctext x=\"180\" y=\"316\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">Vercel AI SDK\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"302\" width=\"95\" height=\"20\" rx=\"4\" fill=\"#111827\"\u002F>\n  \u003Ctext x=\"279\" y=\"316\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">25k\u003C\u002Ftext>\n\n  \u003C!-- Mastra 22 -->\n  \u003Ctext x=\"180\" y=\"346\" text-anchor=\"end\" font-size=\"12\" fill=\"#334155\">Mastra\u003C\u002Ftext>\n  \u003Crect x=\"190\" y=\"332\" width=\"83\" height=\"20\" rx=\"4\" fill=\"#10B981\"\u002F>\n  \u003Ctext x=\"267\" y=\"346\" text-anchor=\"end\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#FFFFFF\">22k\u003C\u002Ftext>\n\n  \u003Ctext x=\"380\" y=\"384\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#64748B\">Estrelas indicam comunidade, não adoção: LangGraph.js tem ~2,3k estrelas e 529 mil downloads semanais no npm.\u003C\u002Ftext>\n\u003C\u002Fsvg>","GitHub stars by framework (thousands, ~2026). Stars indicate community, not production adoption.",{"type":54,"attrs":694,"content":696},{"id":695,"level":57},"h_sdk5codigo",[697],{"text":698,"type":39},"Your first agent in five minutes — for free",{"type":33,"attrs":700,"content":702},{"id":701},"p_sdk5a",[703,705,709],{"text":704,"type":39},"The synergy between open-source frameworks and free APIs is the sweet spot where everything clicks. Since the OpenAI Agents SDK accepts any OpenAI-compatible endpoint, you can build an agent with tools running ",{"text":706,"type":39,"marks":707},"100% free on Groq's free tier",[708],{"type":44},{"text":710,"type":39}," (14,400 requests\u002Fday on Llama 3.1 8B, no card required). Install the dependencies:",{"type":223,"attrs":712},{"id":713,"svg":714,"label":715},"svg_loop","\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 760 300\" font-family=\"Helvetica, Arial, sans-serif\">\n  \u003Cdefs>\n    \u003Cmarker id=\"arr\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\n      \u003Cpath d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#475569\"\u002F>\n    \u003C\u002Fmarker>\n  \u003C\u002Fdefs>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"300\" rx=\"12\" fill=\"#F8FAFC\"\u002F>\n  \u003Ctext x=\"380\" y=\"34\" text-anchor=\"middle\" font-size=\"17\" font-weight=\"bold\" fill=\"#0F172A\">O loop agêntico (ReAct): como um agente decide e age\u003C\u002Ftext>\n\n  \u003C!-- Usuário -->\n  \u003Crect x=\"30\" y=\"120\" width=\"130\" height=\"64\" rx=\"10\" fill=\"#EEF2FF\" stroke=\"#6366F1\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"95\" y=\"147\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" fill=\"#3730A3\">Usuário\u003C\u002Ftext>\n  \u003Ctext x=\"95\" y=\"166\" text-anchor=\"middle\" font-size=\"11\" fill=\"#475569\">prompt \u002F tarefa\u003C\u002Ftext>\n\n  \u003C!-- LLM -->\n  \u003Crect x=\"230\" y=\"106\" width=\"170\" height=\"92\" rx=\"10\" fill=\"#FFF7ED\" stroke=\"#F97316\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"315\" y=\"136\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" fill=\"#9A3412\">Agente (LLM)\u003C\u002Ftext>\n  \u003Ctext x=\"315\" y=\"156\" text-anchor=\"middle\" font-size=\"11\" fill=\"#475569\">raciocina e decide\u003C\u002Ftext>\n  \u003Ctext x=\"315\" y=\"172\" text-anchor=\"middle\" font-size=\"11\" fill=\"#475569\">a próxima ação\u003C\u002Ftext>\n\n  \u003C!-- Ferramenta -->\n  \u003Crect x=\"480\" y=\"52\" width=\"150\" height=\"64\" rx=\"10\" fill=\"#ECFDF5\" stroke=\"#10B981\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"555\" y=\"79\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" fill=\"#065F46\">Ferramenta\u003C\u002Ftext>\n  \u003Ctext x=\"555\" y=\"98\" text-anchor=\"middle\" font-size=\"11\" fill=\"#475569\">tool \u002F function call\u003C\u002Ftext>\n\n  \u003C!-- Resposta -->\n  \u003Crect x=\"480\" y=\"188\" width=\"150\" height=\"64\" rx=\"10\" fill=\"#FDF2F8\" stroke=\"#EC4899\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"555\" y=\"215\" text-anchor=\"middle\" font-size=\"14\" font-weight=\"bold\" fill=\"#9D174D\">Resposta final\u003C\u002Ftext>\n  \u003Ctext x=\"555\" y=\"234\" text-anchor=\"middle\" font-size=\"11\" fill=\"#475569\">tarefa concluída\u003C\u002Ftext>\n\n  \u003C!-- setas -->\n  \u003Cline x1=\"160\" y1=\"152\" x2=\"224\" y2=\"152\" stroke=\"#475569\" stroke-width=\"2\" marker-end=\"url(#arr)\"\u002F>\n\n  \u003Cpath d=\"M 400 128 C 430 110, 445 98, 474 90\" fill=\"none\" stroke=\"#475569\" stroke-width=\"2\" marker-end=\"url(#arr)\"\u002F>\n  \u003Ctext x=\"430\" y=\"92\" font-size=\"10.5\" fill=\"#334155\">1. chama a ferramenta\u003C\u002Ftext>\n\n  \u003Cpath d=\"M 480 110 C 450 124, 435 132, 406 144\" fill=\"none\" stroke=\"#10B981\" stroke-width=\"2\" stroke-dasharray=\"5 4\" marker-end=\"url(#arr)\"\u002F>\n  \u003Ctext x=\"402\" y=\"120\" font-size=\"10.5\" fill=\"#047857\">2. resultado volta\u003C\u002Ftext>\n\n  \u003Cpath d=\"M 400 176 C 430 192, 445 200, 474 212\" fill=\"none\" stroke=\"#475569\" stroke-width=\"2\" marker-end=\"url(#arr)\"\u002F>\n  \u003Ctext x=\"408\" y=\"206\" font-size=\"10.5\" fill=\"#334155\">3. quando terminar\u003C\u002Ftext>\n\n  \u003C!-- loop -->\n  \u003Cpath d=\"M 315 198 C 315 250, 555 270, 555 256\" fill=\"none\" stroke=\"#94A3B8\" stroke-width=\"1.6\" stroke-dasharray=\"3 4\"\u002F>\n  \u003Ctext x=\"330\" y=\"262\" font-size=\"10.5\" fill=\"#64748B\">o ciclo decidir → agir → observar repete quantas vezes for preciso\u003C\u002Ftext>\n\u003C\u002Fsvg>","The agentic loop (ReAct): the LLM decides, calls tools, observes results, and repeats until the task is done.",{"type":717,"attrs":718,"content":722},"codeBlock",{"id":719,"language":720,"highlighted":721},"code_sdkinstall","bash","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">pip\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> install openai-agents python-dotenv\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",[723],{"text":724,"type":39},"pip install openai-agents python-dotenv\n",{"type":33,"attrs":726,"content":728},{"id":727},"p_sdk5b",[729,731,734],{"text":730,"type":39},"And paste the minimal agent with a mock weather search tool, pointing to Groq via ",{"text":194,"type":39,"marks":732},[733],{"type":154},{"text":735,"type":39},":",{"type":717,"attrs":737,"content":741},{"id":738,"language":739,"highlighted":740},"code_sdkagent","python","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> dotenv \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> load_dotenv\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> agents \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> Agent, Runner, function_tool\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> agents.extensions.models.litellm_model \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> LitellmModel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">load_dotenv()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">@function_tool\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\"> clima\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">(cidade: \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">str\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">) -> \u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">str\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    \"\"\"Retorna o clima atual de uma cidade.\"\"\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    return f\"Em {cidade}: 24°C, parcialmente nublado.\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">agente = Agent(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    name=\"Assistente\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    instructions=\"Responda em português, de forma direta.\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    model=LitellmModel(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">        model=\"groq\u002Fllama-3.3-70b-versatile\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">        api_key=os.environ[\"GROQ_API_KEY\"],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    ),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">    tools=[clima],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">resultado = Runner.run_sync(agente, \"Como está o tempo em Petrópolis?\")\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">print(resultado.final_output)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",[742],{"text":743,"type":39},"import os\nfrom dotenv import load_dotenv\nfrom agents import Agent, Runner, function_tool\nfrom agents.extensions.models.litellm_model import LitellmModel\n\nload_dotenv()\n\n@function_tool\ndef clima(cidade: str) -> str:\n    \"\"\"Retorna o clima atual de uma cidade.\"\"\"\n    return f\"Em {cidade}: 24°C, parcialmente nublado.\"\n\nagente = Agent(\n    name=\"Assistente\",\n    instructions=\"Responda em português, de forma direta.\",\n    model=LitellmModel(\n        model=\"groq\u002Fllama-3.3-70b-versatile\",\n        api_key=os.environ[\"GROQ_API_KEY\"],\n    ),\n    tools=[clima],\n)\n\nresultado = Runner.run_sync(agente, \"Como está o tempo em Petrópolis?\")\nprint(resultado.final_output)\n",{"type":33,"attrs":745,"content":747},{"id":746},"p_sdk5c",[748,750,754,756,760],{"text":749,"type":39},"The full agentic loop — the model decides to call the tool, gets the result back, and formulates the final answer — happens in seconds and costs zero. For multi-agent in CrewAI, the same logic applies: define ",{"text":751,"type":39,"marks":752},"LLM(model=\"groq\u002Fllama-3.3-70b-versatile\")",[753],{"type":154},{"text":755,"type":39}," and assemble your crew. And remember the same API best practices: keys in ",{"text":757,"type":39,"marks":758},".env",[759],{"type":154},{"text":761,"type":39}," (never in Git), spending limits enabled, and extra caution with agents that execute code or shell — sandbox is not optional in production.",{"type":54,"attrs":763,"content":765},{"id":764,"level":57},"h_sdk6pagas",[766],{"text":767,"type":39},"When it's worth paying: the enterprise layer",{"type":33,"attrs":769,"content":771},{"id":770},"p_sdk6a",[772,774,778,780,784,786,790,792,796,798,802,804,808],{"text":773,"type":39},"The market rule in 2026 is clear: ",{"text":775,"type":39,"marks":776},"the framework is free; you pay for the operations layer",[777],{"type":44},{"text":779,"type":39}," — managed observability, deploy, security, and compliance. ",{"text":781,"type":39,"marks":782},"LangSmith",[783],{"type":44},{"text":785,"type":39}," has a free tier of 5,000 traces\u002Fmonth and a Plus plan at $39\u002Fseat\u002Fmonth; the open-source alternative Langfuse (MIT, self-hostable) delivers the essentials for ~1\u002F3 of the cost. ",{"text":787,"type":39,"marks":788},"CrewAI Enterprise",[789],{"type":44},{"text":791,"type":39}," goes from $25\u002Fmonth up to ~$75-90K\u002Fyear contracts with SOC2, HIPAA, and SSO — and LLM consumption typically exceeds the license by 2-3x. In the clouds, ",{"text":793,"type":39,"marks":794},"AWS Bedrock AgentCore",[795],{"type":44},{"text":797,"type":39}," ($0.0895 per vCPU-hour, charging only for consumed CPU), ",{"text":799,"type":39,"marks":800},"Azure AI Foundry",[801],{"type":44},{"text":803,"type":39}," (native integration with Microsoft 365), and ",{"text":805,"type":39,"marks":806},"Vertex AI Agent Builder",[807],{"type":44},{"text":809,"type":39}," (grounding with Google Search) are all framework-agnostic: you run your LangGraph or CrewAI on top of them. The right choice is simply the cloud where your data already lives. Pay when the costs of failure, audit, or compliance exceed the effort of building that infrastructure internally — before that, open-source + Langfuse gets it done.",{"type":223,"attrs":811},{"id":812,"svg":813,"label":814},"svg_custo","\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 760 300\" font-family=\"Helvetica, Arial, sans-serif\">\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"300\" rx=\"12\" fill=\"#F8FAFC\"\u002F>\n  \u003Ctext x=\"380\" y=\"34\" text-anchor=\"middle\" font-size=\"17\" font-weight=\"bold\" fill=\"#0F172A\">Onde está o custo real de um agente em produção\u003C\u002Ftext>\n\n  \u003C!-- Camada 3 (topo): operação -->\n  \u003Crect x=\"60\" y=\"60\" width=\"520\" height=\"60\" rx=\"10\" fill=\"#FDF2F8\" stroke=\"#EC4899\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"80\" y=\"85\" font-size=\"13\" font-weight=\"bold\" fill=\"#9D174D\">Camada de operação (opcional, paga)\u003C\u002Ftext>\n  \u003Ctext x=\"80\" y=\"104\" font-size=\"11\" fill=\"#475569\">LangSmith, CrewAI Enterprise, Bedrock AgentCore, Azure AI Foundry, Vertex AI\u003C\u002Ftext>\n  \u003Ctext x=\"650\" y=\"95\" text-anchor=\"middle\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#9D174D\">US$ 0 a US$ milhares\u002Fmês\u003C\u002Ftext>\n\n  \u003C!-- Camada 2: tokens -->\n  \u003Crect x=\"60\" y=\"132\" width=\"520\" height=\"60\" rx=\"10\" fill=\"#FFF7ED\" stroke=\"#F97316\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"80\" y=\"157\" font-size=\"13\" font-weight=\"bold\" fill=\"#9A3412\">Tokens do LLM — o custo dominante\u003C\u002Ftext>\n  \u003Ctext x=\"80\" y=\"176\" font-size=\"11\" fill=\"#475569\">em plataformas enterprise, chega a 2-3x o valor da licença; free tiers podem zerar\u003C\u002Ftext>\n  \u003Ctext x=\"650\" y=\"167\" text-anchor=\"middle\" font-size=\"11.5\" font-weight=\"bold\" fill=\"#9A3412\">US$ 0 (free tier) a 2-3x a licença\u003C\u002Ftext>\n\n  \u003C!-- Camada 1 (base): framework -->\n  \u003Crect x=\"60\" y=\"204\" width=\"520\" height=\"60\" rx=\"10\" fill=\"#ECFDF5\" stroke=\"#10B981\" stroke-width=\"2\"\u002F>\n  \u003Ctext x=\"80\" y=\"229\" font-size=\"13\" font-weight=\"bold\" fill=\"#065F46\">Framework open-source (MIT \u002F Apache 2.0)\u003C\u002Ftext>\n  \u003Ctext x=\"80\" y=\"248\" font-size=\"11\" fill=\"#475569\">LangGraph, CrewAI, Agents SDK, Pydantic AI, Mastra, smolagents, ADK...\u003C\u002Ftext>\n  \u003Ctext x=\"650\" y=\"239\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"bold\" fill=\"#065F46\">sempre US$ 0\u003C\u002Ftext>\n\n  \u003Ctext x=\"380\" y=\"288\" text-anchor=\"middle\" font-size=\"10.5\" fill=\"#64748B\">Regra de 2026: o framework é grátis — você paga (se pagar) por tokens e pela operação gerenciada.\u003C\u002Ftext>\n\u003C\u002Fsvg>","The cost stack of an agent in 2026: framework always free, tokens as the dominant cost, managed operations optional.",{"type":54,"attrs":816,"content":818},{"id":817,"level":57},"h_sdk7conclusao",[819],{"text":820,"type":39},"The right framework is the one that solves your problem with less code",{"type":33,"attrs":822,"content":824},{"id":823},"p_sdk7a",[825,827,831,833],{"text":826,"type":39},"The same democratization logic from APIs applies to agent SDKs: ",{"text":828,"type":39,"marks":829},"the barrier is no longer cost or access, it's just a decision",[830],{"type":44},{"text":832,"type":39},". Complex and auditable workflow? LangGraph. Multi-agent prototype in an afternoon? CrewAI. TypeScript stack? Mastra. Code agent? Claude Agent SDK. Simple triage over an OpenAI-compatible API? OpenAI Agents SDK. In all cases, adopt MCP for tools and A2A for agent-to-agent communication from the start — it's these open standards that make the decision reversible. Start with the simplest option that works, spend 80% of your time on prompts and tool definition (not on framework choice), and incorporate evaluation and observability from day one. ",{"text":834,"type":39,"marks":835},"Your first agent's code fits in twenty lines and runs for free. All that's left is to start.",[836],{"type":44},"AI Agent SDKs in 2026: Free Frameworks & Your Decision","Choose the ideal SDK for AI agents in 2026. With open-source frameworks and zero cost, we analyze LangGraph 1.0, CrewAI, and Mastra with real data.","2026-08-24T14:53:53.315534+00:00",[841,863,880,894],{"id":842,"slug":843,"title":844,"excerpt":845,"image":846,"featured":10,"groupId":847,"publishedAt":848,"readingTime":13,"views":14,"author":849,"category":850,"tags":851},"10ee04ce-fa53-44d7-9603-2e375733d313","the-rise-of-shadow-deployment-and-the-dna-behind-the-hidden-ox-alpha-model","The Rise of Shadow Deployment and the DNA Behind the Hidden Ox Alpha Model","The ghost launch of Ox Alpha revealed a new era in software engineering, where strategic anonymity redefines the future of AI models.","https:\u002F\u002Fmfgiomkkbihnlpfdxwrt.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-assets\u002Fmedia\u002Ffeatured\u002F1787604179257-featured-byxw99.webp","ba241d77-9b03-4c87-8e52-ba727a888e59","2026-08-24T22:56:11.386568+00:00",{"name":16,"avatar":17},{"slug":19,"name":20,"color":21},[852,855,856,859,860],{"slug":853,"name":854},"china","China",{"slug":24,"name":25},{"slug":857,"name":858},"infraestrutura","Infraestrutura",{"slug":27,"name":28},{"slug":861,"name":862},"performance","Performance",{"id":864,"slug":865,"title":866,"excerpt":867,"image":868,"featured":10,"groupId":869,"publishedAt":870,"readingTime":871,"views":14,"author":872,"category":873,"tags":874},"99d8b7bf-03aa-4c01-8bc7-ef1aca804b30","conversational-ai-exhausted-how-to-migrate-to-agentic-workflows-and-execute-real-actions","Conversational AI Exhausted? How to Migrate to Agentic Workflows and Execute Real Actions","The chat paradigm is exhausted. Discover agentic workflows: systems that plan, execute, and verify tasks autonomously and in a testable manner.","https:\u002F\u002Fmfgiomkkbihnlpfdxwrt.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-assets\u002Fmedia\u002Ffeatured\u002F1773194326109-featured-g0e36z.jpeg","2438fae0-5c5e-41ce-9543-89007a6888cc","2026-07-08T23:42:19.403576+00:00",4,{"name":16,"avatar":17},{"slug":19,"name":20,"color":21},[875,876,877],{"slug":27,"name":28},{"slug":24,"name":25},{"slug":878,"name":879},"openclaw","OpenClaw",{"id":881,"slug":882,"title":883,"excerpt":884,"image":885,"featured":10,"groupId":886,"publishedAt":887,"readingTime":888,"views":14,"author":889,"category":890,"tags":891},"011ee3e7-61c8-4877-a99b-edc119022f4d","glm-52-vs-kimi-k27-why-glm-wins-the-code-reliability-test","GLM-5.2 vs. Kimi K2.7: Why GLM Wins the Code Reliability Test","Five independent evaluators tested GLM-5.2 and Kimi K2.7 on coding tasks. Discover which model wins the battle for reliability and development speed.","https:\u002F\u002Fmfgiomkkbihnlpfdxwrt.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-assets\u002Fmedia\u002Ffeatured\u002F1782256309298-featured-ubiuao.webp","8707b037-1af8-46ff-972a-99c4ead20adc","2026-07-08T22:58:35.7148+00:00",5,{"name":16,"avatar":17},{"slug":19,"name":20,"color":21},[892,893],{"slug":27,"name":28},{"slug":861,"name":862},{"id":895,"slug":896,"title":897,"excerpt":898,"image":899,"featured":10,"groupId":900,"publishedAt":901,"readingTime":902,"views":14,"author":903,"category":904,"tags":905},"e595e2c6-e464-46d7-ba67-810f8d0cd234","how-to-choose-an-ai-sdk-why-the-fear-of-lock-in-is-a-mistake-and-how-to-decide-based-on-your-apps-format","How to choose an AI SDK: why the fear of lock-in is a mistake and how to decide based on your app's format","The fear of being locked into an AI provider is a common mistake. Learn how to choose the best SDK based on your project's format and productivity.","https:\u002F\u002Fmfgiomkkbihnlpfdxwrt.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fblog-assets\u002Fmedia\u002Ffeatured\u002F1782794440171-featured-aqj363.webp","7839c171-0b65-418a-87dc-7ded7786a84a","2026-07-04T19:26:16.054373+00:00",6,{"name":16,"avatar":17},{"slug":19,"name":20,"color":21},[906,907],{"slug":27,"name":28},{"slug":24,"name":25},{"en":6,"es":909,"pt":910},"sdks-de-agentes-de-ia-en-2026-el-framework-es-gratis-la-decision-es-tuya","sdks-de-agentes-de-ia-em-2026-o-framework-e-gratis-a-decisao-e-sua",[912,918,924,928,933],{"id":913,"slug":914,"name":915,"colorHex":916,"iconName":17,"postCount":917},"0e2c1225-f78a-4c20-8c93-998ab9dc93b9","frontend","Frontend","#40484f",25,{"id":919,"slug":920,"name":921,"colorHex":922,"iconName":17,"postCount":923},"bc8df70e-b7fb-4d89-a80c-fd458d36d58c","code-development","Code & Development","#8b5cf6",23,{"id":925,"slug":19,"name":20,"colorHex":21,"iconName":926,"postCount":927},"550e8400-e29b-41d4-a716-446655440001","brain",14,{"id":929,"slug":930,"name":931,"colorHex":932,"iconName":17,"postCount":871},"ea63b69c-2eb4-4100-81f3-70ce52d33743","tech-news","Tech News","#e50606",{"id":934,"slug":935,"name":936,"colorHex":937,"iconName":938,"postCount":57},"550e8400-e29b-41d4-a716-446655440017","how-to-guides","How-To & Guides","#be123c","book-open"]