Agent 框架对比
问题
主流的 Agent 框架有哪些?如何选型?
答案
一、主流框架对比
| 框架 | 开发者 | 核心特点 | 适用场景 |
|---|---|---|---|
| LangGraph | LangChain | 图状态机,可控性强 | 复杂流程、生产级 |
| CrewAI | CrewAI | 角色扮演,易上手 | 多 Agent 协作 |
| AutoGen | Microsoft | 对话驱动多 Agent | 研究、原型 |
| OpenAI Agents SDK | OpenAI | 官方轻量工具 | OpenAI 生态 |
| Mastra | Mastra | TypeScript 优先 | 前端/全栈开发 |
| Dify | Langgenius | 可视化编排 | 低代码搭建 |
二、LangGraph
核心理念:将 Agent 建模为有限状态机(图),节点是处理逻辑,边是状态转换。
from langgraph.graph import StateGraph, MessagesState, START, END
graph = StateGraph(MessagesState)
# 节点:处理逻辑
graph.add_node("agent", call_model)
graph.add_node("tools", call_tools)
# 边:状态转换
graph.add_edge(START, "agent")
graph.add_conditional_edges("agent", should_use_tools)
graph.add_edge("tools", "agent")
app = graph.compile()
优势:
- 流程完全可控(图结构定义)
- 支持 Human-in-the-loop、持久化、时间旅行
- 生产级:LangSmith 监控、部署支持
三、CrewAI
核心理念:像管理一个团队一样定义 Agent 的角色和协作。
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()
优势:上手简单、角色定义直观、适合多 Agent
四、选型建议
| 场景 | 推荐框架 |
|---|---|
| 简单工具调用 | 直接用 OpenAI/Anthropic SDK |
| 复杂流程控制 | LangGraph |
| 多角色协作 | CrewAI |
| 可视化搭建 | Dify |
| TypeScript 项目 | Mastra / Vercel AI SDK |
常见面试问题
Q1: LangChain 和 LangGraph 是什么关系?
答案:
- LangChain:LLM 应用开发的基础库,提供 LLM 调用、工具、RAG 等组件
- LangGraph:基于 LangChain 构建的Agent 编排框架,用图结构管理 Agent 流程
- 类比:LangChain 是"砖块",LangGraph 是"建筑施工图"
Q2: 为什么不直接写 Agent 循环,要用框架?
答案: 框架提供了生产级所需的关键能力:
- 持久化:支持中断恢复
- Human-in-the-loop:需要人工确认时可暂停
- 流式输出:实时展示 Agent 思考过程
- 监控追踪:调试和观测 Agent 决策链
- 错误处理:重试、超时、回退策略