框架选型指南
本节定位
学完一圈框架以后,真正重要的问题终于来了:
到底该选哪个?
这不是一个“背答案”的题,而是一个“按任务结构做判断”的题。
这节课要做的,就是把这个判断过程讲清楚。
学习目标
- 学会用任务结构去判断框架,而不是看热度
- 建立几条最实用的选型维度
- 看懂一个最小选型打分示例
- 知道什么时候甚至应该先别上框架
一、为什么框架选型本质上是架构决策?
因为框架一旦选定,后面很多东西都会跟着走:
- 代码组织方式
- 团队学习成本
- 调试方式
- 可观测性接入方式
- 上线和维护复杂度
所以它不是一个无关紧要的小依赖,而更像:
你决定系统要按什么方式长出来。
这也是为什么“哪个最火”通常不是最重要问题。
二、先看最关键的五个选型维度
2.1 任务是不是复杂状态流?
如果你的系统有:
- 明显分支
- 回路
- 回退
- 显式中间状态
那图工作流型抽象更有价值。
2.2 系统是不是知识 / 检索驱动?
如果核心难点在:
- 文档摄取
- 索引
- 检索
- 查询组织
那知识导向框架会更自然。
2.3 任务是不是天然像角色协作?
如果任务本来就像:
- 调研
- 写作
- 审核
这类团队分工,角色型框架更顺手。
2.4 团队更在意什么?
例如:
- 更高控制力
- 更低学习成本
- 更快原型速度
- 更稳的长期维护
2.5 项目现在是 demo 还是长期系统?
这个区别非常关键。
- demo 更看重搭得快
- 长期系统更看重结构清晰和可维护
三、一个最小选型打分示例
这个例子不是为了给你“标准答案”,而是教你:
先把任务维度摊开,再做判断。
frameworks = {
"langgraph": {"stateful_flow": 9, "knowledge": 6, "role_collab": 6, "ease_of_start": 6},
"llamaindex": {"stateful_flow": 5, "knowledge": 9, "role_collab": 4, "ease_of_start": 7},
"crewai": {"stateful_flow": 5, "knowledge": 5, "role_collab": 9, "ease_of_start": 8}
}
weights = {
"stateful_flow": 0.35,
"knowledge": 0.25,
"role_collab": 0.20,
"ease_of_start": 0.20
}
def score(framework_info, weights):
return sum(framework_info[k] * weights[k] for k in weights)
for name, info in frameworks.items():
print(name, "->", round(score(info, weights), 3))
3.2 这段代码真正重要的不是分数
真正重要的是你开始会问:
- 我的系统到底更看重什么?
- 为什么这个维度权重更高?
这才是选型思维本身。
四、几个典型任务下的直觉选型
4.1 如果你做的是复杂状态流 Agent
更优先考虑:
- 图 / workflow 型框架
因为你更需要:
- 显式状态
- 条件边
- 回退和重试
4.2 如果你做的是知识库 / RAG 主线
更优先考虑:
- 检索与知识组织导向框架
因为你的关键问题是:
- 文档怎么进系统
- 检索怎么组织
4.3 如果你做的是角色型多 Agent 原型
更优先考虑:
- 团队 / 角色协作型框架
因为这时最重要的是:
- 分工表达自然
- 角色关系清楚
五、什么时候不该着急上复杂框架?
5.1 一个很常见但容易被忽略的情况
如果你的项目只是:
- 一个模型
- 一个工具
- 一条线性流程
那很多时候:
- 手写
- 轻量封装
就已经很够了。