spinny:~/writing $ vim agentic-ai-frameworks-comparison.md
1~2AI-agenter har gatt fran forskningsdemos till produktionssystem. Over 60% av enterprise AI-tillaampningar forvantas innehalla agentiska komponenter till 2026. Men att bygga agenter fran grunden - hantera tool-loopar, state, minne, felhantering och multi-agent-koordinering - ar komplext. Det ar dar ramverk kommer in.3~4Fyra ramverk dominerar 2026: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** och **Claude Agent SDK**. Varje tar ett fundamentalt annorlunda tillvagagangssatt for samma problem: att ge LLM:er formagan att resonera, planera, anvanda verktyg och samarbeta.5~6## I Korthet7~8| Aspekt | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Av** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Arkitektur** | Grafbaserad | Rollbaserad | Handoff-baserad | Autonom loop |12| **Filosofi** | Maximal kontroll | Teamsamarbete | Minimal abstraktion | Ge agenten en dator |13| **Sprak** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Modellstod** | Alla (OpenAI, Claude, lokala) | Alla | Alla (trots namnet) | Endast Claude |15| **GitHub stars** | ~29k | ~40k | ~21k | ~6k |16| **Bast for** | Komplexa tillstandshanterade workflows | Multi-agent-specialisering | Routing och triage | Coding och filintensiva uppgifter |17~18## LangGraph: Grafbyggaren19~20LangGraph modellerar agent-workflows som **riktade cykliska grafer**. Du definierar noder (funktioner som utfor arbete) och kanter (overganger mellan dem, valfritt villkorliga). State floder genom grafen och persisteras via checkpointing.21~22Detta ar det mest explicita och kontrollerbara ramverket - du kopplar varje steg sjalv.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### Karnkoncept35~36- **StateGraph**: grafdefinitionen med typad state37- **Nodes**: Python-funktioner som transformerar state38- **Edges**: kopplingar mellan noder, kan vara villkorliga39- **Checkpointing**: inbyggd persistens for langvariga workflows40~41### Kodexempel42~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### Styrkor79~80- Detaljerad kontroll over varje steg och overgang81- Inbyggd checkpointing och human-in-the-loop82- Full TypeScript-paritet83- Fungerar med vilken LLM-leverantor som helst84- Bast for komplexa workflows med villkorlig forgrening och loopar85~86### Svagheter87~88- Brant inlarningskurva - du behover forsta grafteorikoncept89- Omstandligt for enkla anvandningsfall - en enkel agent kraver mer boilerplate an andra ramverk90- Att debugga graffloden kan vara utmanande utan LangSmith91~92### Priser93~94Open-source (MIT). LangSmith (hanterad observability-plattform) har betalda nivaer for produktionsovervakning.95~96## CrewAI: Teamsammanstallaren97~98CrewAI anvander en mansklig metafor: du satter ihop en **crew** av specialiserade agenter, var och en med en **roll**, ett **mal** och en **bakgrundshistoria**. Agenter samarbetar om **uppgifter** med hjalp av **verktyg**, koordinerade av en **process** (sekventiell, hierarkisk eller konsensusbaserad).99~100Tank pa det som att anstalla ett team dar varje medlem har en specifik yrkestitel och specialitet.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### Karnkoncept114~115- **Agent**: en persona med roll, mal, bakgrundshistoria och verktyg116- **Task**: ett uppdrag med beskrivning, forvantad output och tilldelad agent117- **Crew**: en grupp agenter som arbetar tillsammans118- **Process**: exekveringsstrategi (sekventiell, hierarkisk, konsensusbaserad)119- **Flow**: haendelsedriven orkestreringslagret for att koppla samman flera crews120~121### Kodexempel122~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### Styrkor171~172- Intuitiv rollbaserad abstraktion - latt att forsta173- Over 100 inbyggda tool-integrationer174- Delat minne over agenter (korttids-, langtids-, entity-minne)175- Storsta communityn (~40k GitHub stars)176- Hierarkisk process med en "manager"-agent som delegerar och validerar177~178### Svagheter179~180- Mindre detaljerad kontroll an LangGraph - du definierar roller, inte exakta exekveringsvagar181- Hierarkisk process kan vara oforutsagbar nar agenter ar oense182- Att debugga multi-agent-konversationer ar svarare an single-agent-floden183~184### Priser185~186Open-source-karna (gratis). CrewAI Platform: $99/manad (Teams) till $120k/ar (Enterprise). Priser baserade pa aktiva crews och manatliga exekveringar.187~188## OpenAI Agents SDK: Routern189~190OpenAI Agents SDK (andlig efterfoljare till Swarm) fokuserar pa **handoffs** - agenter som overlamnar konversationer till andra specialiserade agenter. Det ar det mest minimala ramverket: agenter, verktyg, handoffs och guardrails. Det ar allt.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### Karnkoncept204~205- **Agent**: modell + instruktioner + verktyg + handoffs206- **Handoff**: en overlamning till en annan agent (modellerad som ett verktyg som LLM:en kan anropa)207- **Guardrail**: indata-/utdatavalidering som kor parallellt med agenten208- **Runner**: exekverar agent-loopen209- **Tracing**: inbyggd observability for alla LLM-anrop, verktygsexekveringar och handoffs210~211### Kodexempel212~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### Styrkor258~259- Rent handoff-monster - naturligt for routing-/triage-workflows260- Guardrails kor parallellt med exekvering (fail-fast, inte blockerande)261- Inbyggd tracing-dashboard for debugging262- Trots namnet stods aven icke-OpenAI-modeller263- Minimal abstraktion - latt att forsta och utoka264~265### Svagheter266~267- Mindre mogen state management an LangGraph268- Ingen inbyggd persistens eller checkpointing269- Ekosystemet av tredjepartsverktyg ar mindre270- Handoff-centrerad design kanske inte passar alla arkitekturer271~272### Priser273~274Open-source (MIT). Du betalar per token for vilken modell du an anvander.275~276## Claude Agent SDK: Utvecklaren277~278Claude Agent SDK tar ett annorlunda tillvagagangssatt: istallet for att definiera workflows eller roller ger du agenten en **uppsattning verktyg och later den lista ut hur den ska utfora uppgiften**. Den anvander samma autonoma loop som driver Claude Code - lasa, agera, verifiera, iterera.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### Karnkoncept291~292- **query()**: huvudingangspunkten som startar agent-loopen293- **Inbyggda verktyg**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Anpassade verktyg via MCP**: definiera verktyg som in-process MCP-servrar295- **Sub-agenter**: specialiserade agenter som den overordnade agenten kan delegera till296- **Sessions**: behall kontext over flera interaktioner297~298### Kodexempel299~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### Styrkor336~337- Forstklassig MCP-integration - anslut till hela MCP-server-ekosystemet338- Inbyggda verktyg for filoperationer, terminal och webbatkomst339- Automatisk kontextkomprimering for stora kodbaser340- Sub-agent-parallellism for komplexa uppgifter341- Samma motor som Claude Code - stridstestad i riktiga utvecklingsworkflows342~343### Svagheter344~345- Endast Claude-modeller - inget multi-provider-stod346- Nyare ramverk med en mindre community347- Kraver Node.js-runtime aven for Python SDK348- Mindre explicit workflowkontroll jamfort med LangGraph349~350### Priser351~352Open-source. Standard Claude API-tokenpriser. Managed Agents (hostad version): $0,08 per sessionstimme utover tokenkostnader.353~354## Nar ska du valja vilket355~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### Valj LangGraph om:371- Du behover exakt kontroll over varje steg i workflowen372- Ditt anvandningsfall innefattar komplex villkorlig logik och loopar373- Du vill ha inbyggd persistens och human-in-the-loop-checkpoints374- Du behover anvanda flera LLM-leverantorer i samma workflow375~376### Valj CrewAI om:377- Du vill ha en intuitiv, rollbaserad abstraktion378- Din uppgift innefattar flera agenter med olika specialiseringar379- Du behover agenter som samarbetar och skickar kontext mellan varandra380- Den storsta communityn och flest inbyggda integrationer ar viktigt for dig381~382### Valj OpenAI Agents SDK om:383- Ditt primara monster ar att routa konversationer till specialister384- Du behover guardrails som validerar indata/utdata parallellt385- Du vill ha enklast mojliga abstraktion med minimal boilerplate386- Inbyggd tracing och observability ar viktigt387~388### Valj Claude Agent SDK om:389- Dina agenter behover lasa, skriva och exekvera kod390- Du vill ha forstklassig MCP-server-integration391- Du behover autonoma agenter som itererar och sjalvkorrigerar392- Du redan anvander Claude och vill ha den djupaste integrationen393~394## Kan man kombinera ramverk?395~396Ja. Ett vanligt monster ar att anvanda ett ramverk for orkestrering och ett annat for individuella agenter:397~398- **LangGraph** for den overgripande workflow-grafen399- **CrewAI** for en specifik nod som kraver multi-agent-samarbete400- **Claude Agent SDK** for kodrelaterade deluppgifter via MCP401- **OpenAI Agents SDK** for kundriktad triage och routing402~403Ramverken utesluter inte varandra. Anvand det som passar varje del av ditt system.404~405## Slutsats406~407Varje ramverk satsar pa en tydlig inriktning:408~409- **LangGraph** optimerar for kontroll - du bestammer varje overgang410- **CrewAI** optimerar for samarbete - agenter arbetar som ett team411- **OpenAI Agents SDK** optimerar for enkelhet - minimal abstraktion, rena handoffs412- **Claude Agent SDK** optimerar for autonomi - ge det verktyg och lat det arbeta413~414Ratt val beror pa din workflow, ditt team och din befintliga stack. Valj det som matchar ditt primara anvandningsfall, lar dig det ordentligt och dra in andra nar du traffar deras styrkor.415~
NORMAL · agentic-ai-frameworks-comparison.md [readonly]415 lines · :q to close