跳到主要内容

Agent 框架对比

问题

主流的 Agent 框架有哪些?如何选型?

答案

一、主流框架对比

框架开发者核心特点适用场景
LangGraphLangChain图状态机,可控性强复杂流程、生产级
CrewAICrewAI角色扮演,易上手多 Agent 协作
AutoGenMicrosoft对话驱动多 Agent研究、原型
OpenAI Agents SDKOpenAI官方轻量工具OpenAI 生态
MastraMastraTypeScript 优先前端/全栈开发
DifyLanggenius可视化编排低代码搭建

二、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 循环,要用框架?

答案: 框架提供了生产级所需的关键能力:

  1. 持久化:支持中断恢复
  2. Human-in-the-loop:需要人工确认时可暂停
  3. 流式输出:实时展示 Agent 思考过程
  4. 监控追踪:调试和观测 Agent 决策链
  5. 错误处理:重试、超时、回退策略

相关链接