2024 年,Agent 框架的竞争进入白热化阶段。我在几个项目里分别用过 LangGraph、AutoGen 和 CrewAI,这篇文章做一个工程视角的横评。

三者定位

框架核心定位适合场景
LangGraph有状态的图执行引擎需要精确控制流程的复杂 Agent
AutoGenMulti-Agent 对话框架多个 Agent 协作解决问题
CrewAI角色扮演式 Multi-Agent任务分工明确的团队协作场景

LangGraph

LangGraph 是 LangChain 团队推出的,把 Agent 的执行流程建模成一个有向图

from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    messages: list
    next_step: str

def agent_node(state: AgentState):
    # 调用 LLM 决策下一步
    ...
    return {"next_step": "tool" if needs_tool else "end"}

def tool_node(state: AgentState):
    # 执行工具
    ...
    return {"messages": [...]}

graph = StateGraph(AgentState)
graph.add_node("agent", agent_node)
graph.add_node("tool", tool_node)
graph.add_edge("tool", "agent")
graph.add_conditional_edges("agent", lambda s: s["next_step"])

优点:流程完全可控,支持循环、分支、人工介入(human-in-the-loop),适合生产环境。

缺点:上手成本高,要理解图的概念;代码相对冗长。

AutoGen

AutoGen 是微软出的,核心是让多个 Agent 通过对话协作:

from autogen import AssistantAgent, UserProxyAgent

assistant = AssistantAgent(
    name="助手",
    llm_config={"model": "gpt-4o"}
)

user_proxy = UserProxyAgent(
    name="用户",
    human_input_mode="NEVER",  # 全自动
    code_execution_config={"work_dir": "workspace"}
)

user_proxy.initiate_chat(
    assistant,
    message="帮我写一个爬虫,抓取 Hacker News 首页"
)

优点:能自动执行代码,适合需要写代码解决问题的场景。

缺点:对话流程不可控,生产环境风险高;AutoGen 2.0 改动较大,生态还在重建。

CrewAI

CrewAI 的抽象是"角色"和"任务",更贴近人类团队协作的思维模型:

from crewai import Agent, Task, Crew

researcher = Agent(
    role="研究员",
    goal="深入研究给定主题",
    backstory="你是一个擅长信息收集的研究专家",
    tools=[search_tool]
)

writer = Agent(
    role="写作者",
    goal="把研究结果写成清晰的文章",
    backstory="你是一个技术写作专家"
)

research_task = Task(description="研究 RAG 最新进展", agent=researcher)
write_task = Task(description="根据研究结果写一篇博客", agent=writer)

crew = Crew(agents=[researcher, writer], tasks=[research_task, write_task])
result = crew.kickoff()

优点:上手最快,代码最简洁,适合快速原型。

缺点:底层控制弱,调试困难,复杂流程难以实现。

选型建议

  • 生产环境、复杂流程:LangGraph,可控性最强
  • 代码执行、研究型任务:AutoGen
  • 快速验证想法:CrewAI

我个人现在在生产项目里主要用 LangGraph,原型阶段用 CrewAI 快速验证。