spinny:~/writing $ vim agentic-ai-frameworks-comparison.md
1~2AI agenti se presunuli z vyzkumnych dem do produnkcnich systemu. Ocekava se, ze vice nez 60 % podnikovych AI aplikaci bude do roku 2026 obsahovat agentni komponenty. Ale budovani agentu od nuly - sprava smycek nastroju, stavu, pameti, zpracovani chyb a koordinace vice agentu - je slozite. Prave proto existuji frameworky.3~4V roce 2026 dominuji ctyri frameworky: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** a **Claude Agent SDK**. Kazdy z nich pristupuje k temuze problemu zasadne odlisnym zpusobem: dat modelum LLM schopnost uvazovat, planovat, pouzivat nastroje a spolupracovat.5~6## V kostce7~8| Aspekt | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Tvurce** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Architektura** | Zalozena na grafech | Zalozena na rolich | Zalozena na predavani | Autonomni smycka |12| **Filozofie** | Maximalni kontrola | Tymova spoluprace | Minimalni abstrakce | Dejte agentovi pocitac |13| **Jazyky** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Podpora modelu** | Libovolne (OpenAI, Claude, lokalni) | Libovolne | Libovolne (navzdory nazvu) | Pouze Claude |15| **Hvezdicky na GitHubu** | ~29k | ~40k | ~21k | ~6k |16| **Nejlepsi pro** | Slozite stavove workflow | Specializaci vice agentu | Routing a triaz | Kodovani a ulohy s praci se soubory |17~18## LangGraph: Stavitel grafu19~20LangGraph modeluje workflow agentu jako **orientovane cyklicke grafy**. Definujete uzly (funkce, ktere provadeji praci) a hrany (prechody mezi nimi, volitelne podminene). Stav proteka grafem a je uchovavan prostrednictvim checkpointingu.21~22Toto je nejexplicitnejsi a nejlepe kontrolovatelny framework - kazdy krok zapojujete sami.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### Klicove koncepty35~36- **StateGraph**: definice grafu s typovanym stavem37- **Nodes**: funkce Pythonu transformujici stav38- **Edges**: spojeni mezi uzly, mohou byt podminena39- **Checkpointing**: vestavena perzistence pro dlouho bezici workflow40~41### Priklad 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### Silne stranky79~80- Jemnozrnna kontrola nad kazdym krokem a prechodem81- Vestaveny checkpointing a human-in-the-loop82- Plna parita s TypeScriptem83- Funguje s libovolnym poskytovatelem LLM84- Nejlepsi pro slozite workflow s podminenym vetvenim a smyckami85~86### Slabe stranky87~88- Strma krivka uceni - musite rozumet konceptum teorie grafu89- Upovdany pro jednoduche pripady - zakladni agent vyzaduje vice boilerplate kodu nez ostatni frameworky90- Ladeni toky grafu muze byt narocne bez LangSmith91~92### Cenik93~94Open-source (MIT). LangSmith (spravovana platforma pozorovatelnosti) ma placene urovne pro produkcni monitoring.95~96## CrewAI: Sestavovatel tymu97~98CrewAI pouziva lidskou metaforu: sestavite **posadku** specializovanych agentu, z nichz kazdy ma **roli**, **cil** a **pribeh**. Agenti spolupracuji na **ulohach** pomoci **nastroju**, koordinovani **procesem** (sekvencni, hierarchicky nebo konsensualni).99~100Predstavte si to jako najimani tymu, kde kazdy clen ma konkretni pracovni pozici a specializaci.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### Klicove koncepty114~115- **Agent**: persona s roli, cilem, pribehem a nastroji116- **Task**: uloha s popisem, ocekavanym vystupem a prirazenym agentem117- **Crew**: skupina agentu pracujicich spolecne118- **Process**: strategie provadeni (sekvencni, hierarchicka, konsensualni)119- **Flow**: vrstva orchestrace rizena udalostmi pro propojeni vice posadek120~121### Priklad 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### Silne stranky171~172- Intuitivni abstrakce zalozena na rolich - snadne uvazovani173- Vice nez 100 vestavenych integraci nastroju174- Sdilena pamet mezi agenty (kratkodoba, dlouhodoba, entitni)175- Nejvetsi komunita (~40k hvezdicek na GitHubu)176- Hierarchicky proces s agentem "manazerem", ktery deleguje a validuje177~178### Slabe stranky179~180- Mensi jemnozrnna kontrola nez LangGraph - definujete role, ne presne cesty provadeni181- Hierarchicky proces muze byt nepredvidatelny, kdyz se agenti neshodnou182- Ladeni konverzaci vice agentu je tezsi nez u toky jednoho agenta183~184### Cenik185~186Open-source jadro (zdarma). CrewAI Platform: 99 $/mesic (Teams) az 120 tis. $/rok (Enterprise). Ceny zalozeny na aktivnich posadkach a mesicnich provedenich.187~188## OpenAI Agents SDK: Router189~190OpenAI Agents SDK (duchovy nastupce Swarm) se zamruje na **predavani** - agenti predavaji konverzace jinym specializovanym agentum. Je to nejminimalnejsi framework: agenti, nastroje, predavani a guardrails. To je vse.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### Klicove koncepty204~205- **Agent**: model + instrukce + nastroje + predavani206- **Handoff**: predani jinemu agentovi (modelovano jako nastroj, ktery LLM muze zavolat)207- **Guardrail**: validace vstupu/vystupu bezici paralelne s agentem208- **Runner**: provadi smycku agenta209- **Tracing**: vestavena pozorovatelnost pro vsechna volani LLM, vyuziti nastroju a predani210~211### Priklad 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### Silne stranky258~259- Cisty vzor predavani - prirozeny pro workflow routingu/triaze260- Guardrails bezi paralelne s provadenim (fail-fast, neblokovaci)261- Vestaveny panel tracing pro ladeni262- Navzdory nazvu podporuje modely mimo OpenAI263- Minimalni abstrakce - snadne pochopeni a rozsireni264~265### Slabe stranky266~267- Mene vyspela sprava stavu nez LangGraph268- Zadna vestavena perzistence ani checkpointing269- Ekosystem nastroju tretich stran je mensi270- Design zamereny na predavani nemusi sednou na kazdou architekturu271~272### Cenik273~274Open-source (MIT). Platite za token za jakykoli model, ktery pouzivate.275~276## Claude Agent SDK: Vyvojar277~278Claude Agent SDK zaujima odlisny pristup: namisto definovani workflow nebo roli date agentovi **sadu nastroju a nechate ho vymyslet, jak ulohu splnit**. Pouziva stejnou autonomni smycku, ktera pohani Claude Code - cist, jednat, overit, iterovat.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### Klicove koncepty291~292- **query()**: hlavni vstupni bod, ktery spusti smycku agenta293- **Vestavene nastroje**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Vlastni nastroje pres MCP**: definice nastroju jako in-process MCP serveru295- **Sub-agents**: specializovani agenti, kterym muze rodicovsky agent delegovat296- **Sessions**: udrzovani kontextu napric vice interakcemi297~298### Priklad 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### Silne stranky336~337- Prvotrodni integrace MCP - pripojte se k libovolnemu ekosystemu MCP serveru338- Vestavene nastroje pro operace se soubory, terminal a pristup na web339- Automaticka kompaktace kontextu pro velke kodove baze340- Paralelni sub-agents pro slozite ulohy341- Stejny motor jako Claude Code - overeny v realnych vyvojarskych workflow342~343### Slabe stranky344~345- Pouze modely Claude - zadna podpora vice poskytovatelu346- Novejsi framework s mensi komunitou347- Vyzaduje prostredi Node.js i pro Python SDK348- Mensi explicitni kontrola workflow ve srovnani s LangGraph349~350### Cenik351~352Open-source. Standardni sazby za tokeny Claude API. Managed Agents (hostovana verze): 0,08 $ za hodinu relace plus naklady na tokeny.353~354## Kdy zvolit ktery355~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### Zvolte LangGraph, pokud:371- Potrebujete presnou kontrolu nad kazdym krokem workflow372- Vas pripad uziti zahrnuje slozitou podminenou logiku a smycky373- Chcete vestavenou perzistenci a checkpointy human-in-the-loop374- Potrebujete pouzivat vice poskytovatelu LLM ve stejnem workflow375~376### Zvolte CrewAI, pokud:377- Chcete intuitivni abstrakci zalozenou na rolich378- Vase uloha zahrnuje vice agentu s odlisnymi specializacemi379- Potrebujete, aby agenti spolupracovali a predavali si kontext380- Cenite si nejvetsi komunity a nejvice vestavenych integraci381~382### Zvolte OpenAI Agents SDK, pokud:383- Vasim primarnim vzorem je smerovani konverzaci ke specialistum384- Potrebujete guardrails validujici vstup/vystup paralelne385- Chcete co nejjednodussi abstrakci s minimalnim boilerplate kodem386- Vestaveny tracing a pozorovatelnost jsou dulezite387~388### Zvolte Claude Agent SDK, pokud:389- Vasi agenti potrebuji cist, psat a spoustet kod390- Chcete prvotrodni integraci s MCP servery391- Potrebujete autonomni agenty, kteri iteruji a sami se opravuji392- Jiz pouzivate Claude a chcete nejhlubsi integraci393~394## Lze frameworky kombinovat?395~396Ano. Castym vzorem je pouziti jednoho frameworku pro orchestraci a druheho pro jednotlive agenty:397~398- **LangGraph** pro celkovy graf workflow399- **CrewAI** pro konkretni uzel vyzadujici spolupraci vice agentu400- **Claude Agent SDK** pro podzadania souvisejici s kodovanim pres MCP401- **OpenAI Agents SDK** pro triaz a routing smerem ke klientum402~403Frameworky se navzajem nevylucuji. Pouzijte to, co se hodi pro kazdou cast vaseho systemu.404~405## Zaver406~407Kazdy framework sazi na neco jineho:408~409- **LangGraph** optimalizuje pro kontrolu - vy rozhodujete o kazdem prechodu410- **CrewAI** optimalizuje pro spolupraci - agenti pracuji jako tym411- **OpenAI Agents SDK** optimalizuje pro jednoduchost - minimalni abstrakce, cista predavani412- **Claude Agent SDK** optimalizuje pro autonomii - dejte mu nastroje a nechte ho pracovat413~414Spravna volba zavisi na vasem workflow, vasem tymu a vasem stavajicim stacku. Vyberte ten, ktery odpovida vasemu primarnimu pripadu uziti, dobre se ho naucte a sahnete po dalsich, az narazite na jejich silnou stranku.415~
NORMAL · agentic-ai-frameworks-comparison.md [readonly]415 lines · :q to close