AI-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.
V 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.
Obzor
| Aspekt | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |
|---|---|---|---|---|
| Razrabotchik | LangChain | CrewAI Inc. | OpenAI | Anthropic |
| Arkhitektura | Na osnove grafov | Na osnove rolei | Na osnove peredach | Avtonomnyi tsikl |
| Filosofiya | Maksimalnyi kontrol | Komandnoe sotrudnichestvo | Minimalnaya abstraktsiya | Daite agentu kompyuter |
| Yazyki | Python, TypeScript | Python | Python | Python, TypeScript |
| Podderzhka modelei | Lyubye (OpenAI, Claude, lokalnye) | Lyubye | Lyubye (nesmotrya na nazvanie) | Tolko Claude |
| Zvyozdy na GitHub | ~29k | ~40k | ~21k | ~6k |
| Luchshe vsego dlya | Slozhnykh workflow s sostoyaniyem | Spetsializatsii neskolkikh agentov | Routinga i triazha | Kodirovaniya i zadach s failami |
LangGraph: Stroitel grafov
LangGraph 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.
Eto naibolee yavnyi i kontroliruemyi freimvork - vy sami podklyuchaete kazhdyi shag.
Klyuchevye kontseptsii
- StateGraph: opredelenie grafa s tipizirovannnym sostoyaniem
- Nodes: funktsii Python, preobrazuyushchie sostoyanie
- Edges: svyazi mezhdu uzlami, mogut byt uslovnymi
- Checkpointing: vstroennaya postoyannost dlya dlitelnykh workflow
Primer koda
from langgraph.graph import StateGraph, MessagesState, START, END from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4o") def call_agent(state: MessagesState): response = llm.invoke(state["messages"]) return {"messages": [response]} def should_continue(state: MessagesState): last = state["messages"][-1] if last.tool_calls: return "tools" return END def call_tools(state: MessagesState): # Execute tool calls and return results results = [] for tool_call in state["messages"][-1].tool_calls: result = execute_tool(tool_call) results.append(result) return {"messages": results} graph = StateGraph(MessagesState) graph.add_node("agent", call_agent) graph.add_node("tools", call_tools) graph.add_edge(START, "agent") graph.add_conditional_edges("agent", should_continue, {"tools": "tools", END: END}) graph.add_edge("tools", "agent") app = graph.compile() result = app.invoke({"messages": [{"role": "user", "content": "What's the weather?"}]})
Silnye storony
- Tonkii kontrol nad kazhdym shagom i perekhodom
- Vstroennyi checkpointing i human-in-the-loop
- Polnyi paritet s TypeScript
- Rabotaet s lyubym provaidderom LLM
- Luchshe vsego podkhodit dlya slozhnykh workflow s uslovnym vetvleniem i tsiklami
Slabye storony
- Krutaya krivaya obucheniya - nuzhno ponimat konteseptsii teorii grafov
- Mnogo koda dlya prostykh sluchaev - bazovyi agent trebuet bolshe boilerplate, chem drugie freimvorki
- Otladka potokov grafov mozhet byt slozhnoi bez LangSmith
Tseny
Open-source (MIT). LangSmith (upravlyaemaya platforma nablyudaemosti) imeet platnye tarify dlya proizvodstvennogo monitoringa.
CrewAI: Sobiratel komand
CrewAI 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).
Dumaite ob etom kak o naime komandy, gde u kazhdogo chlena est opredelyonnaya dolzhnost i spetsializatsiya.
Klyuchevye kontseptsii
- Agent: persona s rolyu, tselyu, predystoriyei i instrumentami
- Task: zadanie s opisaniem, ozhidaemym rezultatom i naznachennym agentom
- Crew: gruppa agentov, rabotayushchikh vmeste
- Process: strategiya vypolneniya (posledovatelnaya, ierarkhicheskaya, konsensusnaya)
- Flow: uroven orkestratsii na osnove sobytii dlya svyazyvaniya neskolkikh komand
Primer koda
from crewai import Agent, Task, Crew, Process researcher = Agent( role="Senior Research Analyst", goal="Find comprehensive data about the given topic", backstory="You have 10 years of experience in technology research. " "You are thorough and always verify facts from multiple sources.", tools=[web_search_tool], verbose=True, ) writer = Agent( role="Technical Writer", goal="Create clear, engaging technical content", backstory="You write for a developer audience. " "Your articles are practical and include code examples.", tools=[file_tool], verbose=True, ) research_task = Task( description="Research the latest developments in WebAssembly in 2026. " "Focus on WASI, Component Model, and production use cases.", expected_output="A structured research document with key findings and sources.", agent=researcher, ) writing_task = Task( description="Write a blog post based on the research. " "Include code examples and Mermaid diagrams.", expected_output="A complete blog post in Markdown format.", agent=writer, context=[research_task], # Writer receives researcher's output ) crew = Crew( agents=[researcher, writer], tasks=[research_task, writing_task], process=Process.sequential, verbose=True, ) result = crew.kickoff() print(result.raw)
Silnye storony
- Intuitivnaya abstraktsiya na osnove rolei - legko ponyat
- Bolee 100 vstroennykh integratsii instrumentov
- Obshchaya pamyat mezhdu agentami (kratkosrochnaya, dolgosrochnaya, sushchnostei)
- Samoe bolshoe soobshchestvo (~40k zvyozd na GitHub)
- Ierarkhicheskii protsess s agentom-"menedzherom", kotoryi delegiruet i validdiruet
Slabye storony
- Menee tonkii kontrol, chem u LangGraph - vy opredelyaete roli, a ne tochnye puti vypolneniya
- Ierarkhicheskii protsess mozhet byt nepredskazuemym, kogda agenty ne soglasny
- Otladka razgovorov neskolkikh agentov slozhnee, chem potokov odnogo agenta
Tseny
Open-source yadro (besplatno). CrewAI Platform: 99 $/mesyats (Teams) do 120 tys. $/god (Enterprise). Tsena zavisit ot aktivnykh komand i ezhemesyachnykh vypolnenii.
OpenAI Agents SDK: Router
OpenAI 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.
Klyuchevye kontseptsii
- Agent: model + instruktsii + instrumenty + peredachi
- Handoff: peredacha drugomu agentu (modeliruetsya kak instrument, kotoryi LLM mozhet vyzvat)
- Guardrail: validatsiya vkhoda/vykhoda, zapuskaemaya parallel no s agentom
- Runner: vypolnyaet tsikl agenta
- Tracing: vstroennaya nablyudaemost dlya vsekh vyzovov LLM, ispolzovaniya instrumentov i peredach
Primer koda
from agents import Agent, Runner, handoff, InputGuardrail, GuardrailFunctionOutput from pydantic import BaseModel class SafetyCheck(BaseModel): is_safe: bool reason: str async def content_safety(ctx, agent, input_text): result = await Runner.run( Agent(name="Safety", instructions="Check if input is safe. No PII."), input_text, context=ctx, ) output = SafetyCheck.model_validate_json(result.final_output) return GuardrailFunctionOutput( output_info=output, tripwire_triggered=not output.is_safe ) billing_agent = Agent( name="Billing Agent", instructions="You handle billing inquiries. Be precise with numbers.", tools=[lookup_invoice, process_payment], ) refund_agent = Agent( name="Refund Agent", instructions="You process refund requests. Always verify the order first.", tools=[lookup_order, issue_refund], ) triage_agent = Agent( name="Triage Agent", instructions="Route the customer to the right specialist. " "Ask clarifying questions if needed.", handoffs=[billing_agent, refund_agent], input_guardrails=[InputGuardrail(guardrail_function=content_safety)], ) result = await Runner.run(triage_agent, "I need a refund for order #4521") print(result.final_output) # The triage agent routes to refund_agent, which processes the refund
Silnye storony
- Chistyi pattern peredach - estestvennyi dlya workflow routinga/triazha
- Guardrails rabotayut parallelno s vypolneniem (fail-fast, ne blokiruyushchie)
- Vstroennaya panel tracing dlya otladki
- Nesmotrya na nazvanie, podderzhivaet modeli ne ot OpenAI
- Minimalnaya abstraktsiya - legko ponyat i rasshirit
Slabye storony
- Menee zreloe upravlenie sostoyaniem, chem u LangGraph
- Net vstroennoi postoyannosti ili checkpointinga
- Ekosistema stroronnikh instrumentov menshe
- Dizain, orientirovannyi na peredachi, mozhet ne podkhodit dlya kazhdoi arkhitektury
Tseny
Open-source (MIT). Vy platite za token za lyubuyu ispolzuemuyu model.
Claude Agent SDK: Razrabotchik
Claude 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.
Klyuchevye kontseptsii
- query(): glavnaya tochka vkhoda, zapuskayushchaya tsikl agenta
- Vstroennye instrumenty: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch
- Polzovatelskie instrumenty cherez MCP: opredelenie instrumentov kak in-process MCP serverov
- Sub-agents: spetsializirovannye agenty, kotorym roditel mozhet delegirovat
- Sessions: podderzhanie konteksta mezhdu neskolkimi vzaimodeistviyami
Primer koda
import { tool, createSdkMcpServer, query } from "@anthropic-ai/claude-agent-sdk"; import { z } from "zod"; const searchDocs = tool( "search_docs", "Search the internal documentation for relevant information", { query: z.string().describe("Search query") }, async ({ query }) => { const results = await vectorStore.similaritySearch(query, 5); return { content: [{ type: "text", text: results.map(r => r.pageContent).join("\n\n") }], }; } ); const docsServer = createSdkMcpServer({ name: "docs", version: "1.0.0", tools: [searchDocs], }); for await (const message of query({ prompt: "Find how authentication works in our system and write a summary", options: { mcpServers: { docs: docsServer }, allowedTools: ["Read", "Glob", "Grep", "mcp__docs__search_docs"], }, })) { if (message.type === "result" && message.subtype === "success") { console.log(message.result); } }
Silnye storony
- Pervoclassnaya integratsiya MCP - podklyuchaites k lyuboi ekosisteme MCP serverov
- Vstroennye instrumenty dlya failovykh operatsii, terminala i dostupa v internet
- Avtomaticheskoe szzhatie konteksta dlya bolshikh kodovykh baz
- Parallelnye sub-agents dlya slozhnykh zadach
- Tot zhe dvizhok, chto i Claude Code - proverennyi na realnykh workflow razrabotki
Slabye storony
- Tolko modeli Claude - net podderzhki neskolkikh provaidderov
- Bolee novyi freimvork s menshim soobshchestvom
- Trebuet sredy Node.js dazhe dlya Python SDK
- Menee yavnyi kontrol workflow po sravneniyu s LangGraph
Tseny
Open-source. Standartnye tarify za tokeny Claude API. Managed Agents (khosting versiya): 0,08 $ za chas sessii plyus stoimost tokenov.
Kogda vybrat kakoi
Vyberite LangGraph, esli:
- Vam nuzhenn tochnyy kontrol nad kazhdym shagom workflow
- Vash sluchai ispolzovaniya vklyuchaet slozhnuyu uslovnuyu logiku i tsikly
- Vy khotite vstroennuyu postoyannost i checkpointy human-in-the-loop
- Vam nuzhno ispolzovat neskolko provaidderov LLM v odnom workflow
Vyberite CrewAI, esli:
- Vy khotite intuitivnuyu abstraktsiyu na osnove rolei
- Vasha zadacha vklyuchaet neskolko agentov s raznymi spetsializatsiyami
- Vam nuzhno, chtoby agenty sotrudnichali i peredavali drug drugu kontekst
- Vy tsenite samoe bolshoe soobshchestvo i naibolshee kolichestvo vstroennykh integratsii
Vyberite OpenAI Agents SDK, esli:
- Vash osnovnoi pattern - marshrutizatsiya razgovorov k spetsialistam
- Vam nuzhny guardrails, validiruyushchie vkhod/vykhod parallelno
- Vy khotite maksimalno prostuyu abstraktsiyu s minimalnnym boilerplate
- Vstroennyi tracing i nablyudaemost vazhny
Vyberite Claude Agent SDK, esli:
- Vashi agenty dolzhny chitat, pisat i vypolnyat kod
- Vy khotite pervoclassnuyu integratsiyu s MCP serverami
- Vam nuzhny avtonomnye agenty, kotorye iteriruyut i samoispravlyayutsya
- Vy uzhe ispolzuete Claude i khotite naibolee glubokuyu integratsiyu
Mozhno li kombinirovat freimvorki?
Da. Rasprostranyonnyi pattern - ispolzovanie odnogo freimvorka dlya orkestratsii i drugogo dlya otdelnykh agentov:
- LangGraph dlya obshchego grafa workflow
- CrewAI dlya konkretnoigo uzla, trebuyushchego sotrudnichestva neskolkikh agentov
- Claude Agent SDK dlya podzadach, svyazannykh s kodirovaniem, cherez MCP
- OpenAI Agents SDK dlya triazha i routinga na storone klienta
Freimvorki ne isklyuchayut drug druga. Ispolzuite to, chto podkhodit dlya kazhdoi chasti vashei sistemy.
Zaklyuchenie
Kazhdyi freimvork delaet chetkyy vybor:
- LangGraph optimiziruet kontrol - vy reshaete kazhdyi perekhod
- CrewAI optimiziruet sotrudnichestvo - agenty rabotayut kak komanda
- OpenAI Agents SDK optimiziruet prostotu - minimalnaya abstraktsiya, chistye peredachi
- Claude Agent SDK optimiziruet avtonomiyu - daite emu instrumenty i pozvolte rabotat
Pravilnyi 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.