spinny:~/writing $ less agentic-ai-frameworks-comparison.md
12AI-agenty pereshli ot issledovatelskikh demo k proizvodstvennym sistemam. Ozhidaetsya, chto bolee 60% korporativnykh AI-prilozhenii budut vklyuchat agentnye komponenty k 2026 godu. No sozdanie agentov s nulya - upravlenie tsiklami instrumentov, sostoyaniem, pamyatyu, obrabotka oshibok i koordinatsiya neskolkikh agentov - eto slozhnaya zadacha. Imenno dlya etogo sushchestvuyut freimvorki.34V 2026 godu dominiruyut chetyre freimvorka: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** i **Claude Agent SDK**. Kazhdyi iz nikh prinimaet printsipialino drugoi podkhod k odnoi i toi zhe probleme: dat LLM sposobnost rassuzhdatt, planirovat, ispolzovat instrumenty i sotrudnichat.56## Obzor78| Aspekt | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Razrabotchik** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Arkhitektura** | Na osnove grafov | Na osnove rolei | Na osnove peredach | Avtonomnyi tsikl |12| **Filosofiya** | Maksimalnyi kontrol | Komandnoe sotrudnichestvo | Minimalnaya abstraktsiya | Daite agentu kompyuter |13| **Yazyki** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Podderzhka modelei** | Lyubye (OpenAI, Claude, lokalnye) | Lyubye | Lyubye (nesmotrya na nazvanie) | Tolko Claude |15| **Zvyozdy na GitHub** | ~29k | ~40k | ~21k | ~6k |16| **Luchshe vsego dlya** | Slozhnykh workflow s sostoyaniyem | Spetsializatsii neskolkikh agentov | Routinga i triazha | Kodirovaniya i zadach s failami |1718## LangGraph: Stroitel grafov1920LangGraph modeliruet workflow agentov kak **orientirovannye tsiklicheskie grafy**. Vy opredelyaete uzly (funktsii, vypolnyayushchie rabotu) i ryobra (perekhody mezhdu nimi, optsionalno uslovnye). Sostoyanie protekaet cherez graf i sokhranitsya cherez checkpointing.2122Eto naibolee yavnyi i kontroliruemyi freimvork - vy sami podklyuchaete kazhdyi shag.2324```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```3334### Klyuchevye kontseptsii3536- **StateGraph**: opredelenie grafa s tipizirovannnym sostoyaniem37- **Nodes**: funktsii Python, preobrazuyushchie sostoyanie38- **Edges**: svyazi mezhdu uzlami, mogut byt uslovnymi39- **Checkpointing**: vstroennaya postoyannost dlya dlitelnykh workflow4041### Primer koda4243```python44from langgraph.graph import StateGraph, MessagesState, START, END45from langchain_openai import ChatOpenAI4647llm = ChatOpenAI(model="gpt-4o")4849def call_agent(state: MessagesState):50 response = llm.invoke(state["messages"])51 return {"messages": [response]}5253def should_continue(state: MessagesState):54 last = state["messages"][-1]55 if last.tool_calls:56 return "tools"57 return END5859def 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}6667graph = 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")7374app = graph.compile()75result = app.invoke({"messages": [{"role": "user", "content": "What's the weather?"}]})76```7778### Silnye storony7980- Tonkii kontrol nad kazhdym shagom i perekhodom81- Vstroennyi checkpointing i human-in-the-loop82- Polnyi paritet s TypeScript83- Rabotaet s lyubym provaidderom LLM84- Luchshe vsego podkhodit dlya slozhnykh workflow s uslovnym vetvleniem i tsiklami8586### Slabye storony8788- Krutaya krivaya obucheniya - nuzhno ponimat konteseptsii teorii grafov89- Mnogo koda dlya prostykh sluchaev - bazovyi agent trebuet bolshe boilerplate, chem drugie freimvorki90- Otladka potokov grafov mozhet byt slozhnoi bez LangSmith9192### Tseny9394Open-source (MIT). LangSmith (upravlyaemaya platforma nablyudaemosti) imeet platnye tarify dlya proizvodstvennogo monitoringa.9596## CrewAI: Sobiratel komand9798CrewAI ispolzuet chelovecheskuyu metaforu: vy sobiraaete **komandu** spetsializirovannykh agentov, kazhdyi s **rolyu**, **tselyu** i **predystoriyei**. Agenty sotrudnichayut nad **zadachami** s pomoshchyu **instrumentov**, koordiniruemye **protsessom** (posledovatelnym, ierarkhicheskim ili konsensusnym).99100Dumaite ob etom kak o naime komandy, gde u kazhdogo chlena est opredelyonnaya dolzhnost i spetsializatsiya.101102```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```112113### Klyuchevye kontseptsii114115- **Agent**: persona s rolyu, tselyu, predystoriyei i instrumentami116- **Task**: zadanie s opisaniem, ozhidaemym rezultatom i naznachennym agentom117- **Crew**: gruppa agentov, rabotayushchikh vmeste118- **Process**: strategiya vypolneniya (posledovatelnaya, ierarkhicheskaya, konsensusnaya)119- **Flow**: uroven orkestratsii na osnove sobytii dlya svyazyvaniya neskolkikh komand120121### Primer koda122123```python124from crewai import Agent, Task, Crew, Process125126researcher = 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)134135writer = 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)143144research_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)150151writing_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)158159crew = Crew(160 agents=[researcher, writer],161 tasks=[research_task, writing_task],162 process=Process.sequential,163 verbose=True,164)165166result = crew.kickoff()167print(result.raw)168```169170### Silnye storony171172- Intuitivnaya abstraktsiya na osnove rolei - legko ponyat173- Bolee 100 vstroennykh integratsii instrumentov174- Obshchaya pamyat mezhdu agentami (kratkosrochnaya, dolgosrochnaya, sushchnostei)175- Samoe bolshoe soobshchestvo (~40k zvyozd na GitHub)176- Ierarkhicheskii protsess s agentom-"menedzherom", kotoryi delegiruet i validdiruet177178### Slabye storony179180- Menee tonkii kontrol, chem u LangGraph - vy opredelyaete roli, a ne tochnye puti vypolneniya181- Ierarkhicheskii protsess mozhet byt nepredskazuemym, kogda agenty ne soglasny182- Otladka razgovorov neskolkikh agentov slozhnee, chem potokov odnogo agenta183184### Tseny185186Open-source yadro (besplatno). CrewAI Platform: 99 $/mesyats (Teams) do 120 tys. $/god (Enterprise). Tsena zavisit ot aktivnykh komand i ezhemesyachnykh vypolnenii.187188## OpenAI Agents SDK: Router189190OpenAI Agents SDK (dukhovnyi naslednik Swarm) fokusirruetsya na **peredachakh** - agenty peredayut razgovory drugim spetsializirovannym agentam. Eto samyi minimalisticheskii freimvork: agenty, instrumenty, peredachi i guardrails. Vot i vsyo.191192```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```202203### Klyuchevye kontseptsii204205- **Agent**: model + instruktsii + instrumenty + peredachi206- **Handoff**: peredacha drugomu agentu (modeliruetsya kak instrument, kotoryi LLM mozhet vyzvat)207- **Guardrail**: validatsiya vkhoda/vykhoda, zapuskaemaya parallel no s agentom208- **Runner**: vypolnyaet tsikl agenta209- **Tracing**: vstroennaya nablyudaemost dlya vsekh vyzovov LLM, ispolzovaniya instrumentov i peredach210211### Primer koda212213```python214from agents import Agent, Runner, handoff, InputGuardrail, GuardrailFunctionOutput215from pydantic import BaseModel216217class SafetyCheck(BaseModel):218 is_safe: bool219 reason: str220221async 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 )231232billing_agent = Agent(233 name="Billing Agent",234 instructions="You handle billing inquiries. Be precise with numbers.",235 tools=[lookup_invoice, process_payment],236)237238refund_agent = Agent(239 name="Refund Agent",240 instructions="You process refund requests. Always verify the order first.",241 tools=[lookup_order, issue_refund],242)243244triage_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)251252result = 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```256257### Silnye storony258259- Chistyi pattern peredach - estestvennyi dlya workflow routinga/triazha260- Guardrails rabotayut parallelno s vypolneniem (fail-fast, ne blokiruyushchie)261- Vstroennaya panel tracing dlya otladki262- Nesmotrya na nazvanie, podderzhivaet modeli ne ot OpenAI263- Minimalnaya abstraktsiya - legko ponyat i rasshirit264265### Slabye storony266267- Menee zreloe upravlenie sostoyaniem, chem u LangGraph268- Net vstroennoi postoyannosti ili checkpointinga269- Ekosistema stroronnikh instrumentov menshe270- Dizain, orientirovannyi na peredachi, mozhet ne podkhodit dlya kazhdoi arkhitektury271272### Tseny273274Open-source (MIT). Vy platite za token za lyubuyu ispolzuemuyu model.275276## Claude Agent SDK: Razrabotchik277278Claude Agent SDK prinimaet drugoi podkhod: vmesto opredeleniya workflow ili rolei vy dayote agentu **nabor instrumentov i pozvolyaete emu samomu razobr atsya, kak vypolnit zadachu**. On ispolzuet tot zhe avtonomnyi tsikl, kotoryi pitaet Claude Code - chitat, deistvovat, proveryat, iterirovat.279280```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```289290### Klyuchevye kontseptsii291292- **query()**: glavnaya tochka vkhoda, zapuskayushchaya tsikl agenta293- **Vstroennye instrumenty**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Polzovatelskie instrumenty cherez MCP**: opredelenie instrumentov kak in-process MCP serverov295- **Sub-agents**: spetsializirovannye agenty, kotorym roditel mozhet delegirovat296- **Sessions**: podderzhanie konteksta mezhdu neskolkimi vzaimodeistviyami297298### Primer koda299300```typescript301import { tool, createSdkMcpServer, query } from "@anthropic-ai/claude-agent-sdk";302import { z } from "zod";303304const 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);315316const docsServer = createSdkMcpServer({317 name: "docs",318 version: "1.0.0",319 tools: [searchDocs],320});321322for 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```334335### Silnye storony336337- Pervoclassnaya integratsiya MCP - podklyuchaites k lyuboi ekosisteme MCP serverov338- Vstroennye instrumenty dlya failovykh operatsii, terminala i dostupa v internet339- Avtomaticheskoe szzhatie konteksta dlya bolshikh kodovykh baz340- Parallelnye sub-agents dlya slozhnykh zadach341- Tot zhe dvizhok, chto i Claude Code - proverennyi na realnykh workflow razrabotki342343### Slabye storony344345- Tolko modeli Claude - net podderzhki neskolkikh provaidderov346- Bolee novyi freimvork s menshim soobshchestvom347- Trebuet sredy Node.js dazhe dlya Python SDK348- Menee yavnyi kontrol workflow po sravneniyu s LangGraph349350### Tseny351352Open-source. Standartnye tarify za tokeny Claude API. Managed Agents (khosting versiya): 0,08 $ za chas sessii plyus stoimost tokenov.353354## Kogda vybrat kakoi355356```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]363364 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```369370### Vyberite LangGraph, esli:371- Vam nuzhenn tochnyy kontrol nad kazhdym shagom workflow372- Vash sluchai ispolzovaniya vklyuchaet slozhnuyu uslovnuyu logiku i tsikly373- Vy khotite vstroennuyu postoyannost i checkpointy human-in-the-loop374- Vam nuzhno ispolzovat neskolko provaidderov LLM v odnom workflow375376### Vyberite CrewAI, esli:377- Vy khotite intuitivnuyu abstraktsiyu na osnove rolei378- Vasha zadacha vklyuchaet neskolko agentov s raznymi spetsializatsiyami379- Vam nuzhno, chtoby agenty sotrudnichali i peredavali drug drugu kontekst380- Vy tsenite samoe bolshoe soobshchestvo i naibolshee kolichestvo vstroennykh integratsii381382### Vyberite OpenAI Agents SDK, esli:383- Vash osnovnoi pattern - marshrutizatsiya razgovorov k spetsialistam384- Vam nuzhny guardrails, validiruyushchie vkhod/vykhod parallelno385- Vy khotite maksimalno prostuyu abstraktsiyu s minimalnnym boilerplate386- Vstroennyi tracing i nablyudaemost vazhny387388### Vyberite Claude Agent SDK, esli:389- Vashi agenty dolzhny chitat, pisat i vypolnyat kod390- Vy khotite pervoclassnuyu integratsiyu s MCP serverami391- Vam nuzhny avtonomnye agenty, kotorye iteriruyut i samoispravlyayutsya392- Vy uzhe ispolzuete Claude i khotite naibolee glubokuyu integratsiyu393394## Mozhno li kombinirovat freimvorki?395396Da. Rasprostranyonnyi pattern - ispolzovanie odnogo freimvorka dlya orkestratsii i drugogo dlya otdelnykh agentov:397398- **LangGraph** dlya obshchego grafa workflow399- **CrewAI** dlya konkretnoigo uzla, trebuyushchego sotrudnichestva neskolkikh agentov400- **Claude Agent SDK** dlya podzadach, svyazannykh s kodirovaniem, cherez MCP401- **OpenAI Agents SDK** dlya triazha i routinga na storone klienta402403Freimvorki ne isklyuchayut drug druga. Ispolzuite to, chto podkhodit dlya kazhdoi chasti vashei sistemy.404405## Zaklyuchenie406407Kazhdyi freimvork delaet chetkyy vybor:408409- **LangGraph** optimiziruet kontrol - vy reshaete kazhdyi perekhod410- **CrewAI** optimiziruet sotrudnichestvo - agenty rabotayut kak komanda411- **OpenAI Agents SDK** optimiziruet prostotu - minimalnaya abstraktsiya, chistye peredachi412- **Claude Agent SDK** optimiziruet avtonomiyu - daite emu instrumenty i pozvolte rabotat413414Pravilnyi vybor zavisit ot vashego workflow, vashei komandy i vashego sushchestvuyushchego steka. Vyberite tot, kotoryi sootvetstvuet vashemu osnovnomu sluchayu ispolzovaniya, khorosho izuchite ego i podklyuchite drugie, kogda stoknyyotes s ikh silnoi storonoi.415
:Sravnenie freimvorkov Agentic AI: LangGraph vs CrewAI vs OpenAI Agents SDK vs Claude Agent SDKlines 1-415 (END) — press q to close