从零开始掌握AI应用开发:我的大模型学习路线图(RAG/Agent/MCP/全栈实践)
一名大一学生的2026 AI技术学习笔记,内含大量代码实战与踩坑经验
写在前面
2026年被称为"Agent元年",也是"One Person Company"概念火热的一年。作为东华理工大学软件工程专业的大一学生,我花了整整两个月系统学习了当前AI应用开发的主流技术栈。从最初的只会调OpenAI API,到能够独立搭建一个完整的RAG问答系统、设计一个能查天气/发邮件的Agent,再到理解MCP协议、微调、蒸馏等进阶概念------这个过程充满挑战,但也极其过瘾。
这篇文章是我学习过程中的完整笔记 + 实战心得。我会站在一个初学者的角度,把那些晦涩的名词(RAG、Agent、MCP、Function Calling、Embedding、向量数据库、LangChain、SSE、微调、蒸馏、沙箱......)用最通俗的语言讲清楚,并且附上可以直接运行的代码片段。希望对你也有帮助。
一、为什么我需要学这些东西?
大二学长给我看了一份实习生招聘JD,上面写着:
熟悉RAG、Agent开发,有LangChain/LlamaIndex使用经验,了解Function Calling、MCP协议者优先。
我当时一脸懵:RAG是什么?Agent是机器人吗?MCP又是什么?
于是我开始了"补课"之旅。下面的这些概念,是我认为目前AI应用开发的"地基"。
二、地基:JSON + SSE + HTTP/HTTPS
2.1 JSON ------ 无处不在的"通用语"
JSON(JavaScript Object Notation)是前后端沟通的语言,也是Function Calling中描述函数参数的格式。你一定要手写熟练。
json
{
"name": "my_agent",
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string" }
}
}
}
}
]
}
2.2 SSE ------ 让AI"打字"给你看
SSE(Server-Sent Events)是实现流式输出(打字机效果)的底层技术。它让服务器可以多次向客户端推送数据。我之前一直以为ChatGPT那种逐字输出很神奇,其实原理很简单:
javascript
// 前端
const eventSource = new EventSource('/chat-stream');
eventSource.onmessage = (event) => {
console.log(event.data); // 逐字追加到页面
};
javascript
// Node.js 后端
res.writeHead(200, {
'Content-Type': 'text/event-stream',
});
res.write(`data: ${token}\n\n`);
注意 :生产环境一定要用 HTTPS,SSE完全支持加密传输。不要像我一开始那样在http下调试,会被浏览器block。
三、RAG:让大模型"有据可依"
3.1 核心思想
RAG(Retrieval-Augmented Generation,检索增强生成) = 先查资料,再回答问题。它完美解决了大模型的"幻觉"和"知识截止"问题。
3.2 三步走
- 索引(离线):把文档切块 → Embedding向量化 → 存入向量数据库。
- 检索(在线):用户问题向量化 → 向量数据库相似度搜索 → 返回Top‑K相关块。
- 生成:把检索到的块作为上下文,拼接到Prompt中,交给LLM生成答案。
3.3 手写一个极简RAG(使用Chroma + OpenAI)
python
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
# 1. 加载文档
loader = TextLoader("my_note.txt")
docs = loader.load()
# 2. 分块
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# 3. 向量化 + 存库
vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())
# 4. 检索器
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
# 5. 问答链
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-3.5-turbo"),
retriever=retriever
)
answer = qa.run("总结一下笔记中关于RAG的内容")
💡 小提示:Chunk大小和重叠是关键参数,需要在自己的数据上调优。
3.4 进阶:向量数据库与Embedding
- 向量数据库 :存储向量的专用库。我用过 Chroma (开发快速)和 Milvus(生产级)。
- Embedding :把文本映射到高维向量空间的模型,比如
text-embedding-3-small、BAAI/bge-large-zh。 - 相似度:常用余弦相似度,值越接近1越相似。
四、Function Calling + Agent:让AI"动手做"
4.1 Function Calling 是什么?
让大模型输出结构化的函数调用请求(JSON),而不是直接输出自然语言。这是Agent能够调用工具的基础。
python
# 定义工具
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
}
}
}
}]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "北京天气怎样?"}],
tools=tools
)
# 模型返回 tool_calls,不是直接答案
4.2 Agent:自主规划 + 循环执行
Agent = LLM + 规划 + 记忆 + 工具调用循环。最经典的ReAct模式:Thought → Action → Observation → (循环) → Final Answer。
我用LangChain实现过一个简单Agent,可以查天气和计算器:
python
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
def get_weather(city):
return f"{city} 晴天 25°C"
tools = [
Tool(name="Weather", func=get_weather, description="获取天气"),
Tool(name="Calculator", func=lambda x: eval(x), description="计算表达式")
]
agent = initialize_agent(tools, OpenAI(), agent="zero-shot-react-description")
agent.run("北京和上海哪个城市更热?温差是多少?")
重要:Agent每调用一次工具就会消耗一次LLM请求,注意成本控制。
五、MCP:AI的"USB‑C"接口
MCP(Model Context Protocol,模型上下文协议)是由Anthropic提出的开放协议,旨在标准化大模型与外部数据源/工具的交互方式。
它的架构三部分:
- MCP Host:Claude Desktop、Cursor等AI应用。
- MCP Client:内嵌在Host中,负责通信。
- MCP Server:暴露资源(文件、数据库)和工具(函数)。
有了MCP,以后不同模型和不同工具之间不再需要为每个组合写适配代码。虽然现在还在早期,但我认为这是未来的趋势。我已经尝试运行了文件系统的MCP Server,确实很方便。
六、LangChain:把积木搭成城堡
LangChain是目前最流行的LLM应用编排框架。它把上面讲的Loader、Splitter、Embeddings、VectorStore、Chain、Agent、Memory都封装成了标准组件。
我最喜欢的是 LCEL (LangChain Expression Language),用管道符 | 就能组合复杂流程:
python
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
而且LCEL天然支持流式输出(.stream())、异步、并行,强烈推荐。
七、微调 vs 蒸馏 vs 量化 vs LoRA
当你想让模型变得更"专"或更"轻"时,这四个技术经常一起出现。
| 技术 | 一句话解释 | 需要数据 | 改变参数? |
|---|---|---|---|
| 微调 | 用专业数据继续训练模型 | 几百~几万条 | 是 |
| 蒸馏 | 用大模型教小模型 | 大模型生成的软标签 | 是(训练小模型) |
| 量化 | 把权重从32位浮点数压缩到8/4位整数 | 无/少量校准数据 | 否(仅转换格式) |
| LoRA | 冻结原模型,只训练低秩旁路 | 几百条 | 极小(低秩矩阵) |
实际开发中,我经常用 LoRA 微调(显存占用低),最后用 GPTQ 量化部署到CPU上,推理速度快很多。
八、沙箱 ------ Agent的安全底线
当你的Agent能够执行任意代码时,必须使用沙箱!
沙箱是一个受限的执行环境,恶意代码无法破坏宿主机。
在开发代码解释器类Agent时,我是这样做的:
bash
docker run --rm --network none --read-only --memory=512m python:3.11 python -c "$CODE"
--network none:断网,防止数据外泄。--read-only:文件系统只读。--memory=512m:限制内存。
也可以使用成熟的云沙箱服务,如E2B。
九、我的学习路线图(建议收藏)
如果你也是大一或大二的学生,希望系统掌握这些技术,可以参考我走过的路:
- 打好基础(2周):Python/JS,HTTP,JSON,Git。
- 跑通第一个LLM调用(1天):OpenAI API 或 DeepSeek API。
- RAG项目(1周):用LangChain + Chroma做一个PDF问答机器人。
- Function Calling(2天):写一个可查天气的简单Agent。
- Agent进阶(1周):实现ReAct模式的Agent,集成多个工具。
- 流式输出(1天):用SSE改造你的RAG,实现打字机效果。
- LangChain LCEL(2天):用管道重构代码。
- 微调体验(3天):用LoRA微调一个中文情感分类模型。
- 了解MCP(半天):运行官方示例,理解协议。
- 安全加固(1天):为你的Agent加上Docker沙箱。
十、总结与展望
这两个月我从一个只会写简单CRUD的前端小白,成长为能够独立构建RAG + Agent + 全栈AI应用的"准实习生水平"。技术本身并不难,难的是持续动手 和不放弃。
2026年,AI正在从"对话"走向"行动"。RAG让模型更可信,Agent让模型更有用,MCP让生态更统一。作为学生,我们有最好的时间去学习这些前沿技术,并用它们创造属于自己的"一人公司"产品。
未来我计划继续深入:
- 多模态RAG(图文混排文档检索)。
- 多Agent协作(AutoGen / CrewAI)。
- 边缘端模型部署(WebLLM、Transformer.js)。
希望这篇文章能帮你少走弯路。如果你也在学习AI开发,欢迎在评论区交流,也可以去我的GitHub(SanChen30)看看我的RAG项目。让我们一起在AI浪潮中成长!