Day 44 / 共 68 天 · 阶段 7 编排框架
框架选型:LangGraph vs CrewAI vs AutoGen vs 手写
这一整个阶段我们逐个见过了手写循环(Day 38)、LangGraph(Day 40-41)、CrewAI(Day 42)、eino(Day 43)。今天做收官对比:把它们摆到一起,讲清各自的性格、擅长什么、什么场景选谁,最后给你一张能直接用的选型决策表。这是阶段 7 的终点,明天(Day 45)进入全新阶段——多智能体协作。
📍 你在阶段 7(编排框架 D39-44)的位置
D39 为何要框架→
D40 LangGraph①→
D41 LangGraph②→
D42 CrewAI→
D43 eino→
D44 框架选型
💡 用一个类比兜住今天(今天全程沿用「选交通工具出行」的世界观)
选框架 = 选交通工具去目的地。手写循环 = 走路/骑单车(自由、看得清每一步,但远了累);LangGraph = 自己开车(每个路口你说了算,能精确控制,学一阵才顺手);CrewAI = 打车/坐大巴(上车说目的地就走,快,但路线不完全由你);AutoGen = 一群人拼车开会边聊边定路(几个 Agent 对话式协作)。没有最好的交通工具,只有"这段路最合适的"——这就是选型的全部道理。
L01
选型为什么难:没有银弹
🤔 痛点网上有人吹 LangGraph、有人吹 CrewAI,到底信谁?新手最容易犯的错:先选框架,再找问题——拿着锤子看什么都像钉子。
💡 本质正确顺序是先看需求,再挑工具。就像出行:先问"多远、多急、几个人、预算多少",再决定走路还是打车。框架只是手段,你要交付的结果才是目的。
👶 面试官为什么爱问"你为什么选这个框架"?他不是考你记不记得 API,而是看你有没有权衡意识——能说出"因为这个项目需要 X,而这个框架恰好强在 X,代价是 Y,我能接受",就说明你是"会做决策的工程师",不是"只会抄示例的搬运工"。今天学的就是这套话术的底子。
📝 举个例子:同一个需求,不同答案
需求是"做个内部小工具,帮我把每天邮件总结成一句话"。这时上 LangGraph 属于杀鸡用牛刀,几十行手写循环就够。反过来"要上线给百万用户、还要能中断续跑、要审计每一步",手写循环就撑不住,该上成熟框架了。
L02
手写循环:什么时候够用(走路/单车)
🤔 痛点Day 38 我们手写过一个 60 行的最小 Agent。既然能手写,为什么还要框架?反过来——什么时候手写反而是更聪明的选择?
💡 本质手写 = 走路:近距离最灵活,看得清每一步,零学习成本。适合原型验证、教学、逻辑简单的小工具。缺点是走远了(状态复杂、要并行、要持久化、要可视化)就会累趴。
# 手写 Agent 的骨架就这么点东西(Day 38 的精简版)
def agent(question, tools, llm, max_steps=5):
history = [{"role": "user", "content": question}]
for _ in range(max_steps): # 循环上限:防止无限打转
reply = llm(history) # 让模型想:要用工具,还是直接答?
if reply.get("tool"): # 模型说要用工具
result = tools[reply["tool"]](reply["args"]) # 执行它
history.append({"role": "tool", "content": result}) # 结果回填
else:
return reply["content"] # 模型给出最终答案,收工
return "达到步数上限" # 兜底,别死循环
# 优点:一眼看懂、想改哪改哪;缺点:分支/并行/存档全得自己造轮子
选它的信号:逻辑就是"想→用工具→再想"的简单循环、团队小、不需要复杂状态管理、想彻底掌控每一行。放弃它的信号:开始出现"这条路要分好几种情况""要能中断后接着跑""要给别人看流程图"。
L03
LangGraph:可控派(自己开车)
🤔 痛点流程一复杂,手写循环里全是
if/else,改一处崩一片,还看不出整体长啥样。💡 本质LangGraph = 自己开车:把 Agent 画成一张状态图(节点+边+条件边),每个路口都由你精确控制,还自带状态管理、断点续跑(checkpointer)、人在环(interrupt)。控制力最强,代价是要学一点图的概念。
图注:越往右控制越精细但越要学;越往左越快上手但越难精调。选型就是在这条线上找你的位置。
📝 举个例子:LangGraph 的主场
"客服 Agent:正常自动答,但涉及退款超过 500 元时必须暂停、等人工审批点确认后再继续。"——这种"要中断、要人插手、要能续跑"的流程,正是 LangGraph 的
🔗 想深入 LangGraph?去看《LangGraph 20 天源码精讲》→
interrupt + checkpointer 的拿手好戏。L04
CrewAI:快速派(打车/大巴)
🤔 痛点我只想快速搭个"AI 团队":一个查资料、一个写稿、一个审校,别让我先学一堆图论概念。
💡 本质CrewAI = 打车:用角色(Agent)+任务(Task)+团队(Crew)的直觉方式组织,几十行就能让"一队 AI"协作起来,上手极快。代价是底层流程没那么"每一步都由你说了算"(像打车路线不完全你定)。
# CrewAI 的写法很"像带团队"(Day 42 复习)
from crewai import Agent, Task, Crew
researcher = Agent(role="研究员", goal="收集素材", backstory="擅长查资料")
writer = Agent(role="写手", goal="写成文章", backstory="文笔好")
t1 = Task(description="查一下'AI 转行'的关键点", agent=researcher)
t2 = Task(description="根据素材写一段 200 字", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[t1, t2]) # 组队
result = crew.kickoff() # 一声令下,团队自动按顺序干活
# 优点:声明式、快;适合"角色分工明确"的协作场景
选它的信号:需求天然是"几个角色分工协作"、要快速出原型、团队更看重开发速度而非极致可控。它的软肋:需要精细控制每一步分支/循环时,不如 LangGraph 顺手。
🔗 想深入 CrewAI?去看《CrewAI 源码精讲》→
L05
AutoGen:对话派(拼车开会)
🤔 痛点有些任务没法一开始就把流程画死,得让几个角色你一言我一语地讨论,边聊边逼近答案。前面那些"按图走"的框架不太顺手。
💡 本质AutoGen(微软开源)= 拼车开会:核心是多个 Agent 互相"对话",通过消息你来我往推进任务,天生适合"讨论式/协商式"的多智能体场景。它擅长让 Agent 之间自由交流,而不是走固定管道。
📝 举个例子:AutoGen 的味道
做一道数学题:一个"出题者"Agent 提问,一个"解题者"Agent 给解法,一个"审查者"Agent 说"第 2 步错了",解题者再改……几个角色像开会一样对话,直到答案通过。这种"多轮互相纠错"的协作,正是对话派的强项。
👶 小白:这几个框架能力好像有重叠,是不是记不住就完了?
👨🏫 老师:不用死记!抓一句话性格就行——LangGraph"我要精确控制每一步"、CrewAI"我要快速搭角色团队"、AutoGen"我要 Agent 们对话协作"、手写"我这活小到不值得上框架"。而且它们的边界在模糊、彼此借鉴,思想都是相通的(还记得 Day 43 说的吗)。你真正要练的是"看需求挑工具"的判断力。
L06
选型决策对照表(出发前先问自己)
💡 本质把"选交通工具"翻译成"选框架"的一张速查表。先回答左边的问题,再看右边推荐。
| 你的场景 / 需求 | 首选 | 为什么(一句话) |
|---|---|---|
| 验证一个想法、逻辑简单的小工具 | 手写循环 | 零学习成本,改起来最快 |
| 流程复杂、要分支/循环/中断续跑/审计 | LangGraph | 控制力和持久化最强 |
| 天然是"多角色分工",要快速出活 | CrewAI | 声明式、上手快 |
| 要 Agent 间"对话协商、互相纠错" | AutoGen | 对话式多智能体的强项 |
| 团队后端是 Go / 要塞进现有 Go 服务 | eino | 同语言落地,部署省心 |
图注:真实项目里常常混用——比如外层 LangGraph 控主流程,某个节点内部用 CrewAI 组个小团队。框架不是二选一的敌人。
L07
今日小结 + 动手 10 分钟
🧠 今天你应该能回答
- 选型的正确顺序是什么?(先看需求,再挑工具)
- 手写循环什么时候反而是更聪明的选择?
- LangGraph / CrewAI / AutoGen 各自的"一句话性格"是什么?
- 面试官问"你为什么选这个框架",他真正想考的是什么?
- 能不能对一个给定需求,说出选谁 + 理由 + 代价?
✋ 动手 10 分钟:做一次真实选型练习
下面三个需求,各自最该选哪个框架?先自己想,再对照答案。把"理由 + 代价"写下来(这就是面试答法):
# 需求 A:我想验证"用 AI 把会议录音转成待办清单"这个点子能不能行
# 需求 B:给电商做客服 Agent,退款超 500 元要暂停等人工审批、且要能续跑
# 需求 C:做一个"选题→写稿→审校"的内容小团队,越快搭好越好
答案 = {
"A": "手写循环 —— 只是验证想法,逻辑简单,零学习成本最快出结果",
"B": "LangGraph —— 需要中断(interrupt)+人在环+断点续跑(checkpointer)",
"C": "CrewAI —— 天然多角色分工,声明式几十行就能跑,出活快",
}
for k, v in 答案.items():
print(k, "→", v) # 试着把每条的"代价"也补一句
明日预告 · Day 45:阶段 7(框架)到此收官!明天开启阶段 8:多智能体协作。第一课就讲两种最核心的协作模式——handoff(交接) vs agent-as-tool(把子代理当工具用),以及为什么后者往往更可控。从"一个 Agent"迈向"一队 Agent",是能力的一次真正跃升。