从零开始掌握AI应用开发:我的大模型学习路线图(RAG/Agent/MCP/全栈实践)

从零开始掌握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 三步走

  1. 索引(离线):把文档切块 → Embedding向量化 → 存入向量数据库。
  2. 检索(在线):用户问题向量化 → 向量数据库相似度搜索 → 返回Top‑K相关块。
  3. 生成:把检索到的块作为上下文,拼接到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-smallBAAI/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

九、我的学习路线图(建议收藏)

如果你也是大一或大二的学生,希望系统掌握这些技术,可以参考我走过的路:

  1. 打好基础(2周):Python/JS,HTTP,JSON,Git。
  2. 跑通第一个LLM调用(1天):OpenAI API 或 DeepSeek API。
  3. RAG项目(1周):用LangChain + Chroma做一个PDF问答机器人。
  4. Function Calling(2天):写一个可查天气的简单Agent。
  5. Agent进阶(1周):实现ReAct模式的Agent,集成多个工具。
  6. 流式输出(1天):用SSE改造你的RAG,实现打字机效果。
  7. LangChain LCEL(2天):用管道重构代码。
  8. 微调体验(3天):用LoRA微调一个中文情感分类模型。
  9. 了解MCP(半天):运行官方示例,理解协议。
  10. 安全加固(1天):为你的Agent加上Docker沙箱。

十、总结与展望

这两个月我从一个只会写简单CRUD的前端小白,成长为能够独立构建RAG + Agent + 全栈AI应用的"准实习生水平"。技术本身并不难,难的是持续动手不放弃

2026年,AI正在从"对话"走向"行动"。RAG让模型更可信,Agent让模型更有用,MCP让生态更统一。作为学生,我们有最好的时间去学习这些前沿技术,并用它们创造属于自己的"一人公司"产品。

未来我计划继续深入:

  • 多模态RAG(图文混排文档检索)。
  • 多Agent协作(AutoGen / CrewAI)。
  • 边缘端模型部署(WebLLM、Transformer.js)。

希望这篇文章能帮你少走弯路。如果你也在学习AI开发,欢迎在评论区交流,也可以去我的GitHub(SanChen30)看看我的RAG项目。让我们一起在AI浪潮中成长!


相关推荐
menlong9991 小时前
从Prompt狂欢到Agent轨道:20 万行代码真实项目的 AI 工作流实战
前端
huangdong_1 小时前
拼多多商品图片视频批量采集:整店自动分类与高清原图
前端·javascript·音视频
Nightwatchman1 小时前
深入理解内存管理
前端
风骏时光牛马1 小时前
JSON常见踩坑问题与实战避坑案例代码
前端
YAwu111 小时前
从 TodoList 看 React + TypeScript 类型实践
前端·javascript
To_OC1 小时前
折腾两天 HTTP 接口调用,终于把 fetch 和前后端分离从书本概念落地到实操了
javascript·node.js·全栈
喵了几个咪1 小时前
基于 Flutter 的 Headless CMS 全平台前端架构:技术解析与二次开发导引
前端·flutter·架构
wyu729611 小时前
SpringBoot八股的一些概念笔记
java·面试
lantian1 小时前
TypeScript 模块系统核心原理:从ESM到CJS,彻底搞懂模块格式与解析逻辑
前端·typescript·ecmascript 6