spinny:~/writing $ vim agentic-ai-frameworks-comparison.md
1~2AI agentları artık araştırma demolarından production sistemlerine geçti. 2026 itibarıyla enterprise AI uygulamalarının %60''ından fazlasının agentic bileşenler içermesi bekleniyor. Ancak agentları sıfırdan inşa etmek - tool looplarını, state''i, memory''yi, error handling''i ve multi-agent koordinasyonunu yönetmek - karmaşıktır. İşte frameworkler bu noktada devreye giriyor.3~42026''da dört framework baskın: **LangGraph**, **CrewAI**, **OpenAI Agents SDK** ve **Claude Agent SDK**. Her biri aynı soruna temelde farklı bir yaklaşım getiriyor: LLM''lere akıl yürütme, planlama, tool kullanma ve işbirliği yapma yeteneği kazandırmak.5~6## Bir Bakışta7~8| Yön | LangGraph | CrewAI | OpenAI Agents SDK | Claude Agent SDK |9|--------|-----------|--------|-------------------|-----------------|10| **Geliştiren** | LangChain | CrewAI Inc. | OpenAI | Anthropic |11| **Mimari** | Graph tabanlı | Role tabanlı | Handoff tabanlı | Otonom loop |12| **Felsefe** | Maksimum kontrol | Takım işbirliği | Minimal soyutlama | Agent''a bir bilgisayar ver |13| **Diller** | Python, TypeScript | Python | Python | Python, TypeScript |14| **Model desteği** | Herhangi biri (OpenAI, Claude, yerel) | Herhangi biri | Herhangi biri (isme rağmen) | Yalnızca Claude |15| **GitHub stars** | ~29k | ~40k | ~21k | ~6k |16| **En uygun** | Karmaşık stateful workflowlar | Multi-agent uzmanlaşma | Routing ve triage | Coding ve dosya yoğun görevler |17~18## LangGraph: Graph İnşaatçısı19~20LangGraph, agent workflowlarını **yönlendirilmiş çevrimsel graphlar** olarak modeller. Nodeları (iş yapan fonksiyonlar) ve edgeleri (aralarındaki geçişler, isteğe bağlı olarak koşullu) tanımlarsınız. State graph boyunca akar ve checkpointing yoluyla kalıcı hale gelir.21~22Bu, en açık ve kontrol edilebilir frameworktür - her adımı kendiniz bağlarsınız.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### Temel Kavramlar35~36- **StateGraph**: typed state ile graph tanımı37- **Nodes**: state''i dönüştüren Python fonksiyonları38- **Edges**: nodelar arası bağlantılar, koşullu olabilir39- **Checkpointing**: uzun süreli workflowlar için yerleşik persistence40~41### Kod Örneği42~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### Güçlü Yönler79~80- Her adım ve geçiş üzerinde ince taneli kontrol81- Yerleşik checkpointing ve human-in-the-loop82- Tam TypeScript paritesi83- Herhangi bir LLM sağlayıcısıyla çalışır84- Koşullu branching ve looplar içeren karmaşık workflowlar için en uygun85~86### Zayıf Yönler87~88- Dik öğrenme eğrisi - graph teorisi kavramlarını anlamanız gerekir89- Basit use caseler için fazla ayrıntılı - temel bir agent diğer frameworklere göre daha fazla boilerplate gerektirir90- LangSmith olmadan graph akışlarının debug edilmesi zor olabilir91~92### Fiyatlandırma93~94Open-source (MIT). LangSmith (yönetilen observability platformu) production izleme için ücretli tierlara sahiptir.95~96## CrewAI: Takım Oluşturucu97~98CrewAI insani bir metafor kullanır: her biri bir **role**, **goal** ve **backstory**''ye sahip uzman agentlardan oluşan bir **crew** oluşturursunuz. Agentlar, bir **process** (sequential, hierarchical veya consensual) tarafından koordine edilen **tools** kullanarak **tasks** üzerinde işbirliği yapar.99~100Bunu, her üyenin belirli bir iş unvanı ve uzmanlığına sahip olduğu bir takım kurmak olarak düşünün.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### Temel Kavramlar114~115- **Agent**: role, goal, backstory ve toolları olan bir persona116- **Task**: açıklama, beklenen çıktı ve atanan agent ile birlikte bir görev117- **Crew**: birlikte çalışan bir agent grubu118- **Process**: yürütme stratejisi (sequential, hierarchical, consensual)119- **Flow**: birden fazla crew''yu bağlamak için olay güdümlü orkestrasyon katmanı120~121### Kod Örneği122~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### Güçlü Yönler171~172- Sezgisel role tabanlı soyutlama - düşünmesi kolay173- 100''den fazla yerleşik tool entegrasyonu174- Agentlar arasında paylaşılan memory (kısa vadeli, uzun vadeli, entity)175- En büyük topluluk (~40k GitHub stars)176- Delege eden ve doğrulayan bir "manager" agentı ile hierarchical process177~178### Zayıf Yönler179~180- LangGraph''a göre daha az ince taneli kontrol - roller tanımlarsınız, kesin yürütme yollarını değil181- Agentlar anlaşamadığında hierarchical process öngörülemez olabilir182- Multi-agent konuşmalarının debug edilmesi single-agent akışlarından daha zordur183~184### Fiyatlandırma185~186Open-source çekirdek (ücretsiz). CrewAI Platformu: $99/ay (Teams) ile $120k/yıl (Enterprise) arası. Fiyatlandırma live crew ve aylık yürütmelere dayalıdır.187~188## OpenAI Agents SDK: Router189~190OpenAI Agents SDK (Swarm''ın ruhani halefi), **handoffs** üzerine odaklanır - agentlar konuşmaları diğer uzman agentlara aktarır. En minimal frameworktür: agents, tools, handoffs ve guardrails. Hepsi bu.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### Temel Kavramlar204~205- **Agent**: model + talimatlar + tools + handoffs206- **Handoff**: başka bir agenta transfer (LLM''in çağırabileceği bir tool olarak modellenmiştir)207- **Guardrail**: agentla paralel çalışan input/output doğrulaması208- **Runner**: agent loopunu çalıştırır209- **Tracing**: tüm LLM çağrıları, tool invocationları ve handoffları için yerleşik observability210~211### Kod Örneği212~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### Güçlü Yönler258~259- Temiz handoff pattern - routing/triage workflowları için doğal260- Guardrails yürütmeyle paralel çalışır (fail-fast, bloklamaz)261- Debugging için yerleşik tracing dashboard262- İsmine rağmen non-OpenAI modellerini destekler263- Minimal soyutlama - anlaması ve genişletmesi kolay264~265### Zayıf Yönler266~267- LangGraph''a göre daha az olgun state yönetimi268- Yerleşik persistence veya checkpointing yok269- Üçüncü taraf tool ekosistemi daha küçük270- Handoff merkezli tasarım her mimariye uygun olmayabilir271~272### Fiyatlandırma273~274Open-source (MIT). Kullandığınız herhangi bir model için token başına ödersiniz.275~276## Claude Agent SDK: Geliştirici277~278Claude Agent SDK farklı bir yaklaşım benimser: workflow veya rolleri tanımlamak yerine, agenta bir **tool seti verirsiniz ve görevi nasıl başaracağını kendisine bırakırsınız**. Claude Code''u çalıştıran aynı otonom loopu kullanır - oku, harekete geç, doğrula, yinele.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### Temel Kavramlar291~292- **query()**: agent loopunu başlatan ana giriş noktası293- **Built-in tools**: Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetch294- **Custom tools via MCP**: toolları process içi MCP serverları olarak tanımlayın295- **Sub-agents**: parentın delege edebileceği uzman agentlar296- **Sessions**: birden fazla etkileşim boyunca bağlamı korur297~298### Kod Örneği299~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### Güçlü Yönler336~337- Birinci sınıf MCP entegrasyonu - herhangi bir MCP server ekosistemine bağlanın338- Dosya işlemleri, terminal ve web erişimi için yerleşik tools339- Büyük codebaseler için otomatik bağlam sıkıştırma340- Karmaşık görevler için sub-agent paralelliği341- Claude Code ile aynı motor - gerçek development workflowlarında savaşta test edilmiş342~343### Zayıf Yönler344~345- Yalnızca Claude modelleri - multi-provider desteği yok346- Daha küçük topluluğa sahip daha yeni framework347- Python SDK için bile Node.js runtime gerektirir348- LangGraph''a kıyasla daha az açık workflow kontrolü349~350### Fiyatlandırma351~352Open-source. Standart Claude API token ücretleri. Managed Agents (hostlanan sürüm): token maliyetlerine ek olarak session-saat başına $0.08.353~354## Hangisini Ne Zaman Seçmeli355~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### LangGraph''ı şu durumda seçin:371- Workflowun her adımı üzerinde hassas kontrole ihtiyacınız var372- Use case''iniz karmaşık koşullu mantık ve loopları içeriyor373- Yerleşik persistence ve human-in-the-loop checkpointları istiyorsunuz374- Aynı workflowda birden fazla LLM sağlayıcısı kullanmanız gerekiyor375~376### CrewAI''ı şu durumda seçin:377- Sezgisel, role tabanlı bir soyutlama istiyorsunuz378- Göreviniz farklı uzmanlıklara sahip birden fazla agent içeriyor379- Agentların işbirliği yapmasını ve birbirlerine bağlam iletmesini istiyorsunuz380- En büyük topluluğa ve en fazla yerleşik entegrasyona değer veriyorsunuz381~382### OpenAI Agents SDK''yi şu durumda seçin:383- Birincil patterniniz konuşmaları uzmanlara yönlendirmek384- Input/output''u paralel doğrulayan guardraillere ihtiyacınız var385- Minimal boilerplate ile mümkün olan en basit soyutlamayı istiyorsunuz386- Yerleşik tracing ve observability önemli387~388### Claude Agent SDK''yi şu durumda seçin:389- Agentlarınızın kod okuması, yazması ve yürütmesi gerekiyor390- Birinci sınıf MCP server entegrasyonu istiyorsunuz391- Yineleyen ve kendini düzelten otonom agentlara ihtiyacınız var392- Zaten Claude kullanıyorsunuz ve en derin entegrasyonu istiyorsunuz393~394## Frameworkleri Birleştirebilir Misiniz?395~396Evet. Yaygın bir pattern, orkestrasyon için bir framework ve bireysel agentlar için başka bir framework kullanmaktır:397~398- Genel workflow graph için **LangGraph**399- Multi-agent işbirliği gerektiren belirli bir node için **CrewAI**400- MCP aracılığıyla coding ile ilgili alt görevler için **Claude Agent SDK**401- Müşteriye dönük triage ve routing için **OpenAI Agents SDK**402~403Frameworkler karşılıklı dışlayıcı değildir. Sisteminizin her bölümüne uyanı kullanın.404~405## Sonuç406~407Her framework net bir bahis yapar:408~409- **LangGraph** kontrol için optimize eder - her geçişe siz karar verirsiniz410- **CrewAI** işbirliği için optimize eder - agentlar bir takım olarak çalışır411- **OpenAI Agents SDK** basitlik için optimize eder - minimal soyutlama, temiz handoffs412- **Claude Agent SDK** otonomi için optimize eder - ona toollar verin ve çalışmasına izin verin413~414Doğru seçim workflowunuza, ekibinize ve mevcut stackinize bağlıdır. Birincil use case''inize uyanı seçin, iyi öğrenin ve sweet spotlarına ulaştığınızda diğerlerini dahil edin.415~
NORMAL · agentic-ai-frameworks-comparison.md [readonly]415 lines · :q to close