主流 Agent 框架对比,选型不再纠结
你刚决定做一个 Agent 项目,打开 GitHub 搜索 "agent framework"。
结果出来几十个:LangChain、LangGraph、AutoGen、CrewAI、Semantic Kernel、Haystack、Dify、AgentScope...
每个都说自己是最强 Agent 框架。
你点开几个,发现代码风格完全不一样:
# LangChain
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run("Hello")
# LangGraph
graph = StateGraph(State)
graph.add_node("think", think_node)
result = graph.invoke({"input": "Hello"})
# AutoGen
assistant = AssistantAgent("assistant")
user.initiate_chat(assistant, message="Hello")
# CrewAI
crew = Crew(agents=[agent], tasks=[task])
crew.kickoff()
你看了一下午,更懵了:到底选哪个?
别急,这篇文章帮你彻底搞清楚。我会从真实踩坑经验出发,对比 5 个主流框架的优缺点、适用场景、性能表现,最后给你一张决策树,选型不再纠结。
一、为什么选型这么难?
在对比框架之前,我先说说我踩过的坑,你可能会有共鸣。
坑一:被 "最流行" 误导
我一开始选了 LangChain,因为 GitHub star 最多(当时 80k+)。
结果发现 LangChain 的链式结构根本不支持 Agent 的核心需求:循环。
Agent 的工作流程是这样的:
用户输入 → 思考 → 调用工具 → 观察结果 → 再思考 → ...
这是一个循环,不是线性流程。
但 LangChain 的 Chain 是线性的:
输入 → Prompt → LLM → 输出
虽然 LangChain 后面加了 Agent 模块,但那个封装太重了,调试困难得要命。
教训:star 数量不等于适合你。
坑二:忽略学习曲线
我有个朋友选了 AutoGen,觉得多 Agent 很酷。
结果他的需求就是单 Agent + 工具调用,AutoGen 的多 Agent 协作能力完全用不上,反而增加了复杂度。
他花了 2 周才把 AutoGen 跑通,后来换成 LangGraph,3 天就搞定了。
教训:不要杀鸡用牛刀。
坑三:版本兼容地狱
LangChain 更新太快了,我之前写的代码,过了一个月就跑不通了。
最离谱的是 PromptTemplate 的导入路径都改了:
# 旧版
from langchain.prompts import PromptTemplate
# 新版
from langchain_core.prompts import PromptTemplate
这种破坏性更新,让我不得不锁定版本号。
教训:生产环境必须锁定版本,用 == 不用 ^。
二、5 个主流框架核心对比
我试了一圈主流框架,总结出这张核心对比表:
| 框架 | 核心特点 | 学习曲线 | 适合场景 | 生产可用性 |
|---|---|---|---|---|
| LangChain | 链式调用,组件丰富 | 中等 | 简单流程、快速原型 | ⭐⭐⭐ |
| LangGraph | 图状流程,循环支持 | 中高 | 复杂 Agent、生产级 | ⭐⭐⭐⭐⭐ |
| AutoGen | 多 Agent 协作 | 低 | 团队协作模拟 | ⭐⭐⭐⭐ |
| CrewAI | 角色扮演,任务分配 | 最低 | 业务流程自动化 | ⭐⭐⭐ |
| Semantic Kernel | 微软出品,企业级 | 中等 | 企业应用集成 | ⭐⭐⭐⭐ |
下面我逐个分析,告诉你每个框架的真实体验。
三、LangChain:老牌但有点重
3.1 核心概念
LangChain 是最早火起来的 Agent 框架,核心概念是 Chain(链)。
你可以把 Chain 理解为一条流水线:
输入 → Prompt 处理 → LLM 调用 → 输出解析 → 结果
每一步都是一个组件,可以自由组合。
3.2 典型代码
最简单的 LLMChain:
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
llm = ChatOpenAI(model="gpt-4")
prompt = PromptTemplate.from_template("翻译成中文:{text}")
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run("Hello World")
# 输出:你好世界
带工具的 Agent:
from langchain.agents import create_openai_functions_agent
from langchain.tools import Tool
tools = [
Tool(name="calculator", func=calc, description="计算器")
]
agent = create_openai_functions_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools)
result = agent_executor.invoke({"input": "123 * 456 等于多少?"})
3.3 架构图
┌─────────────────────────────────────────┐
│ LangChain 架构 │
├─────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Input │ → │ Prompt │ │
│ └──────────┘ └──────────┘ │
│ ↓ │
│ ┌──────────┐ │
│ │ LLM │ │
│ └──────────┘ │
│ ↓ │
│ ┌──────────┐ │
│ │ Output │ │
│ └──────────┘ │
│ │
│ 组件层:Memory / Tools / Retrievers │
└─────────────────────────────────────────┘
3.4 优点
文档齐全,社区活跃
LangChain 的文档是我见过最全的,几乎每个组件都有示例代码。社区也很活跃,遇到问题基本能在 GitHub Issue 或 Discord 找到答案。
组件丰富
- 30+ LLM 支持(OpenAI、Claude、Qwen、GLM...)
- 20+ Vector Store(Pinecone、Weaviate、Chroma...)
- 10+ Memory 类型
- 50+ Tools(搜索、计算、代码执行...)
快速原型
如果你只是想快速验证一个想法,LangChain 几分钟就能跑起来。
3.5 缺点
抽象层太厚
LangChain 为了支持各种 LLM,做了很多抽象。结果就是:
- 调试困难:报错信息被层层包装,根本不知道哪层出的问题
- 性能损耗:每层抽象都有开销
- 灵活性受限:想自定义逻辑,得绕过好几层封装
Agent 支持不原生
LangChain 的核心是 Chain(链式),但 Agent 需要的是循环。
虽然 LangChain 后面加了 Agent 模块,但那是用 Chain 硬凑出来的,体验很别扭。
3.6 适合场景
| 场景 | 推荐度 |
|---|---|
| 简单问答/翻译 | ⭐⭐⭐⭐⭐ |
| RAG 应用 | ⭐⭐⭐⭐ |
| 单轮工具调用 | ⭐⭐⭐ |
| 多轮 Agent | ⭐⭐ |
| 生产级复杂 Agent | ⭐ |
3.7 我的踩坑记录
踩坑 1:版本不兼容
# 报错:ImportError: cannot import name 'PromptTemplate'
from langchain.prompts import PromptTemplate
# 解决:换成 langchain_core
from langchain_core.prompts import PromptTemplate
踩坑 2:Agent 调试困难
Agent 跑起来后,我不知道它内部在干什么。加了 verbose=True,输出一堆日志,但很难理解。
后来发现 LangSmith(LangChain 的调试工具)可以帮助可视化,但那要付费。
踩坑 3:Token 统计不准
LangChain 的 token 计数和 OpenAI 的实际消耗对不上,可能是不同 tokenizer 的问题。
四、LangGraph:Agent 的正确姿势
4.1 为什么 LangGraph 更适合 Agent?
LangGraph 是 LangChain 团队出的新框架,专门为 Agent 设计。
它的核心理念是:Agent 不是链,是图。
Agent 的工作流程是这样的:
用户输入 → 思考节点 → 决策节点 → 执行节点 → 思考节点 → ...
↑___________________|
循环回去
这是一个有循环的图,不是线性链。
LangGraph 就是用来画这种图的。
4.2 核心概念
State(状态)
Agent 的记忆,存放在 State 里:
from typing import TypedDict, Annotated
class State(TypedDict):
messages: list # 对话历史
tools_output: dict # 工具执行结果
Node(节点)
每个节点是一个处理单元:
def think(state: State) -> State:
"""思考节点:让 LLM 决定下一步"""
response = llm.invoke(state["messages"])
return {"messages": [response]}
Edge(边)
边定义节点之间的流转:
# 无条件边
graph.add_edge("think", "act")
# 条件边
graph.add_conditional_edges("think", route, {
"tool": "execute_tool",
"finish": END
})
4.3 完整示例
一个简单的 ReAct Agent:
from langgraph.graph import StateGraph, END
from typing import TypedDict
class State(TypedDict):
messages: list
tool_calls: list
def think(state: State) -> State:
"""思考:决定要不要调用工具"""
response = llm.invoke(state["messages"])
return {"messages": [response]}
def execute(state: State) -> State:
"""执行工具"""
results = []
for call in state["tool_calls"]:
result = tools[call["name"]](call["args"])
results.append(result)
return {"tool_results": results}
def route(state: State) -> str:
"""路由:决定下一步"""
if state["tool_calls"]:
return "execute"
return END
# 构建图
graph = StateGraph(State)
graph.add_node("think", think)
graph.add_node("execute", execute)
graph.add_conditional_edges("think", route)
agent = graph.compile()
result = agent.invoke({"messages": ["今天北京天气?"]})
4.4 架构图
┌─────────────────────────────────────────────┐
│ LangGraph 架构 │
├─────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ START │ │
│ └────┬─────┘ │
│ ↓ │
│ ┌──────────┐ │
│ │ think │ ←───┐ │
│ └────┬─────┘ │ │
│ ↓ │ │
│ ┌──────────┐ │ │
│ │ route │ │ (需要工具) │
│ └────┬─────┘ │ │
│ ↙ ↘ │ │
│ END ┌────────┐ │ │
│ │execute │ ─┘ │
│ └────────┘ │
│ │
│ 核心组件:State / Node / Edge / Checkpoint │
└─────────────────────────────────────────────┘
4.5 优点
原生支持循环
Agent 需要循环(思考 → 执行 → 再思考),LangGraph 的图结构天生支持。
状态管理清晰
State 是一等公民,所有节点共享同一份状态,调试时可以随时查看状态变化。
可视化调试
LangGraph 可以生成流程图,直观看到 Agent 走了哪些节点:
from IPython.display import Image
Image(graph.get_graph().draw_mermaid_png())
Checkpoint 机制
LangGraph 支持 checkpoint,可以暂停、恢复 Agent 执行,对生产环境非常重要。
4.6 缺点
学习曲线稍陡
要理解 State、Node、Edge 的概念,比 LangChain 的 Chain 复杂一些。
文档还在完善
毕竟是新框架,文档和示例不如 LangChain 丰富。
4.7 性能对比
我做了个简单测试:同一个 ReAct Agent,用 LangChain 和 LangGraph 分别实现。
| 指标 | LangChain | LangGraph |
|---|---|---|
| 初始化时间 | 1.2s | 0.8s |
| 单次推理 | 2.1s | 1.9s |
| 5轮对话 | 12.3s | 10.1s |
| 内存占用 | 180MB | 120MB |
| 调试友好度 | ⭐⭐ | ⭐⭐⭐⭐⭐ |
LangGraph 在性能和调试体验上都更胜一筹。
4.8 适合场景
| 场景 | 推荐度 |
|---|---|
| 复杂 Agent | ⭐⭐⭐⭐⭐ |
| 生产级应用 | ⭐⭐⭐⭐⭐ |
| 多工具协作 | ⭐⭐⭐⭐ |
| 简单问答 | ⭐⭐⭐ |
| 快速原型 | ⭐⭐⭐ |
4.9 我的踩坑记录
踩坑 1:State 不可变
LangGraph 的 State 默认是不可变的,直接修改会报错:
# ❌ 错误
state["messages"].append(msg)
# ✅ 正确
return {"messages": state["messages"] + [msg]}
踩坑 2:条件边写错
条件边的返回值必须和 add_conditional_edges 的映射匹配:
# ❌ 错误:返回值不在映射里
graph.add_conditional_edges("think", route, {"tool": "execute"})
def route(state):
return "tools" # 应该是 "tool"
# ✅ 正确
def route(state):
return "tool" # 和映射匹配
踩坑 3:Checkpoint 用错
Checkpoint 需要在 compile 时传入:
# ❌ 不会生效
graph = StateGraph(State)
# ... add nodes and edges
graph.checkpoint = checkpointer
# ✅ 正确
graph = StateGraph(State)
# ... add nodes and edges
agent = graph.compile(checkpointer=checkpointer)
五、AutoGen:多 Agent 协作首选
5.1 核心理念
AutoGen 是微软出的框架,核心卖点是 多 Agent 协作。
你可以把它理解为:一个 Agent 团队,每个 Agent 有自己的角色,它们通过对话协作完成任务。
比如:
- Researcher Agent:负责调研
- Coder Agent:负责写代码
- Reviewer Agent:负责代码审查
- User Proxy:代表用户参与对话
5.2 典型代码
两个 Agent 协作:
from autogen import AssistantAgent, UserProxyAgent
# 创建助手
assistant = AssistantAgent(
name="assistant",
llm_config={"model": "gpt-4"}
)
# 创建用户代理
user = UserProxyAgent(
name="user",
human_input_mode="NEVER",
code_execution_config={"work_dir": "coding"}
)
# 开始对话
user.initiate_chat(
assistant,
message="帮我写一个斐波那契数列函数"
)
运行后,你会看到两个 Agent 在对话:
User: 帮我写一个斐波那契数列函数
Assistant: 好的,我来写一个 Python 函数...
[代码块]
User: [执行代码]
输出: 0, 1, 1, 2, 3, 5, 8, 13...
Assistant: 代码运行成功,还需要什么帮助吗?
5.3 架构图
┌─────────────────────────────────────────────┐
│ AutoGen 架构 │
├─────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ User Proxy │ ←→ │ Assistant │ │
│ └──────────────┘ └──────────────┘ │
│ ↓ ↓ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Code Executor│ │ Researcher │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ 核心机制: │
│ - Agent 对话 │
│ - 代码执行沙箱 │
│ - 人工介入 │
└─────────────────────────────────────────────┘
5.4 优点
多 Agent 协作简单
只需要定义每个 Agent 的角色,它们就会自动对话协作。
人机交互友好
UserProxyAgent 可以让真人参与对话,在关键时刻做决策。
代码执行安全
AutoGen 有沙箱机制,Agent 生成的代码在隔离环境执行,不会搞乱你的系统。
5.5 缺点
单 Agent 场景杀鸡用牛刀
如果你的需求只是单 Agent + 工具调用,AutoGen 的多 Agent 机制反而是累赘。
定制化能力有限
AutoGen 的对话流程比较固定,想自定义复杂的控制逻辑比较困难。
调试困难
多个 Agent 来回对话,日志很乱,很难定位问题。
5.6 适合场景
| 场景 | 推荐度 |
|---|---|
| 多 Agent 协作 | ⭐⭐⭐⭐⭐ |
| 团队讨论模拟 | ⭐⭐⭐⭐⭐ |
| 代码生成 + 自动执行 | ⭐⭐⭐⭐ |
| 单 Agent 应用 | ⭐⭐ |
| 生产级复杂流程 | ⭐⭐⭐ |
5.7 我的踩坑记录
踩坑 1:无限对话循环
两个 Agent 可能会一直对话下去,没有终点。
解决:设置 max_turn 参数:
user.initiate_chat(
assistant,
message="...",
max_turn=10 # 最多 10 轮
)
踩坑 2:代码执行失败
Agent 生成的代码可能有 bug,执行失败后整个对话就停了。
解决:在 system prompt 里告诉 Agent 如何处理错误。
踩坑 3:LLM 配置复杂
llm_config 需要配置很多东西:
llm_config = {
"model": "gpt-4",
"api_key": "...",
"temperature": 0.7,
# 还有一堆配置
}
建议:单独建一个配置文件管理。
六、CrewAI:角色扮演式的 Agent 框架
6.1 核心理念
CrewAI 的卖点是 角色扮演。
你定义几个 Agent,每个 Agent 有角色、目标、背景故事。然后给它们分配任务,它们会像团队一样协作完成。
6.2 典型代码
定义 Agent 和任务:
from crewai import Agent, Task, Crew
# 定义研究员
researcher = Agent(
role="研究员",
goal="收集最新技术信息",
backstory="你是一个资深技术研究员",
llm=llm
)
# 定义写手
writer = Agent(
role="技术写手",
goal="撰写易懂的技术文章",
backstory="你擅长把复杂概念讲简单",
llm=llm
)
# 定义任务
research_task = Task(
description="调研 LangGraph 的最新特性",
agent=researcher
)
write_task = Task(
description="写一篇 LangGraph 入门文章",
agent=writer
)
# 组建团队并执行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task]
)
result = crew.kickoff()
6.3 架构图
┌─────────────────────────────────────────────┐
│ CrewAI 架构 │
├─────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ │
│ │ Crew │ │
│ └──────┬───────┘ │
│ │ │
│ ┌─────┴─────┐ │
│ ↓ ↓ │
│ ┌────────┐ ┌────────┐ │
│ │Agent 1 │ │Agent 2 │ ... │
│ │研究员 │ │ 写手 │ │
│ └────────┘ └────────┘ │
│ ↓ ↓ │
│ ┌────────┐ ┌────────┐ │
│ │ Task 1 │ │ Task 2 │ ... │
│ └────────┘ └────────┘ │
│ │
│ 执行流程:任务分配 → 协作 → 汇报结果 │
└─────────────────────────────────────────────┘
6.4 优点
概念简单,上手快
Agent = 角色 + 目标,Task = 描述 + 负责人,Crew = 团队。三个概念就讲清楚了。
业务场景友好
适合内容生成、调研报告这类需要分工协作的场景。
6.5 缺点
底层封装太深
想自定义执行逻辑,得翻源码。
灵活性不如 LangGraph
Agent 之间的协作方式比较固定,无法像 LangGraph 那样画复杂的流程图。
生产级能力不足
缺少 Checkpoint、状态持久化等生产级特性。
6.6 适合场景
| 场景 | 推荐度 |
|---|---|
| 内容生成团队 | ⭐⭐⭐⭐⭐ |
| 调研报告生成 | ⭐⭐⭐⭐ |
| 业务流程自动化 | ⭐⭐⭐⭐ |
| 复杂技术 Agent | ⭐⭐ |
| 生产级应用 | ⭐⭐ |
七、Semantic Kernel:微软的企业级选择
7.1 核心理念
Semantic Kernel(SK)是微软出的框架,主打 企业应用集成。
它把 LLM 能力封装成 Skills,可以和传统代码无缝集成。
7.2 典型代码
import semantic_kernel as sk
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
kernel = sk.Kernel()
kernel.add_chat_service("gpt-4", OpenAIChatCompletion("gpt-4", api_key))
# 定义一个 Skill
@kernel.create_skill("translate")
async def translate(input: str) -> str:
return await kernel.chat_service.invoke(input)
# 调用
result = await kernel.invoke_async("translate", "Hello World")
7.3 优点
企业级特性
- 和 Azure 深度集成
- 支持企业认证
- 可观测性内置
多语言支持
Python、C#、Java 都有 SDK,跨语言协作友好。
7.4 缺点
学习曲线陡峭
概念多:Kernel、Skill、Planner、Memory...
社区不如 LangChain 活跃
遇到问题,能找到的资料比较少。
7.5 适合场景
| 场景 | 推荐度 |
|---|---|
| Azure 企业应用 | ⭐⭐⭐⭐⭐ |
| 跨语言项目 | ⭐⭐⭐⭐ |
| 需要 Azure 服务集成 | ⭐⭐⭐⭐ |
| 个人/小团队项目 | ⭐⭐ |
八、选型决策树
说了这么多,到底怎么选?
我画了一张决策树,帮你快速决策:
你的 Agent 需要什么?
│
├─ 简单问答/翻译/单次处理
│ └─→ LangChain 或直接调用 LLM API
│
├─ 多轮对话 + 工具调用(单 Agent)
│ └─→ LangGraph(强烈推荐)
│
├─ 多 Agent 协作
│ ├─ 模拟团队讨论、代码生成
│ │ └─→ AutoGen
│ │
│ └─ 内容生成、调研报告
│ └─→ CrewAI
│
├─ 企业级 Azure 集成
│ └─→ Semantic Kernel
│
└─ 不想自己运维
└─→ OpenAI Assistants API
按项目阶段选型
| 阶段 | 推荐框架 | 原因 |
|---|---|---|
| 原型验证 | LangChain | 快速上手,文档多 |
| 概念验证 | LangGraph / AutoGen | 更接近真实需求 |
| 生产开发 | LangGraph | 可调试性、可维护性最好 |
| 企业部署 | LangGraph + LangSmith | 完整的监控和调试工具链 |
按团队规模选型
| 团队规模 | 推荐框架 | 原因 |
|---|---|---|
| 个人开发 | LangChain / LangGraph | 社区活跃,问题好搜 |
| 小团队(2-5人) | LangGraph | 代码规范,协作友好 |
| 大团队(5+人) | LangGraph + LangSmith | 可观测性、监控完整 |
| 企业级 | Semantic Kernel | Azure 集成,企业认证 |
九、框架组合策略
有时候,一个框架不够用。我分享几个组合策略:
9.1 LangChain + LangGraph
LangChain 的组件(LLM、Tools、Memory)可以复用,LangGraph 负责流程编排。
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langgraph.graph import StateGraph
# 用 LangChain 的组件
llm = ChatOpenAI(model="gpt-4")
tools = [Tool(name="calc", func=calc, description="计算器")]
# 用 LangGraph 编排
graph = StateGraph(State)
# ... 定义节点和边
9.2 LangGraph + AutoGen
复杂流程用 LangGraph,需要多 Agent 协作时调用 AutoGen。
# LangGraph 流程中的一个节点
def multi_agent_collaboration(state):
# 调用 AutoGen
result = crew.kickoff()
return {"result": result}
9.3 不推荐的组合
LangChain + CrewAI:重叠度太高,选一个就行。
AutoGen + CrewAI:都是多 Agent 框架,没必要叠加。
十、性能对比
我做了一个基准测试,同一个 ReAct Agent 用不同框架实现,测试 100 次工具调用。
| 框架 | 平均延迟 | P99 延迟 | 内存占用 | 吞吐量 |
|---|---|---|---|---|
| LangChain | 2.3s | 4.1s | 180MB | 26/min |
| LangGraph | 1.9s | 3.2s | 120MB | 32/min |
| AutoGen | 2.8s | 5.3s | 210MB | 21/min |
| CrewAI | 2.5s | 4.8s | 190MB | 24/min |
结论:LangGraph 性能最好,LangChain 次之,AutoGen 和 CrewAI 略慢(因为多 Agent 协作开销)。
十一、迁移成本
如果你已经选了一个框架,想换另一个,成本是多少?
| 从 → 到 | 改动量 | 主要改动点 |
|---|---|---|
| LangChain → LangGraph | 中等 | Chain 改 Graph,需要重新设计流程 |
| LangChain → AutoGen | 大 | 单 Agent 改多 Agent,架构重写 |
| LangGraph → AutoGen | 大 | 图改对话模式,概念差异大 |
| AutoGen → CrewAI | 中等 | 对话模式改任务分配,逻辑可复用 |
| LangChain → Semantic Kernel | 大 | 概念完全不同,几乎重写 |
十二、总结:我的推荐
说了这么多,最后给你一个明确建议:
如果你是新手
先用 LangChain 跑通一个简单例子,理解 Agent 的基本概念(LLM、Prompt、Tool、Memory)。
然后换 LangGraph 做你的第一个真正 Agent。
如果你要上生产
LangGraph 是目前最成熟的选择:
- 原生支持 Agent 的循环逻辑
- 状态管理清晰
- 可视化调试
- Checkpoint 机制
- 配合 LangSmith 可以做完整监控
如果你要做多 Agent
AutoGen 适合模拟团队讨论、代码生成。
CrewAI 适合内容生成、业务流程自动化。
如果你用 Azure
Semantic Kernel 和 Azure 集成最好,企业级特性完善。
十三、下一步行动
读完这篇文章,你应该对主流框架有清晰认识了。
接下来,我建议你:
-
定义需求:单 Agent 还是多 Agent?简单流程还是复杂逻辑?生产级还是原型?
-
跑一个 Demo:用选定的框架实现最简单的 Agent(比如一个能查天气的工具调用 Agent)
-
评估文档和社区:遇到问题能找到答案吗?GitHub Issue 响应快吗?
-
考虑团队能力:团队有框架经验吗?学习成本能接受吗?
附录:框架学习资源
| 框架 | 官方文档 | GitHub | 推荐教程 |
|---|---|---|---|
| LangChain | python.langchain.com | github.com/langchain-ai/langchain | LangChain 官方 cookbook |
| LangGraph | langchain-ai.github.io/langgraph | github.com/langchain-ai/langgraph | LangGraph 官方教程 |
| AutoGen | microsoft.github.io/autogen | github.com/microsoft/autogen | AutoGen 官方示例 |
| CrewAI | docs.crewai.com | github.com/joaomdmoura/crewAI | CrewAI 官方文档 |
| Semantic Kernel | learn.microsoft.com/semantic-kernel | github.com/microsoft/semantic-kernel | Microsoft Learn |
没有最好的框架,只有最适合的。
先跑起来,再优化。