不是又一份“必学清单”。这5个真正的卡点,决定了你的AI项目是顺利上线,还是永远死在笔记本电脑里。
有个初学者,花了三个周末做了一个AI应用,用来总结PDF文档。在他自己的电脑上,在一个终端窗口里,它跑得完美无缺。然后,就没有然后了——它永远留在了那里。
他想拿给朋友看。朋友没装Python,没有API密钥,也从来没打开过Jupyter Notebook。
根本没法展示。整个应用就困在他那一台机器里。
这几乎是每个学AI工程的人都会撞上的墙。你学会调API,写出能跑的脚本,然后你就卡住了——因为一个在自己电脑上的脚本根本不是产品,而几乎没人告诉你该怎么跨过这道坎。
大多数人会怎么做?去搜“最好的AI框架”,看到哪个名字出现最多(通常是LangChain),然后花一个周末把它硬塞进一个根本不需要它的脚本里。
到头来,还是拿不出手。
这里有个没人跟初学者讲的大实话:不是只有一个坎,是五个。每个坎都卡在从“酷炫演示”到“别人能用的东西”的不同阶段。
搞清楚你卡在哪个坎上,你就已经甩开了大多数还在原地打转的人。
只要把这5个框架真正用明白,你就超过了90%的AI初学者。
简单说:框架就是别人写好的代码,你不用自己再写一遍。
直接调用AI模型,就是写几行原生Python,把问题扔过去,然后收到一大段文字。
做演示没问题。可一旦你要求这段文字可靠、可分享、能连接其他数据、或者能让不是你自己的人用上,它就立刻崩了。
下面每个框架的出现,都是因为有人反复撞上某一个具体的墙,然后一次性把这个问题解决掉,让所有人都受益。
大多数初学者试图一口气学完这五个,顺序随机,从五个不同的视频里拼凑。真正让人抓狂的不是框架本身,而是缺一张地图。
让模型返回一个人的姓名、年龄和邮箱。大多数初学者拿到的是一段自然语言描述,然后自己写代码从里面硬抠信息。
下一次模型换了个说法,代码就崩了。而它总会换说法的。
Pydantic 专门解决这个问题。你定义好答案要长什么样,Pydantic自动校验AI的回复是否符合这个格式。
from pydantic import BaseModelclass Person(BaseModel): name: str age: int email: str# AI的原始回复会按这个格式自动校验person = Person.model_validate(ai_response)
意思就是:一个人必须有文本姓名、整数年龄、文本邮箱。如果AI返回“二十五”而不是25,代码会立刻报错,而不是等到后面某个环节莫名其妙地崩掉。
一个两秒钟的报错,永远好过两小时的神秘故障。
一个在笔记本里跑的脚本,你朋友摸不到、同事摸不到、付费用户更摸不到。它需要变成一个其他程序能通过网络访问的东西。
FastAPI 把你的Python函数变成一个网址,其他东西都可以往这个地址发请求。
from fastapi import FastAPIapp = FastAPI()@app.post("/summarize")def summarize(text: str): return {"summary": call_ai_model(text)}
这就创建了一个叫 /summarize 的地址。网页、手机App、同事的代码——随便什么,只要往这个地址发文字,就能拿到摘要结果。你的AI不再是私有脚本,而成了一個小小的、能用的服务。
一个只能在你笔记本上跑的脚本,永远只是一份草稿,不管它跑得多好。
这是大多数初学者进步最大的一步。没有FastAPI,你的作品除了你谁也看不见。有了它,任何人只要有地址就能用。
调一个模型很简单。但要把模型连上搜索工具、计算器、另一个AI模型、一个数据库,还要让它们串联工作——手写起来很快就是一锅粥。
LangChain 就是干这个的。它提供了现成的“积木”,用来把AI模型和外部工具连接起来,在不同AI供应商之间切换,把多个步骤串在一起,而你不用每次都重写核心逻辑。截至2026年中,它已经内置支持了超过700种不同的工具和服务。
from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplateprompt = ChatPromptTemplate.from_template("Translate to French: {text}")model = ChatOpenAI()chain = prompt | modelresult = chain.invoke({"text": "Good morning"})
重点看 prompt | model 这一行。
这个管道符号把提示模板直接连到模型上,所以 chain.invoke() 一次调用就完成了填参数、发模型、取回结果。后面如果想换成别的供应商的模型,只要把 ChatOpenAI() 换了就行,链上其他代码完全不用动。
这才是LangChain真正的价值:各个部件之间的连接方式保持不变,哪怕部件本身换了。
但别拿它来解决单步问题——只发一个问题、拿一个答案,根本不需要什么链。LangChain是在你要同时协调多个工具、多个相互依赖的步骤时,才真正派上用场。
很多初学者一上来就学LangChain,只因为它名气最大,然后拿它去做十几行纯Python就能搞定的事。记住:留到真有多块积木要拼的时候再用它。
通用AI模型从没见过你公司的文档、你的个人笔记、或者你们产品的使用手册。你问它这些,它要么说不知道,更糟的是,它会编一个听起来很靠谱的假答案。
LlamaIndex 解决这个问题:它在收到问题的同时,把你的文档放进模型上下文里,让AI用你的资料来回答,而不是瞎猜。
from llama_index.core import SimpleDirectoryReader, VectorStoreIndexdocuments = SimpleDirectoryReader("my_docs").load_data()index = VectorStoreIndex.from_documents(documents)response = index.as_query_engine().query("What is our refund policy?")
第一行读取 my_docs 文件夹里的所有文件,加载到内存。第二行把这些文档建成一个可搜索的索引——这个数据结构能让系统快速找到相关段落,而不是每次提问都重新读一遍所有文件。最后一行在这个索引里搜索和问题相关的内容,然后把那些部分连同问题一起发给AI模型。跑起来,答案就是基于那个文件夹里真实存在的内容生成的。
这个模式有个名字:检索增强生成(RAG)。AI回答之前,系统先从你的文档里找到相关页面,再把页面和问题一起交给AI。
问一个陌生人关于你公司的事,你只能得到猜测。问一个刚拿到正确文件的人,你才能得到答案。
你做出了可靠的、可部署的、能连工具的、基于自己数据的应用。可如果给别人看还得先教他们装Python,那这一切都白搭。
Streamlit 能把一个Python脚本变成可点击的网页,通常只需要不到十行代码。
import streamlit as sttext = st.text_area("粘贴你的文本")if st.button("总结"): st.write(call_ai_model(text))
这就在浏览器里生成了一个文本框、一个按钮、一个显示答案的区域——完全不需要任何Web开发知识。运行这个文件,一个真正的网页就打开了。
这一刻,项目才开始变得“像那么回事”。朋友、同学、早期用户可以直接点来玩,不用你坐在旁边解释终端怎么用。
别在写出一行能跑的代码之前,就把五个框架全装上。这个坑就是让初学者一直卡住的元凶。
再说几句大实话:
如果你的AI根本不需要了解具体文档,你就不用LlamaIndex。很多有用的工具压根不碰RAG。
如果只做单次API调用,你不用LangChain。大多数初学者项目就是“一个模型、一个问题、一个答案”——这完全没问题。
Pydantic 和 FastAPI 值得你早点学,不管做什么项目。几乎所有真实的AI项目都会用到它们,不分难度。
Streamlit 更适合做演示和内部工具,不适合几千人同时用的大规模应用。它用扩展性换取了开发速度。
目标不是集齐五张卡,而是识别出你现在正卡在哪个坎上,然后只学那一个工具。
(对照这张表看看你现在的处境👇)
| 如果你的问题是… | 那就学这个 |
AI返回的格式乱七八糟,没法用 | Pydantic |
别人没法远程用你的AI | FastAPI |
需要让AI调用外部工具或串联多步操作 | LangChain |
想让AI基于你自己的文档内容回答 | LlamaIndex |
需要一个网页界面让非技术人员试用 | Streamlit |
记住五个框架名字从来不是关键。很多人能说出全部五个,但依然什么都没做出来。
真正的能力是:判断你当下这个项目,究竟卡在哪个坎上。这和背文档是两码事,也正是“永远在刷教程的人”和“真正能做成事的人”之间的分水岭。
开头那位初学者,其实不需要第六个框架。他只需要先FastAPI,再Streamlit——按这个顺序,那个周末他朋友就能在浏览器里打开他做的东西了。
找到你正在卡的那个坎。只学一个能跨过它的工具。先把它做出来,再去找下一个坎。
如果觉得有用,欢迎点个「在看」或分享给身边也在学AI的朋友。