隔几天就有人问:想做个能读自己文件的 AI,是不是得先学 LangChain?
我一般会先反问一句:你现在卡在哪儿?
答案五花八门,但十有八九是"模型能聊天了,接下来不知道怎么让它接上我的东西"。这个需求很实在,LangChain 也确实能干这个。它对付的是这么一串活:把用户的问题拿过来,去你的文件里找相关的段落,拼成一段提示词,发给模型,拿到回答,如果中间还要查个数据库或者调个接口,再绕回去执行一轮。
这些活你手写也能写。问题是写着写着就变成一堆 if 和字符串拼接,改一处漏三处。LangChain 把它们拆成一块一块,链起来,所以叫"链"。
听着挺好。那我为什么劝先别装。
因为它把好几层东西一起打包给了你。你只想拼个提示词,它同时引入了"链""记忆""代理""检索器""工具"这些概念,每个都有自己的类和写法。于是你本来要解决的是"怎么把三段文字塞进请求里",现在得先搞明白 Chain 和 Agent 的区别。我见过有人在群里贴了六十行代码,问为什么报错,最后发现他要的其实就是一个 f-string。
这不是库的问题。库是为复杂场景准备的,你还没走到那一步,就先背上了它的复杂度。
还有个更实际的原因:出错了不好查。直接用 SDK 发请求,请求长什么样、返回长什么样,一眼能看全。中间隔了一层框架,它会自己拼提示词、自己决定调几次模型、自己吞掉某些异常。等你发现回答不对劲,得先弄清是哪一层改了你的输入。刚上手的时候,这种"看不见"最耗时间。
那什么时候装?
我觉得有个挺好用的判断:你手写已经写顺了,开始反复做同一件麻烦事——比如每次都要写一遍"取最近六条对话、裁掉超长的、拼进 messages",或者好几个功能都要接同一份文件检索——这时候再去翻它的文档,会看得很明白,因为你知道自己要替代的是哪几行。
反过来,如果现在让你说不清"一次请求到底发了哪些内容",那先把 SDK 用熟,比什么都强。
我们站里那个客服兜底就一直没用这类框架,全部代码不到三十行,请求体长什么样我能背下来。倒不是排斥框架,是那点活还用不上。
VidDown 站上那些小工具也是这个思路,能几行写完就别拉一整个框架进来。
我上回翻 pip list,一屏里大半是想不起来什么时候装的。