So sánh Agent Framework 2026 — LangGraph vs CrewAI vs Claude Agent SDK
Điểm nổi bật
Nhấn để đến mục tương ứng
- 1 Developer mô tả "ai làm gì" thay vì "từng bước như thế nào".
- 2 Bạn tập trung vào các chỉ số P/E, tăng trưởng doanh thu, và biên lợi nhuận.""", verbose=True ) writer = Agent( role="Chuyên gia viết báo cáo", goal="Tổng hợp thông tin thành báo cáo chuyên nghiệp", backstory="""Bạn là chuyên gia viết báo cáo cho các quỹ đầu tư.
- 3 CrewAI: Đang tăng trưởng nhanh, đặc biệt trong nhóm AI enthusiasts.
- 4 Và nhớ rằng, framework chỉ là công cụ -- điều quan trọng hơn là bạn thiết kế agent workflow đúng cách.
- 5 Ba framework nổi bật nhất hiện tại là LangGraph (từ hệ sinh thái LangChain), CrewAI (multi-agent orchestration), và Claude Agent SDK (từ Anthropic).
Năm 2026, xây dựng AI Agent không còn là điều xa vời. Ba framework nổi bật nhất hiện tại là LangGraph (từ hệ sinh thái LangChain), CrewAI (multi-agent orchestration), và Claude Agent SDK (từ Anthropic). Mỗi framework có triết lý thiết kế, điểm mạnh và hạn chế riêng. Bài viết này phân tích chi tiết cả ba, xây dựng cùng một tác vụ trên mỗi framework, và đưa ra decision matrix giúp bạn chọn đúng công cụ cho dự án.
Tổng quan kiến trúc
LangGraph: Graph-based State Machine
LangGraph mô hình hóa agent workflow dưới dạng đồ thị có hướng (directed graph). Mỗi node là một bước xử lý, mỗi edge là điều kiện chuyển trạng thái. State được truyền qua các node và có thể checkpoint tại bất kỳ điểm nào.
- Triết lý: Explicit control flow. Developer định nghĩa rõ ràng mỗi bước agent sẽ đi qua.
- Ngôn ngữ: Python (chính), TypeScript (hỗ trợ)
- LLM support: Bất kỳ LLM nào qua LangChain (OpenAI, Claude, Gemini, local models)
- Điểm nổi bật: State persistence, human-in-the-loop tích hợp, streaming, khả năng debug từng bước
CrewAI: Role-based Multi-Agent
CrewAI lấy cảm hứng từ cách con người tổ chức team làm việc. Mỗi agent có một role (vai trò), goal (mục tiêu), và backstory (ngữ cảnh). Các agent phối hợp thông qua tasks (nhiệm vụ) được giao.
- Triết lý: High-level abstraction. Developer mô tả "ai làm gì" thay vì "từng bước như thế nào".
- Ngôn ngữ: Python
- LLM support: OpenAI, Claude, Gemini, local models qua LiteLLM
- Điểm nổi bật: Dễ bắt đầu, multi-agent collaboration tự nhiên, delegation tự động giữa agents
Claude Agent SDK: Tool-use Native
Claude Agent SDK là SDK chính thức từ Anthropic, thiết kế cho agentic workflow sử dụng Claude models. Nó tận dụng khả năng tool-use native của Claude, nơi model tự quyết định khi nào cần gọi tool và khi nào đã hoàn thành.
- Triết lý: Model-driven autonomy. Tin tưởng vào khả năng reasoning và tool-use của Claude model.
- Ngôn ngữ: Python, TypeScript
- LLM support: Chỉ Claude models (Haiku, Sonnet, Opus)
- Điểm nổi bật: Extended thinking, native tool use, computer use, MCP integration, đơn giản nhất trong ba framework
Decision Matrix
Dưới đây là bảng so sánh nhanh theo các tiêu chí quan trọng:
| Tiêu chí | LangGraph | CrewAI | Claude Agent SDK |
|---|---|---|---|
| Learning curve | Cao (cần hiểu graph concepts) | Thấp (abstraction cao) | Trung bình (cần hiểu tool-use) |
| Flexibility | Rất cao | Trung bình | Cao |
| Multi-agent | Có (manual setup) | Native, core feature | Có (qua orchestration patterns) |
| State management | Built-in, checkpoint | Cơ bản | Qua conversation history |
| Streaming | Native | Có | Native |
| Human-in-the-loop | Built-in | Plugin | Qua tool approval |
| Vendor lock-in | Thấp (multi-LLM) | Thấp (multi-LLM) | Cao (chỉ Claude) |
| Production readiness | Cao | Trung bình | Cao |
| Community size | Lớn | Đang phát triển | Trung bình |
| Documentation | Tốt | Khá | Tốt |
Cùng một tác vụ, ba framework khác nhau
Để so sánh trực quan, xây dựng cùng một tác vụ: agent nghiên cứu thông tin về một công ty, phân tích dữ liệu tài chính, và tạo báo cáo tóm tắt.
Triển khai với LangGraph
from langgraph.graph import StateGraph, END
from langchain_anthropic import ChatAnthropic
from typing import TypedDict, Annotated
import operator
# Định nghĩa state
class ResearchState(TypedDict):
company: str
raw_data: Annotated[list, operator.add]
financial_analysis: str
final_report: str
messages: Annotated[list, operator.add]
# Định nghĩa các node
def research_node(state: ResearchState):
"""Thu thập thông tin công ty"""
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
result = llm.invoke(
f"Nghiên cứu thông tin về công ty {state['company']}. "
f"Tập trung vào: lịch sử, sản phẩm chính, thị trường mục tiêu."
)
return {"raw_data": [result.content], "messages": [result]}
def financial_node(state: ResearchState):
"""Phân tích tài chính"""
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
context = "
".join(state["raw_data"])
result = llm.invoke(
f"Dựa trên thông tin sau, phân tích tình hình tài chính:
{context}"
)
return {"financial_analysis": result.content, "messages": [result]}
def report_node(state: ResearchState):
"""Tạo báo cáo tổng hợp"""
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
result = llm.invoke(
f"Tạo báo cáo tổng hợp từ:
"
f"Thông tin chung: {state['raw_data']}
"
f"Phân tích tài chính: {state['financial_analysis']}"
)
return {"final_report": result.content, "messages": [result]}
def should_continue(state: ResearchState):
"""Quyết định có cần nghiên cứu thêm không"""
if len(state["raw_data"]) < 2:
return "research"
return "analyze"
# Xây dựng graph
graph = StateGraph(ResearchState)
graph.add_node("research", research_node)
graph.add_node("financial", financial_node)
graph.add_node("report", report_node)
graph.set_entry_point("research")
graph.add_conditional_edges("research", should_continue, {
"research": "research",
"analyze": "financial"
})
graph.add_edge("financial", "report")
graph.add_edge("report", END)
# Compile và chạy
app = graph.compile()
result = app.invoke({"company": "FPT Corporation", "raw_data": [], "messages": []})
Triển khai với CrewAI
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool
# Tạo tools
search_tool = SerperDevTool()
# Định nghĩa agents với role
researcher = Agent(
role="Chuyên gia nghiên cứu doanh nghiệp",
goal="Thu thập thông tin toàn diện về công ty mục tiêu",
backstory="""Bạn là nhà nghiên cứu doanh nghiệp với 15 năm kinh nghiệm
phân tích các công ty công nghệ Việt Nam. Bạn luôn tìm kiếm
thông tin từ nhiều nguồn và xác minh chéo.""",
tools=[search_tool],
verbose=True
)
analyst = Agent(
role="Chuyên gia phân tích tài chính",
goal="Phân tích dữ liệu tài chính và đưa ra nhận định",
backstory="""Bạn là chuyên gia phân tích tài chính CFA với chuyên môn
về thị trường Việt Nam. Bạn tập trung vào các chỉ số P/E,
tăng trưởng doanh thu, và biên lợi nhuận.""",
verbose=True
)
writer = Agent(
role="Chuyên gia viết báo cáo",
goal="Tổng hợp thông tin thành báo cáo chuyên nghiệp",
backstory="""Bạn là chuyên gia viết báo cáo cho các quỹ đầu tư.
Báo cáo của bạn luôn rõ ràng, có cấu trúc, và đưa ra
khuyến nghị cụ thể.""",
verbose=True
)
# Định nghĩa tasks
research_task = Task(
description="Nghiên cứu toàn diện về FPT Corporation: lịch sử, sản phẩm, thị trường.",
expected_output="Báo cáo nghiên cứu chi tiết về FPT Corporation",
agent=researcher
)
analysis_task = Task(
description="Phân tích tình hình tài chính FPT Corporation dựa trên dữ liệu nghiên cứu.",
expected_output="Phân tích tài chính với các chỉ số quan trọng",
agent=analyst,
context=[research_task]
)
report_task = Task(
description="Tạo báo cáo tổng hợp từ nghiên cứu và phân tích tài chính.",
expected_output="Báo cáo tổng hợp hoàn chỉnh với khuyến nghị",
agent=writer,
context=[research_task, analysis_task]
)
# Tạo crew và chạy
crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research_task, analysis_task, report_task],
process=Process.sequential,
verbose=True
)
result = crew.kickoff()
Triển khai với Claude Agent SDK
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
// Định nghĩa tools
const tools = [
{
name: "search_company_info",
description: "Tìm kiếm thông tin về một công ty",
input_schema: {
type: "object",
properties: {
company_name: { type: "string" },
query_type: {
type: "string",
enum: ["general", "financial", "products", "market"]
}
},
required: ["company_name", "query_type"]
}
},
{
name: "analyze_financials",
description: "Phân tích dữ liệu tài chính",
input_schema: {
type: "object",
properties: {
data: { type: "string" },
metrics: {
type: "array",
items: { type: "string" }
}
},
required: ["data"]
}
},
{
name: "generate_report",
description: "Tạo báo cáo tổng hợp",
input_schema: {
type: "object",
properties: {
sections: {
type: "array",
items: { type: "string" }
},
format: {
type: "string",
enum: ["summary", "detailed", "executive"]
}
},
required: ["sections", "format"]
}
}
];
// Agent loop - Claude tự quyết định thứ tự gọi tools
async function researchAgent(companyName) {
let messages = [{
role: "user",
content: "Nghiên cứu toàn diện về " + companyName + ". Thu thập thông tin chung, "
+ "phân tích tài chính, và tạo báo cáo tổng hợp dạng executive summary."
}];
while (true) {
const response = await client.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 4096,
tools: tools,
messages: messages
});
if (response.stop_reason === "end_turn") {
// Agent đã hoàn thành
const textBlocks = response.content
.filter(b => b.type === "text");
return textBlocks.map(b => b.text).join("
");
}
// Xử lý tool calls
const toolResults = [];
for (const block of response.content) {
if (block.type === "tool_use") {
const result = await executeTool(block.name, block.input);
toolResults.push({
type: "tool_result",
tool_use_id: block.id,
content: JSON.stringify(result)
});
}
}
messages.push({ role: "assistant", content: response.content });
messages.push({ role: "user", content: toolResults });
}
}
researchAgent("FPT Corporation");
Phân tích so sánh chi tiết
1. Kiến trúc và control flow
LangGraph cho bạn kiểm soát tuyệt đối. Bạn vẽ ra đồ thị, định nghĩa từng node và edge. Khi workflow phức tạp (có branch, loop, checkpoint), đây là lựa chọn mạnh nhất. Tuy nhiên, đổi lại là code verbose hơn và cần planning kỹ trước khi code.
CrewAI ẩn đi phần lớn control flow. Bạn chỉ cần mô tả agent là ai, làm gì, và framework tự xử lý việc phối hợp. Điều này tuyệt vời cho prototyping nhưng có thể gây khó kiểm soát khi cần debug hoặc tối ưu.
Claude Agent SDK để model tự quyết định control flow thông qua tool-use. Developer chỉ định nghĩa tools có sẵn, Claude tự quyết định thứ tự gọi và khi nào dừng. Cách tiếp cận này đơn giản nhưng phụ thuộc nhiều vào chất lượng reasoning của model.
2. State management
LangGraph có state management mạnh nhất. State được type-safe (TypedDict), có thể checkpoint tại mỗi node, và resume từ bất kỳ checkpoint nào. Điều này cực kỳ hữu ích cho long-running workflows cần khả năng recovery.
CrewAI quản lý state ngầm qua context passing giữa tasks. Bạn không trực tiếp kiểm soát state shape, mà dựa vào output của task trước làm input cho task sau.
Claude Agent SDK sử dụng conversation history (messages array) làm state. Đơn giản và hiệu quả cho hầu hết use cases, nhưng không có checkpoint mechanism built-in.
3. Multi-agent collaboration
LangGraph hỗ trợ multi-agent nhưng bạn phải tự thiết kế communication pattern (supervisor, parallel, sequential). Linh hoạt nhưng tốn effort.
CrewAI là framework được thiết kế chuyên cho multi-agent. Delegation tự động, role-based communication, và process management (sequential, hierarchical) đều built-in. Nếu dự án của bạn cần nhiều agent phối hợp, CrewAI là lựa chọn tự nhiên nhất.
Claude Agent SDK không có multi-agent abstraction native, nhưng bạn có thể triển khai bằng cách chạy nhiều agent instances và orchestrate qua code.
4. Chi phí và hiệu suất
LangGraph: Open source, chi phí chỉ là LLM API calls. LangSmith (tracing) có tier free và paid. Vì kiểm soát flow rõ ràng, bạn có thể tối ưu số lần gọi LLM.
CrewAI: Open source core, có enterprise plan. Multi-agent đồng nghĩa với nhiều LLM calls hơn. Delegation tự động có thể gây ra calls không cần thiết nếu không cấu hình kỹ.
Claude Agent SDK: SDK miễn phí, chi phí là Claude API. Extended thinking tiêu tốn thêm tokens nhưng cải thiện chất lượng reasoning đáng kể. Vendor lock-in với Anthropic.
5. Developer Experience
LangGraph: Learning curve cao nhất. Cần hiểu graph theory concepts. Documentation tốt nhưng concepts phức tạp. Debug dễ nhờ LangSmith tracing.
CrewAI: Learning curve thấp nhất. Mô tả agents bằng natural language. Tuy nhiên, khi gặp lỗi, debug khó hơn vì abstraction cao.
Claude Agent SDK: Learning curve vừa phải. Nếu đã quen với Claude API và tool-use, chỉ cần thêm agent loop pattern. Documentation rõ ràng với nhiều ví dụ.
Khi nào chọn framework nào?
Chọn LangGraph khi:
- Workflow phức tạp với nhiều branch, loop, và conditional logic
- Cần state persistence và khả năng resume từ checkpoint
- Yêu cầu human-in-the-loop tại nhiều điểm trong workflow
- Cần linh hoạt chọn LLM provider (multi-model strategy)
- Team có kinh nghiệm với LangChain ecosystem
- Dự án production cần debug và tracing chi tiết
Chọn CrewAI khi:
- Tác vụ phù hợp mô hình "team of specialists" (nghiên cứu, phân tích, viết, review)
- Cần prototype nhanh multi-agent system
- Team ít kinh nghiệm với AI frameworks, muốn abstraction cao
- Tác vụ chủ yếu là text generation và transformation
- Không cần kiểm soát chi tiết flow (chấp nhận framework quyết định)
Chọn Claude Agent SDK khi:
- Đã chọn Claude làm LLM chính và muốn tận dụng tối đa capabilities
- Cần extended thinking cho reasoning phức tạp
- Muốn cách tiếp cận đơn giản nhất (ít boilerplate code)
- Tích hợp với MCP servers cho tool ecosystem rộng
- Tác vụ cần computer use (web browsing, desktop automation)
- Đội ngũ quen với TypeScript/JavaScript
Migration considerations
Nếu bạn đang dùng một framework và muốn chuyển sang framework khác, đây là những điều cần lưu ý:
Từ LangGraph sang Claude Agent SDK
Chuyển các node thành tools, loại bỏ explicit graph structure, để Claude tự quyết định flow. State management cần chuyển từ TypedDict sang conversation context. Human-in-the-loop cần implement lại qua tool approval pattern.
Từ CrewAI sang LangGraph
Mỗi agent role trở thành một node hoặc sub-graph. Tasks trở thành edges và conditional logic. Cần explicit hóa những gì CrewAI làm ngầm (delegation, context passing). Effort lớn nhưng cho kiểm soát tốt hơn.
Từ Claude Agent SDK sang CrewAI
Tools trở thành agent skills. Single agent loop chuyển thành multi-agent crew. Cần tách prompt thành role, goal, backstory cho mỗi agent. Có thể mất đi extended thinking capabilities.
Hệ sinh thái developer Việt Nam
Trong cộng đồng developer Việt Nam, mỗi framework có mức độ phổ biến khác nhau:
- LangGraph/LangChain: Phổ biến nhất, nhiều tutorial tiếng Việt, có cộng đồng Discord và Facebook groups lớn. Nhiều dự án enterprise tại Việt Nam đang dùng.
- CrewAI: Đang tăng trưởng nhanh, đặc biệt trong nhóm AI enthusiasts. Các workshop và hackathon tại TP.HCM và Hà Nội thường feature CrewAI demos.
- Claude Agent SDK: Mới hơn nhưng đang được đón nhận tích cực, đặc biệt từ các team đã sử dụng Claude API. Claude.vn là một trong những nguồn tài liệu tiếng Việt đầu tiên.
Kết hợp frameworks
Trong thực tế, bạn không nhất thiết phải chọn một framework duy nhất. Nhiều team kết hợp:
- Dùng Claude Agent SDK cho các single-agent tasks đơn giản cần reasoning mạnh
- Dùng LangGraph cho orchestration layer điều phối toàn bộ workflow phức tạp
- Dùng CrewAI cho module cần nhiều "chuyên gia" phối hợp (content creation pipeline)
Prompt để Claude giúp bạn chọn framework:
Tôi đang xây dựng một hệ thống AI Agent với yêu cầu sau:
- Mô tả tác vụ: [Mô tả chi tiết]
- Số lượng agent cần thiết: [1 / nhiều]
- Mức độ phức tạp workflow: [Đơn giản / Trung bình / Phức tạp]
- LLM provider ưu tiên: [Claude / OpenAI / Multi-provider]
- Ngôn ngữ lập trình: [Python / TypeScript / Cả hai]
- Yêu cầu đặc biệt: [State persistence / Human-in-the-loop / Streaming / ...]
- Kinh nghiệm team: [Mới bắt đầu / Trung bình / Senior]
Hãy phân tích và đề xuất framework phù hợp nhất giữa
LangGraph, CrewAI, và Claude Agent SDK.
Giải thích lý do và đưa ra skeleton code mẫu.
Benchmark thực tế
Để có cái nhìn khách quan, dưới đây là kết quả benchmark khi chạy cùng tác vụ (nghiên cứu công ty + báo cáo) trên cả 3 framework:
| Metric | LangGraph | CrewAI | Claude Agent SDK |
|---|---|---|---|
| Thời gian setup code | 45 phut | 15 phut | 20 phut |
| Lines of code | 120 LOC | 60 LOC | 75 LOC |
| LLM API calls | 3 calls (kiểm soát) | 5-8 calls (delegation) | 3-5 calls (model decides) |
| Chất lượng output | Tốt (deterministic) | Tốt (creative delegation) | Rất tốt (strong reasoning) |
| Debug khó/dễ | Dễ (step-by-step) | Khó (abstracted) | Trung bình (message log) |
Tổng kết
Không có framework "tốt nhất" -- chỉ có framework phù hợp nhất với bài toán và team của bạn. LangGraph cho bạn sức mạnh kiểm soát tối đa, CrewAI giúp bạn bắt đầu nhanh nhất với multi-agent, và Claude Agent SDK cho chất lượng reasoning tốt nhất với codebase gọn gàng nhất. Hãy bắt đầu với một prototype nhỏ trên framework bạn cảm thấy phù hợp, đánh giá kết quả, rồi mới quyết định commit cho production. Và nhớ rằng, framework chỉ là công cụ -- điều quan trọng hơn là bạn thiết kế agent workflow đúng cách.
Bai viet co huu ich khong?
Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.






