AI agents از دموهای تحقیقاتی به سیستمهای production منتقل شدهاند. انتظار میرود تا 2026 بیش از 60 درصد برنامههای AI سازمانی شامل اجزای agentic باشند. اما ساختن agents از صفر - مدیریت tool loops، state، memory، error handling و هماهنگی multi-agent - پیچیده است. اینجاست که فریمورکها وارد میشوند.
چهار فریمورک در 2026 غالب هستند: LangGraph، CrewAI، OpenAI Agents SDK و Claude Agent SDK. هر کدام رویکردی اساسا متفاوت به یک مسئله دارند: دادن توانایی استدلال، برنامهریزی، استفاده از ابزار و همکاری به LLMها.
در یک نگاه
| جنبه | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |
|---|---|---|---|---|
| سازنده | LangChain | CrewAI Inc. | OpenAI | Anthropic |
| Architecture | Graph-based | Role-based | Handoff-based | Autonomous loop |
| فلسفه | حداکثر کنترل | Team collaboration | حداقل abstraction | کامپیوتر را به agent بدهید |
| زبانها | Python, TypeScript | Python | Python | Python, TypeScript |
| Model support | هر کدام (OpenAI, Claude, local) | هر کدام | هر کدام (علیرغم نام) | فقط Claude |
| GitHub stars | ~29k | ~40k | ~21k | ~6k |
| بهترین برای | Complex stateful workflows | Multi-agent specialization | Routing و triage | Coding و file-heavy tasks |
LangGraph: سازنده گراف
LangGraph جریانهای کاری agent را به صورت directed cyclic graphs مدل میکند. شما nodeها (توابعی که کار انجام میدهند) و edgeها (انتقالهای بین آنها، به صورت اختیاری شرطی) تعریف میکنید. State از طریق گراف جریان مییابد و از طریق checkpointing ذخیره میشود.
این صریحترین و قابل کنترلترین فریمورک است - شما هر مرحله را خودتان سیمکشی میکنید.
مفاهیم اصلی
- StateGraph: تعریف گراف با typed state
- Nodes: توابع Python که state را تبدیل میکنند
- Edges: اتصالات بین nodeها، میتوانند شرطی باشند
- Checkpointing: persistence داخلی برای جریانهای کاری طولانیمدت
Code Example
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?"}]})
نقاط قوت
- کنترل دقیق روی هر مرحله و انتقال
- Checkpointing و human-in-the-loop داخلی
- برابری کامل با TypeScript
- با هر LLM provider کار میکند
- بهترین برای جریانهای کاری پیچیده با شاخهبندی شرطی و حلقهها
نقاط ضعف
- منحنی یادگیری تند - باید مفاهیم graph theory را بفهمید
- پرگو برای use caseهای ساده - یک agent پایه به boilerplate بیشتری نسبت به فریمورکهای دیگر نیاز دارد
- اشکالزدایی جریانهای گراف بدون LangSmith میتواند چالشبرانگیز باشد
قیمتگذاری
Open-source (MIT). LangSmith (پلتفرم observability مدیریتشده) سطوح پولی برای نظارت production دارد.
CrewAI: تشکیلدهنده تیم
CrewAI از یک استعاره انسانی استفاده میکند: شما یک خدمه از agents تخصصی جمع میکنید، هر کدام با یک role، goal و backstory. agents با استفاده از tools روی tasks همکاری میکنند، که توسط یک process (sequential، hierarchical یا consensual) هماهنگ میشوند.
آن را مثل استخدام یک تیم در نظر بگیرید که هر عضو عنوان شغلی و تخصص مشخصی دارد.
مفاهیم اصلی
- Agent: شخصیتی با role، goal، backstory و tools
- Task: تکلیفی با description، expected output و agent اختصاصیافته
- Crew: گروهی از agents که با هم کار میکنند
- Process: استراتژی اجرا (sequential، hierarchical، consensual)
- Flow: لایه orchestration رویدادمحور برای اتصال چندین crew
Code Example
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)
نقاط قوت
- Role-based abstraction شهودی - درک آن آسان است
- بیش از 100 tool integration داخلی
- حافظه مشترک بین agents (کوتاهمدت، بلندمدت، entity)
- بزرگترین community (~40k GitHub stars)
- فرآیند سلسلهمراتبی با یک agent "مدیر" که تفویض و اعتبارسنجی میکند
نقاط ضعف
- کنترل کمتر از LangGraph - شما roleها تعریف میکنید، نه مسیرهای اجرای دقیق
- فرآیند سلسلهمراتبی وقتی agents مخالف باشند میتواند غیرقابل پیشبینی باشد
- اشکالزدایی مکالمات multi-agent سختتر از جریانهای تکagent است
قیمتگذاری
Open-source core (رایگان). CrewAI Platform: $99/ماه (Teams) تا $120k/سال (Enterprise). قیمتگذاری بر اساس crewهای فعال و اجراهای ماهانه.
OpenAI Agents SDK: مسیریاب
OpenAI Agents SDK (جانشین معنوی Swarm) روی handoffs تمرکز دارد - agents مکالمات را به agents تخصصی دیگر منتقل میکنند. این مینیمالترین فریمورک است: agents، tools، handoffs و guardrails. همین.
مفاهیم اصلی
- Agent: model + instructions + tools + handoffs
- Handoff: انتقال به agent دیگر (به عنوان ابزاری که LLM میتواند فراخوانی کند مدل شده)
- Guardrail: اعتبارسنجی ورودی/خروجی که به صورت موازی با agent اجرا میشود
- Runner: حلقه agent را اجرا میکند
- Tracing: observability داخلی برای تمام فراخوانیهای LLM، فراخوانی ابزار و handoffها
Code Example
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
نقاط قوت
- الگوی handoff تمیز - طبیعی برای جریانهای کاری routing/triage
- Guardrails به صورت موازی با اجرا کار میکنند (fail-fast، مسدودکننده نیست)
- داشبورد tracing داخلی برای اشکالزدایی
- علیرغم نام، modelهای غیر OpenAI را پشتیبانی میکند
- Abstraction حداقلی - درک و گسترش آن آسان است
نقاط ضعف
- مدیریت state کمتر بالغ نسبت به LangGraph
- بدون persistence یا checkpointing داخلی
- اکوسیستم ابزارهای شخص ثالث کوچکتر است
- طراحی handoff-محور ممکن است به هر architecture نخورد
قیمتگذاری
Open-source (MIT). برای هر model که استفاده میکنید per-token پرداخت میکنید.
Claude Agent SDK: توسعهدهنده
Claude Agent SDK رویکرد متفاوتی دارد: به جای تعریف جریانهای کاری یا roleها، به agent مجموعهای از ابزارها میدهید و میگذارید خودش بفهمد چطور کار را انجام دهد. از همان حلقه خودمختار استفاده میکند که Claude Code را نیرو میدهد - خواندن، عمل، تایید، تکرار.
مفاهیم اصلی
- query(): نقطه ورود اصلی که حلقه agent را شروع میکند
- Built-in tools: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch
- ابزارهای سفارشی از طریق MCP: ابزارها را به عنوان in-process MCP servers تعریف کنید
- Sub-agents: agents تخصصی که والد میتواند به آنها تفویض کند
- Sessions: حفظ context در تعاملات متعدد
Code Example
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); } }
نقاط قوت
- یکپارچگی MCP درجهیک - به هر اکوسیستم MCP server متصل شوید
- ابزارهای داخلی برای عملیات فایل، ترمینال و دسترسی وب
- فشردهسازی خودکار context برای codebaseهای بزرگ
- موازیسازی sub-agent برای کارهای پیچیده
- همان موتور Claude Code - در جریانهای کاری توسعه واقعی آزموده شده
نقاط ضعف
- فقط modelهای Claude - بدون پشتیبانی از ارائهدهندگان متعدد
- فریمورک جدیدتر با community کوچکتر
- حتی برای Python SDK نیاز به Node.js runtime دارد
- کنترل کمتر صریح روی جریان کار در مقایسه با LangGraph
قیمتگذاری
Open-source. نرخهای استاندارد Claude API token. Managed Agents (نسخه میزبانیشده): $0.08 به ازای هر session-hour علاوه بر هزینههای token.
چه زمانی کدام را انتخاب کنید
LangGraph را انتخاب کنید اگر:
- به کنترل دقیق روی هر مرحله جریان کار نیاز دارید
- use case شما شامل منطق شرطی پیچیده و حلقهها است
- به persistence داخلی و نقاط بازرسی human-in-the-loop نیاز دارید
- باید چندین LLM provider در یک جریان کار استفاده کنید
CrewAI را انتخاب کنید اگر:
- یک abstraction شهودی مبتنی بر نقش میخواهید
- کار شما شامل agents متعدد با تخصصهای متمایز است
- به همکاری agents و رد و بدل context بین آنها نیاز دارید
- بزرگترین community و بیشترین integrationهای داخلی را میخواهید
OpenAI Agents SDK را انتخاب کنید اگر:
- الگوی اصلی شما مسیریابی مکالمات به متخصصان است
- به guardrails نیاز دارید که ورودی/خروجی را به صورت موازی اعتبارسنجی کنند
- سادهترین abstraction ممکن با حداقل boilerplate را میخواهید
- tracing و observability داخلی مهم هستند
Claude Agent SDK را انتخاب کنید اگر:
- agents شما باید کد بخوانند، بنویسند و اجرا کنند
- یکپارچگی MCP server درجهیک میخواهید
- به agents خودمختار نیاز دارید که تکرار و خوداصلاح کنند
- از قبل Claude استفاده میکنید و عمیقترین یکپارچگی را میخواهید
آیا میتوانید فریمورکها را ترکیب کنید؟
بله. یک الگوی رایج استفاده از یک فریمورک برای orchestration و دیگری برای agents فردی است:
- LangGraph برای گراف جریان کار کلی
- CrewAI برای یک node خاص که نیاز به همکاری multi-agent دارد
- Claude Agent SDK برای وظایف فرعی مرتبط با کدنویسی از طریق MCP
- OpenAI Agents SDK برای triage و routing رو به مشتری
فریمورکها متقابلا انحصاری نیستند. آنچه برای هر بخش سیستم شما مناسب است استفاده کنید.
نتیجهگیری
هر فریمورک شرط روشنی میبندد:
- LangGraph برای کنترل بهینهسازی میکند - شما هر انتقال را تعیین میکنید
- CrewAI برای همکاری بهینهسازی میکند - agents به عنوان یک تیم کار میکنند
- OpenAI Agents SDK برای سادگی بهینهسازی میکند - حداقل abstraction، handoffهای تمیز
- Claude Agent SDK برای خودمختاری بهینهسازی میکند - ابزارها را بدهید و بگذارید کار کند
انتخاب درست به جریان کار، تیم و stack فعلی شما بستگی دارد. آن را که با use case اصلیتان همخوانی دارد انتخاب کنید، خوب یاد بگیرید، و وقتی به نقطه قوت دیگران رسیدید آنها را وارد کنید.