代码语言

知识点思维导图

27 个知识节点

应用框架(03) - 框架选型对比

读完后,你应能完成以下任务:

  • 绘制“应用框架(03) - 框架选型对比 / 先把候选方案的边界划清”的关键对象与数据流,解释“记住一条反直觉的事实:裸写常常是最优解。”,并用源码位置、日志或 Trace 标注证据。
  • 为“应用框架(03) - 框架选型对比 / 五个问题问下来,答案基本就出来了”设计正常与异常输入,验证“这五个问题不是并列的,有优先级:先看团队能力和上线压力(决定平台 vs 代码),再看流程复杂度(决定 LangChain vs LangGraph vs 裸写)。”,输出首个偏差位置与回归测试结果。
  • 实现“应用框架(03) - 框架选型对比 / 把选型逻辑写成可跑的脚本”的最小代码或配置,检验“打分法的好处是可解释:推荐结果背后的每一分都说得清,开会时能直接把理由摆出来,而不是"我觉得"。”,输出命令、结果与 Diff,并说明不适用边界。

一、框架选型对比的真实应用场景

新项目立项会上,技术负责人问你:"这个 AI 客服,你打算用什么搭?"

你要是答"用 LangChain 吧",他大概率追一句"为什么不用 Dify?为什么不直接调 API?"答不上来,就显得是跟风选型。选型这件事,面试和真实工作里都高频,而且没有标准答案——只有"按需求权衡"的过程。这一篇给你一套能说清的权衡框架。

二、先把候选方案的边界划清

方案 一句话定位 适合 天花板
Dify / Coze 低代码平台,拖拽搭建 快速验证、团队不写代码、固定流程 深度定制、复杂循环搞不定
LangChain 组件化框架,直线链 会写代码、需要组件复用、流程基本固定 复杂循环/状态机表达吃力
LangGraph 状态图框架 需要循环、分支、回退的复杂 Agent 简单需求上它是过度工程
裸写(直接调 API) 自己拼 prompt 调模型 流程简单、不想引依赖、要完全掌控 复杂编排要自己造轮子

记住一条反直觉的事实:裸写常常是最优解。 很多需求就是「拼个 prompt、调一次模型、解析结果」,五行代码搞定,套任何框架都是给自己加负担。框架是用来解决复杂度的,没有复杂度就别引入框架。

三、五个问题问下来,答案基本就出来了

选型不靠感觉,靠把这五个问题问清楚:

1. 团队会写 Python 代码吗?
   不会 → 强烈倾向 Dify/Coze(拖拽就能搭)

2. 要多快上线?
   几天内给产品演示 → 平台省样板代码,优势最大

3. 流程固定吗?需要循环/回退吗?
   固定且不回头 → 裸写或 LangChain 直线链够用
   需要"做一步看结果不行再来一遍" → LangGraph

4. 需要深度定制吗?(自定义检索、rerank、复杂状态)
   需要 → 代码类方案,平台会撞天花板

5. 团队已有技术栈是什么?
   已经在用某框架 → 优先复用,别为一个项目引第二套

这五个问题不是并列的,有优先级:先看团队能力和上线压力(决定平台 vs 代码),再看流程复杂度(决定 LangChain vs LangGraph vs 裸写)。

四、把选型逻辑写成可跑的脚本

口头权衡容易飘,把它固化成打分脚本就清楚了。核心是用几个维度刻画需求,每个维度命中某方案的优势就加分:

打分法的好处是可解释:推荐结果背后的每一分都说得清,开会时能直接把理由摆出来,而不是"我觉得"。

五、工程上真正会踩的坑

  • 简历驱动选型。为了简历好看上 LangGraph,结果需求是个固定流程,平白增加复杂度和维护成本。选型服务于需求,不是服务于简历。
  • 平台和代码二选一的误区。其实可以混用:用 Dify 快速验证产品形态,验证通过后核心链路用代码重写。先平台后代码是很务实的路径。
  • 忽略团队技术栈。团队都在用 LangChain,你新项目硬上别的框架,维护成本和学习成本全摊给团队。已有栈能满足就优先复用。
  • 以为框架能替代理解。无论选哪个,chunk 怎么切、topK 设几、检索为空怎么办,这些原理问题框架都不替你回答。选型对了,原理没懂,照样做不好。

六、一句话面试答法

你怎么做 AI 应用的框架选型? 我会问五个问题:团队会不会写代码、要多快上线、流程固定吗、需不需要循环回退、要不要深度定制。团队不写代码或要快速验证就上 Dify/Coze;会写代码、流程固定的简单需求我倾向裸写或 LangChain 直线链,不为用框架而用框架;需要循环、分支、回退的复杂 Agent 才上 LangGraph;要深度定制检索的回到代码类方案。选型服务于需求和团队,不是服务于简历,而且无论选什么,RAG 和 Agent 的原理都得自己懂。

七、动手实践:37 框架选型对比

一个决策脚本:用几个关键维度刻画你的项目需求,给 Dify/Coze、LangChain、LangGraph、裸写四个方案打分,输出推荐 + 完整理由。

7.1 在线运行

零依赖,纯标准库。跑内置的四个典型需求场景。

7.2 预期输出

=== 运营搭个问答机器人快速验证 ===
推荐:Dify/Coze 平台
  - 团队不写代码:平台可拖拽,+3 平台
  - 要求极快上线:平台省样板代码,+2 平台
  - 流程固定无循环:裸写/LangChain 直线链够用,+2 裸写
  - 最终得分:{'Dify/Coze 平台': 5, 'LangChain': 1, 'LangGraph': 0, '裸写(直接调 API)': 2}

=== 固定流程的 RAG 接口 ===
推荐:裸写(直接调 API)
  - 团队会写代码:代码类方案可选
  - 流程固定无循环:裸写/LangChain 直线链够用,+2 裸写
  - 最终得分:{'Dify/Coze 平台': 0, 'LangChain': 2, 'LangGraph': 1, '裸写(直接调 API)': 3}

=== 多步骤复杂 Agent(需循环回退) ===
推荐:LangGraph
  - 团队会写代码:代码类方案可选
  - 需要循环/分支/回退:+3 LangGraph,-1 平台
  - 需要深度定制:+2 LangChain/LangGraph,-2 平台
  - 最终得分:{'Dify/Coze 平台': -3, 'LangChain': 3, 'LangGraph': 6, '裸写(直接调 API)': 1}

=== 要深度定制检索策略的知识库 ===
推荐:LangChain
  - 团队会写代码:代码类方案可选
  - 流程固定无循环:裸写/LangChain 直线链够用,+2 裸写
  - 需要深度定制:+2 LangChain/LangGraph,-2 平台
  - 最终得分:{'Dify/Coze 平台': -2, 'LangChain': 4, 'LangGraph': 3, '裸写(直接调 API)': 3}

7.3 代码 ↔ 概念对应

选型概念 在 main.py 哪里
刻画需求的关键维度 Requirement 的五个字段
候选方案 CANDIDATES
打分决策逻辑 recommend(每个维度加减分)
决策理由可解释 reasons 列表,记录每条加减分

7.4 决策维度说明

脚本用五个维度刻画需求,每个维度命中某方案的优势就加分、踩中劣势就减分:

维度 倾向
团队会不会写代码 不会 → 平台
是否要极快上线 要 → 平台
流程固定且无循环 是 → 裸写 / LangChain 直线链
需要循环/分支/回退 是 → LangGraph
需要深度定制 是 → 代码类,平台扣分

7.5 动手改

  • main 里加一条你自己项目的 Requirement,看脚本推荐什么。
  • 调整 recommend 里的分值权重,比如把「快速上线」的权重提高,观察推荐变化。
  • 加一个新维度「是否需要团队协作可视化」(平台优势),扩展打分逻辑。

7.6 可运行源码:框架选型对比

main.py

八、总结

  • 先把候选方案的边界划清:记住一条反直觉的事实:裸写常常是最优解。
  • 五个问题问下来,答案基本就出来了:这五个问题不是并列的,有优先级:先看团队能力和上线压力(决定平台 vs 代码),再看流程复杂度(决定 LangChain vs LangGraph vs 裸写)。
  • 把选型逻辑写成可跑的脚本:打分法的好处是可解释:推荐结果背后的每一分都说得清,开会时能直接把理由摆出来,而不是"我觉得"。
  • 工程上真正会踩的坑:为了简历好看上 LangGraph,结果需求是个固定流程,平白增加复杂度和维护成本。
  • 一句话面试答法:团队不写代码或要快速验证就上 Dify/Coze;

学完自测

选择所有正确答案;提交后逐项核对判断依据。

1在“框架选型对比”中,需要同时满足“框架选型对比的真实应用场景”与“先把候选方案的边界划清”。给定正文约束“你要是答"用 LangChain 吧",他大概率追一句"为什么不用 Dify?为什么不直接调 API?"答不上来,就显得是跟风选型。”,哪些判断保持了原有处理机制?多选
2“框架选型对比”出现偏差:“在“框架选型对比 / 五个问题问下来,答案基本就出来了”中,即使不满足“先看团队能力和上线压力(决定平台 vs 代码),再看流程复杂度(决定 LangChain vs LangGraph vs 裸写)”,结果与副作用仍会保持不变。”已成为实际行为。围绕“五个问题问下来,答案基本就出来了”与“把选型逻辑写成可跑的脚本”,哪些判断能定位被改变的职责或边界?多选
3评审“框架选型对比”方案时,验收条件包含“团队会不会写代码、要多快上线、流程固定吗、需不需要循环回退、要不要深度定制。”。关于“一句话面试答法”与“动手实践:37 框架选型对比”的哪些决策符合正文机制?多选