spinny:~/writing $ vim agentic-ai-frameworks-comparison.md
1~2Agenty AI przeszly od demonstracji badawczych do systemow produkcyjnych. Oczekuje sie, ze ponad 60% korporacyjnych aplikacji AI bedzie zawierac komponenty agentowe do 2026 roku. Ale budowanie agentow od zera - zarzadzanie petlami narzedzi, stanem, pamiecia, obsluga bledow i koordynacja wielu agentow - jest zlozone. Wlasnie dlatego powstaly frameworki.3~4Cztery frameworki dominuja w 2026 roku: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** i **Claude Agent SDK**. Kazdy z nich przyjmuje zasadniczo inne podejscie do tego samego problemu: nadania modelom LLM zdolnosci do rozumowania, planowania, uzywania narzedzi i wspolpracy.5~6## W skrocie7~8| Aspekt | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Tworca** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Architektura** | Oparta na grafach | Oparta na rolach | Oparta na przekazywaniu | Autonomiczna petla |12| **Filozofia** | Maksymalna kontrola | Wspolpraca zespolowa | Minimalna abstrakcja | Daj agentowi komputer |13| **Jezyki** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Obsluga modeli** | Dowolne (OpenAI, Claude, lokalne) | Dowolne | Dowolne (pomimo nazwy) | Tylko Claude |15| **Gwiazdki na GitHub** | ~29k | ~40k | ~21k | ~6k |16| **Najlepszy do** | Zlozonych stanowych workflow | Specjalizacji wielu agentow | Routingu i triazu | Kodowania i zadan zwiazanych z plikami |17~18## LangGraph: Budowniczy grafow19~20LangGraph modeluje workflow agentow jako **skierowane grafy cykliczne**. Definiujesz wezly (funkcje wykonujace prace) i krawedzie (przejscia miedzy nimi, opcjonalnie warunkowe). Stan przeplywa przez graf i jest utrwalany poprzez checkpointing.21~22To najbardziej jawny i kontrolowalny framework - sam podlaczasz kazdy krok.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### Kluczowe koncepcje35~36- **StateGraph**: definicja grafu z typowanym stanem37- **Nodes**: funkcje Python transformujace stan38- **Edges**: polaczenia miedzy wezlami, moga byc warunkowe39- **Checkpointing**: wbudowana trwalosc dla dlugo trwajacych workflow40~41### Przyklad kodu42~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### Mocne strony79~80- Szczegolowa kontrola nad kazdym krokiem i przejsciem81- Wbudowany checkpointing i human-in-the-loop82- Pelna zgodnosc z TypeScript83- Dziala z dowolnym dostawca LLM84- Najlepszy do zlozonych workflow z warunkowym rozgalezianiem i petlami85~86### Slabe strony87~88- Stroma krzywa uczenia - musisz rozumiec koncepcje teorii grafow89- Rozwlekly dla prostych przypadkow - podstawowy agent wymaga wiecej boilerplate'u niz inne frameworki90- Debugowanie przeplywow grafowych moze byc trudne bez LangSmith91~92### Cennik93~94Open-source (MIT). LangSmith (zarzadzana platforma obserwowalnosci) posiada platne plany do monitorowania produkcyjnego.95~96## CrewAI: Tworca zespolow97~98CrewAI wykorzystuje metafore ludzka: tworzysz **zalogo** specjalizowanych agentow, z ktorych kazdy ma **role**, **cel** i **historie**. Agenty wspolpracuja nad **zadaniami** uzywajac **narzedzi**, koordynowane przez **proces** (sekwencyjny, hierarchiczny lub konsensualny).99~100Pomysl o tym jak o zatrudnianiu zespolu, w ktorym kazdy czlonek ma okreslone stanowisko i specjalnosc.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### Kluczowe koncepcje114~115- **Agent**: persona z rola, celem, historia i narzedziami116- **Task**: zadanie z opisem, oczekiwanym wynikiem i przypisanym agentem117- **Crew**: grupa agentow pracujacych razem118- **Process**: strategia wykonania (sekwencyjna, hierarchiczna, konsensualna)119- **Flow**: warstwa orkiestracji sterowana zdarzeniami do laczenia wielu zalog120~121### Przyklad kodu122~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### Mocne strony171~172- Intuicyjna abstrakcja oparta na rolach - latwa do zrozumienia173- Ponad 100 wbudowanych integracji narzedzi174- Wspoldzielona pamiec miedzy agentami (krotkoterminowa, dlugoterminowa, encji)175- Najwieksza spolecznosc (~40k gwiazdek na GitHub)176- Hierarchiczny proces z agentem "menedzerem", ktory deleguje i waliduje177~178### Slabe strony179~180- Mniejsza szczegolowa kontrola niz LangGraph - definiujesz role, a nie dokladne sciezki wykonania181- Hierarchiczny proces moze byc nieprzewidywalny, gdy agenty sie nie zgadzaja182- Debugowanie rozmow wielu agentow jest trudniejsze niz przeplywow pojedynczego agenta183~184### Cennik185~186Open-source (darmowy). CrewAI Platform: 99$/miesiac (Teams) do 120 tys.$/rok (Enterprise). Cennik oparty na aktywnych zalogach i miesiecznych wykonaniach.187~188## OpenAI Agents SDK: Router189~190OpenAI Agents SDK (duchowy nastepca Swarm) skupia sie na **przekazywaniu** - agenty przekazuja rozmowy innym specjalizowanym agentom. To najbardziej minimalistyczny framework: agenty, narzedzia, przekazywania i guardrails. To wszystko.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### Kluczowe koncepcje204~205- **Agent**: model + instrukcje + narzedzia + przekazywania206- **Handoff**: przekazanie do innego agenta (modelowane jako narzedzie, ktore LLM moze wywolac)207- **Guardrail**: walidacja wejscia/wyjscia uruchamiana rownolegle z agentem208- **Runner**: wykonuje petle agenta209- **Tracing**: wbudowana obserwowalnosc dla wszystkich wywolan LLM, narzedzi i przekazan210~211### Przyklad kodu212~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### Mocne strony258~259- Przejrzysty wzorzec przekazywan - naturalny dla workflow routingu/triazu260- Guardrails dzialaja rownolegle z wykonaniem (fail-fast, nie blokujace)261- Wbudowany panel tracing do debugowania262- Pomimo nazwy, obsluguje modele spoza OpenAI263- Minimalna abstrakcja - latwy do zrozumienia i rozszerzenia264~265### Slabe strony266~267- Mniej dojrzale zarzadzanie stanem niz LangGraph268- Brak wbudowanej trwalosci lub checkpointingu269- Ekosystem narzedzi zewnetrznych jest mniejszy270- Projekt skupiony na przekazywaniach moze nie pasowac do kazdej architektury271~272### Cennik273~274Open-source (MIT). Platisz za token za dowolny model, ktorego uzywasz.275~276## Claude Agent SDK: Programista277~278Claude Agent SDK przyjmuje inne podejscie: zamiast definiowac workflow lub role, dajesz agentowi **zestaw narzedzi i pozwalasz mu samodzielnie wymyslic, jak wykonac zadanie**. Uzywa tej samej autonomicznej petli, ktora napedza Claude Code - czytaj, dzialaj, weryfikuj, iteruj.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### Kluczowe koncepcje291~292- **query()**: glowny punkt wejscia uruchamiajacy petle agenta293- **Wbudowane narzedzia**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Niestandardowe narzedzia przez MCP**: definiowanie narzedzi jako serwerow MCP w procesie295- **Sub-agents**: specjalizowani agenci, do ktorych rodzic moze delegowac296- **Sessions**: utrzymywanie kontekstu miedzy wieloma interakcjami297~298### Przyklad kodu299~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### Mocne strony336~337- Pierwszorzedna integracja MCP - polacz sie z dowolnym ekosystemem serwerow MCP338- Wbudowane narzedzia do operacji na plikach, terminala i dostepu do sieci339- Automatyczna kompaktacja kontekstu dla duzych baz kodu340- Rownolegle sub-agents do zlozonych zadan341- Ten sam silnik co Claude Code - przetestowany w prawdziwych workflow programistycznych342~343### Slabe strony344~345- Tylko modele Claude - brak wsparcia wielu dostawcow346- Nowszy framework z mniejsza spolecznoscia347- Wymaga srodowiska Node.js nawet dla Python SDK348- Mniejsza jawna kontrola workflow w porownaniu z LangGraph349~350### Cennik351~352Open-source. Standardowe stawki za tokeny Claude API. Managed Agents (wersja hostowana): 0,08$ za godzine sesji plus koszty tokenow.353~354## Kiedy wybrac ktory355~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### Wybierz LangGraph, jesli:371- Potrzebujesz precyzyjnej kontroli nad kazdym krokiem workflow372- Twoj przypadek uzycia obejmuje zlozono logike warunkowa i petle373- Chcesz wbudowana trwalosc i checkpointy human-in-the-loop374- Musisz uzywac wielu dostawcow LLM w tym samym workflow375~376### Wybierz CrewAI, jesli:377- Chcesz intuicyjnej abstrakcji opartej na rolach378- Twoje zadanie obejmuje wielu agentow z odrebnymi specjalnosciami379- Potrzebujesz, zeby agenty wspolpracowaly i przekazywaly sobie kontekst380- Cenisz najwieksza spolecznosc i najwiecej wbudowanych integracji381~382### Wybierz OpenAI Agents SDK, jesli:383- Twoj glowny wzorzec to kierowanie rozmow do specjalistow384- Potrzebujesz guardrails walidujacych wejscie/wyjscie rownolegle385- Chcesz najprostszej mozliwej abstrakcji z minimalnym boilerplate'em386- Wbudowany tracing i obserwowalnosc sa wazne387~388### Wybierz Claude Agent SDK, jesli:389- Twoje agenty musza czytac, pisac i wykonywac kod390- Chcesz pierwszorzednej integracji z serwerami MCP391- Potrzebujesz autonomicznych agentow, ktore iteruja i samodzielnie sie koryguja392- Juz uzywasz Claude i chcesz najglebszej integracji393~394## Czy mozna laczyc frameworki?395~396Tak. Czestym wzorcem jest uzywanie jednego frameworka do orkiestracji i innego do poszczegolnych agentow:397~398- **LangGraph** do ogolnego grafu workflow399- **CrewAI** do konkretnego wezla wymagajacego wspolpracy wielu agentow400- **Claude Agent SDK** do podzadan zwiazanych z kodowaniem przez MCP401- **OpenAI Agents SDK** do triazu i routingu po stronie klienta402~403Frameworki nie wykluczaja sie wzajemnie. Uzywaj tego, co pasuje do kazdej czesci Twojego systemu.404~405## Podsumowanie406~407Kazdy framework stawia na cos innego:408~409- **LangGraph** optymalizuje pod katem kontroli - Ty decydujesz o kazdym przejsciu410- **CrewAI** optymalizuje pod katem wspolpracy - agenty pracuja jako zespol411- **OpenAI Agents SDK** optymalizuje pod katem prostoty - minimalna abstrakcja, przejrzyste przekazywania412- **Claude Agent SDK** optymalizuje pod katem autonomii - daj mu narzedzia i pozwol dzialac413~414Wlasciwy wybor zalezy od Twojego workflow, Twojego zespolu i istniejacego stosu technologicznego. Wybierz ten, ktory najlepiej pasuje do Twojego glownego przypadku uzycia, naucz sie go dobrze i siegnij po inne, gdy trafisz na ich mocna strone.415~
NORMAL · agentic-ai-frameworks-comparison.md [readonly]415 lines · :q to close