选择工具和技术选型远比看上去要难,尤其面对当下铺天盖地的 AI FOMO 和无处不在的 AI KOL,如何不受干扰地选择适合自己的 AI 工具更是一个难能可贵的技能。
调整心态,拥抱 AI
要有好的选择结果,首先需要调整好心态,没有开放性思维,总是在封闭的小圈子内去思考和选择,那结果可想而知。
面对 AI,眼下心情最复杂的恐怕就是咱们这些技术人了。甚至于,恐怕是对自己手艺越自豪的人,心情越复杂。面对那些比比皆是的动动嘴就得到完整应用的 AI 视频,用“大为震撼”来表达心情恐怕不为过。尤其当主播们洋洋自得地宣称自己并非编程专家但依旧在短短几个小时内就完成了一个应用并上架苹果商店时,那心情恐怕五味杂陈。
However,让我们换个角度看看问题:
- 如果技术白痴都可用 AI 写出完整应用,那么我们这些多少懂点技术的岂非可以比他们干得更好?
- 如果主播们已经可以用 AI 发大财了,那么依据“闷声大发财”的原则,他们干嘛要把这种好事告诉你?
- 既然 AI 这么厉害,那为什么不好好利用它来干我们不擅长或者我们觉得繁琐的事情?
AI 只是工具,不是敌人,何必为了一个工具跟自己过不去?!既然它已是潮流和趋势,不去拥抱它加以善加利用,岂非显得自己傻逼?
并且,假若竞争对手开始利用它来提高自己的战力,请问:你跟还是不跟?
选型原则:场景 + ROI + 生态
“No Silver Bullet”,这是每个开发者的口头禅。既然如此,我们就必然面对选择。为了避免选择困难或是随机乱选,我们需要建立一套自己的选择原则。
就个人来讲,我会从场景、ROI 和生态三个方面来考虑:
- 场景,这个很容易理解。每个工具都有自己擅长的领域,面对你要解决的问题,自然选择合适的工具。
- ROI,这个也不难领会。每个工具本身都会产生一定的成本,面对相似的工具、自己的预算和未来预期收益,自然选择 ROI 最高的工具。
- 生态,这一点往往被忽视,但很关键。一个工具的生态体系越好,越能让你避免未来的很多麻烦,并能得到更多的支持,同时降低做事的成本。比如,我个人觉得 svelte 要优于 react,但是最终在日常开发中还是选择了后者,原因就在于两点:一是 react 生态更好,二是广泛的 react 关联代码可以让 Vibe Coding 事半功倍,因为它提供了更多可供 AI 参考的代码。
AI 服务商的选择
面对琳琅满目且不断涌现的 AI 服务商,该如何选择?以下是我个人的选择,请谨慎参考~~
按场景:
- long context:Gemini,省心,大多数情况下不需要操心输入的拆分。
- coding Claude,众多 ai coding ide 的模型首选。
- 前端项目:Vercel V0,为了充分利用好免费额度,尽可能一次性将需求罗列清楚。在此场景,有兴趣还可以尝试一下 bolt.new,但我个人尚未使用过。虽然看过它的代码,;)
- 问答:perplexity,在当初 SYD 铁路工人闹罢工时,出行前查了一下谈判进展,给出了正确且时效性很强的答案。
以上是高频场景,至于其他低频场景:
- 图片生成:最近开始用 Grok 生成微信文章的封面图,当 Gemini 支持用嘴 P 图后,用它的次数也慢慢变多了。但整体而言,用得少。
- Deep Research:Gemini,主要考虑是该功能离不开搜索,而 Google 在此方面有多年的积累。
同时,由于 Gemini 慷慨的免费额度和不断进取的姿态,在大多数时候它已成为我的首选。
如果你在乎隐私和安全,那么 Ollama 是一个不错的选择,你可以用它来搭配各种免费模型在本地搭建自己的 AI 服务。但请注意几点:
- 模型本身有硬件要求,不是所有模型都能在你的电脑上跑起来。
- 你可能需要微调那些模型才能得到跟云端服务商相近的效果,这需要一定的技术能力、时间和成本。
最近据说 Docker 也将提供 Ollama 类似的本地运行 LLM 的能力,让我们拭目以待。
如果想在浏览器里运行模型,可以尝试使用 transformer.js,不过由于网络和浏览器本身的限制,选择模型时需要慎重。不过,你也可以用它在 node 环境直接跑模型。相关内容可以自行去 Hugging Face 查看,包括它支持哪些模型。
最后不能不提 Groq。它有两个主要特点:匹敌于 Gemini 的免费额度和极快的响应速度。你可以将它视为类似跑在云端的 Ollama,只不过你没法自行配置模型,只能用它支持的那些。Groq 已经支持国产模型 Qwen 和 DeepSeek。
开发工具:语言、框架、基础设施库、AI 编程工具
接下来就聊聊本文的重头戏:开发工具的选择。
语言
目前,我们团队主要使用的语言是 Python 和 TypeScript,同时还维护着古早的 Java 项目(其中夹杂有 Groovy 代码)。偶尔还会用到 Solidity、Go 和 Rust,但非主流。
如果从团队的角度来讲,当然 TypeScript 是首选。原因有几点:
- 一般的 AI 或 LLM 相关项目都离不开前端页面,而 TypeScript 是前端的首选语言之一。
- 流行的 AI 框架都有 TypeScript 的支持,比如 Langchain 和 Vercel AI SDK。
- 从前到后都采用一门语言,可以减少团队的学习成本和项目的开发成本。
- 相比 Python 而言,TypeScript 的开发者更多,更好招人。
但要是基于以下几点考虑,你可以考虑选择 Python:
- 团队能力强,不在乎在一个项目中混杂多种语言。比如,我们的团队,哈哈。
- 使用最新的 AI 研究成果和框架的新功能。由于 Python 一直以来是广大 AI 研究者的首选语言,所以很多新功能都会先在 Python 上实现。其次,我观察到的一个现象:若框架同时支持 Python 和 TypeScript,Python 版本的往往会更稳定且新功能会更快地在 Python 版本上实现。比如,langchain 的最新的 Memory 基础设施 langmem 目前就只有 Python 版本。
- Python 在数值计算和文档处理方面有强大的生态,这一点让 TypeScript 望尘莫及。假如你正在开发一个 RAG 项目(我称之为新时代的 MIS),那么 Python 将大大便利原始材料的处理。比如,对于 PDF,pymupdf4llm 一句话就可以取出文本、表格和图片。
我目前的选择相对中庸:
- 目前开发中的产品全部采用 TypeScript,兼顾团队现状和开发速度的要求。
- 在未来不排除会将一部分文档处理的内容迁移到 Python。
- 而个人灌水用的 AI 出版工具则是 Python,因为开发者只有我一个人。
框架
我个人尝试过三个 AI 框架:
- Vercel AI SDK
- Langchain
- LlamaIndex
最终选择了 langchain,最主要的原因有两点:生态和稳定性。
- verlce ai sdk 虽然不错,但生态远远落后于 langchain,优势仅仅体现在前端部分。当需要处理不同类型的文档时,就有点捉襟见肘力不从心了。此外,langchain 提供从开发到运维的一整套解决方案,这不是 vercel ai sdk 所能比拟的。
- llamaindex 则在功能稳定性上不如 langchain,python 版本和 js 版本差异较大(我当时尝试时),并且对于 openai 以外的模型支持不够(同样是我当时尝试之时)。
当然,还有一种论调是不要使用框架,直接调用模型,因为反正它们都只是 api wrapper 嘛。就连 Claude 都出了一个 blog 来谈论如何不用框架写一个有效的 agent。
对此,请警惕,不要盲目跟风。口嗨可以,但具体到实操尚需结合自己的情况。原因有几点:
- 团队能力不同,做事风格不同。
- 实际项目里存在大量细节,从原始数据到模型 api 之间还有一段路程要走。如何让这段路走得更轻松,很大程度上取决于你的选择。
- 框架虽然不见得有直接调用 api 灵活,但它标准化了很多处理,比如缓存、错误处理、日志等。如果你愿意花时间自己实现这些,那么直接调用 api 也未尝不可。
- 框架还有助于团队协作,有利于规范代码,减少沟通成本。
因此,我个人的建议是:
- 对于个人玩具,你爱用啥用啥。
- 对于工程项目,一定要用框架。
带着批判的眼光去阅读大牛们的文章和论述,不必盲目跟风,人云亦云。而且,我个人认为,一个人的技术牛逼程度并不是由用不用框架来决定的。因此,收起你的虚荣心,用身体去体会,做出自己的选择。
基础设施库
所谓 AI 项目的基础设施库,包括但不限于:
- Knowledge 相关的三件套:vector db、graph db 和 memory 库。
- 各类 Document 处理库:传统文档、网站、代码库等。
- 模型监控
- Agent 和工作流(历史的轮回:20 年前是 human + workflow, 20 年后是 agent + workflow,当然为了让人掌控最终话语权又加了一个 human-in-the-loop)
- 蹿红的 MCP 配套和 Browser-Use
- Code 相关
此时,一个好的框架的作用就显现出来了:它会提供一整套解决方案,让你不用再去挑选这些基础设施库。像 langchain,它便提供了一整套解决方案,节约了大量的时间和精力。从其文档,你可以找到上述基础设施的解决方案。
我们的选择:
- vector db: pg vector
- graph db 和 memory:尚在调研
- document processor:langchain 提供的为主,但也有用到其他的库,比如:
- pdf:pymupdf4llm
- git repo: python-repomix
- 网站:crawler4ai(firecrawl 太贵)
- 模型监控:langsmith
- agent 和工作流:langgraph
- MCP 配套:
- client:langchain 生态
- server:fastmcp
- Browser-Use:尚未用到
- Code 相关:尚未用到,但有考虑在未来采用 smolagents + docker 实现类似功能,不直接使用 e2b 也是它太贵。
此外,警惕所谓的 low/no code 工具,我基本不用。从业多年的经历告诉我:那些画图工具没有一个实现它们吹的牛逼!
AI 编程工具
当下时髦的 Vibe Coding,其基础就是 AI 编程工具。这也是当前 AI Fomo 和 AI KOL 最热衷的领域之一。同时,也是让老码农们最心里不是滋味的地方。
如果你还没有解开心结,认为借助 AI 编程可耻,请重新阅读本文开头的部分,;)。同时,按此思维模式,人类借助工具完成工作都是可耻和错误的!
采用 AI 编程工具,最主要的两个障碍是:代码知识产权和代码安全。对此,你可以采用本地运行模型结合代码 IDE 来做到。
关于这一部分,我们的选择有些杂:
- 团队内部基本都是 cursor
- 之前有队员用过一段时间的 windsurf,但最终都转到了 cursor。
- 我个人则是 zed(rust based,速度极快。 ts 项目以它为主)和 vscode + copilot(python 项目以它为主)。
此外,在画 ui 时,有时会先使用 v0 生成一个基本雏形。
结语
至此,相信本文应该提供了一个相对全面的 AI 工具选型指南。
虽说本文以 AI 工具选型为主,但其实也适用于任何技术选型。只需抱着开发的心态,遵循场景、ROI 和生态三个原则,你就能做出相对不错的选择。
附:广告
如果你需要技术选型、工程实践和架构设计方面的帮助,请留言,我会提供收费咨询服务,;)【btw,可开发票,哈哈】。