没问题,小白!你的执行力非常强,能自己整理出 v3.0 的笔记,说明你已经具备了很好的“知识结构化”能力。
结合我们制定的“9-12个月 FDE/LLMOps 就业规划”,我为你重新打磨了这份文档,升级为《FDE / LLMOps 专属 Python 实战笔记(终极交付版 v4.0)》。
这次升级,我重点为你补齐了“AI 应用层 (RAG)”和“企业级工程化交付”这两块核心拼图,并重新调整了实战项目,使其完全贴合你的求职目标。
这份文档就是你前 2 个月的“圣经”,请收藏并随时查阅。
📘 FDE / LLMOps 专属 Python 实战笔记(终极交付版 v4.0)
适用对象:有初级容器基础的运维,目标转型 FDE(80%)/ LLMOps(20%)
核心原则:不卷底层算法,只练工程交付;每个知识点都对应真实的 AI 基础设施场景。
总学习时长:约 60-80 小时(每天 2 小时,6-8 周)
📑 总目录
第一部分 学习指南与课程精简 第二部分 Python 语言基础(10章) 第三部分 运维自动化武器库(8章) 第四部分 AI 工程化与 RAG 外挂(14章)🔥 [v4.0 核心升级] 第五部分 FDE 黄金三角实战项目(3个)🔥 [v4.0 核心升级] 附录 速查表、Dockerfile与学习路径第一部分 学习指南与课程精简
一、韩顺平 176 集"断舍离"清单
🔴 坚决跳过(约 45 集,省 25% 时间)
| 章节 | P号 | 内容 | 跳过理由 |
|---|---|---|---|
| 鸡汤/故事 | 002-004, 011 | 人生苦短、小故事、学习方法 | 跟你无关 |
| 字符串驻留 | 029 | 驻留机制 | 底层优化,FDE 用不到 |
| 进制/位运算 | 044-050 | 原码反码补码、位运算(7集) | 嵌入式开发内容 |
| 多重循环画图 | 060-061 | 金字塔、三角形 | 面试算法,非实战 |
| 递归练习 | 072 | 汉诺塔、斐波那契 | 算法课内容 |
| 集合练习 | 090 | 集合课堂练习 | 用得极少 |
| 冒泡/二分查找 | 096-098 | 手写排序和查找 | 用sort()和in即可 |
| 房屋出租系统 | 139-152 | 整个项目(14集) | 传统 CRUD,与大模型无关 |
| pyecharts | 169-176 | 画饼图/地图(8集) | 用 Grafana,不用 Python 画图 |
🟢 必须吃透(约 76 集)
| 章节 | P号 | 内容 | 重要度 | FDE 场景映射 |
|---|---|---|---|---|
| 环境/变量/类型 | 006-032 | Python环境、int/str/bool | ⭐⭐⭐ | 配置参数、环境变量 |
| 运算符/流程控制 | 033-066 | if/for/while/break | ⭐⭐⭐ | 日志过滤、状态判断 |
| 函数/作用域 | 067-075 | 定义/传参/lambda | ⭐⭐⭐ | 封装巡检逻辑、排序 |
| 数据容器 | 076-095 | 列表/字典/字符串/切片 | ⭐⭐⭐⭐ | 解析 JSON/YAML 核心 |
| 面向对象 | 107-138 | 类/继承/多态/注解 | ⭐⭐⭐ | 看懂 LangChain/vLLM 源码 |
| 异常处理 | 153-159 | try/except/raise | ⭐⭐⭐⭐ | API 调用防崩溃、排障 |
| 文件操作 | 160-168 | 读/写/遍历/日志 | ⭐⭐⭐⭐ | 读取客户现场的日志/配置 |
第二部分 Python 语言基础 (速查核心)
注:此部分为你笔记中的精华提炼,建议熟读并理解。
1. 变量与格式化 (f-string)
model_name="Qwen3-32B-AWQ"gpu_memory=24.0# FDE 最常用的输出方式print(f"模型:{model_name}, 显存:{gpu_memory:.1f}GB")2. 数据容器:字典 (dict) —— FDE 的饭碗
大模型 API 返回的 JSON、K8s 的 YAML,解析后全是字典。
# 模拟 LLM API 返回response={"id":"chatcmpl-123","choices":[{"message":{"content":"根因是显存溢出"}}],"usage":{"total_tokens":640}}# 安全读取(防止 KeyError 导致脚本崩溃)content=response.get("choices",[{}])[0].get("message",{}).get("content","无回复")tokens=response.get("usage",{}).get("total_tokens",0)3. 流程控制与日志过滤
log_lines=["INFO start","ERROR CUDA OOM","INFO retry"]forlineinlog_lines:if"INFO"inline:continue# 跳过正常日志if"ERROR"inline:print(f"🔴 发现错误:{line}")break# 找到致命错误立即停止分析4. 异常处理 (防崩溃护城河)
importrequeststry:resp=requests.post("http://localhost:8000/v1/chat",json={...},timeout=10)resp.raise_for_status()exceptrequests.exceptions.Timeout:print("❌ 请求超时,模型可能负载过高")exceptExceptionase:print(f"❌ 未知错误:{e}")第三部分 运维自动化武器库
1. 系统命令 (subprocess)
importsubprocessdefrun_cmd(cmd:str)->dict:result=subprocess.run(cmd,shell=True,capture_output=True,text=True)return{"code":result.returncode,"out":result.stdout,"ok":result.returncode==0}# 检查 GPUr=run_cmd("nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits")2. 正则提取 (re)
importre log='192.168.1.10 - [26/Sep] "POST /v1/chat" 502 0.035'status=re.search(r'HTTP/1\.\d" (\d{3})',log).group(1)# 提取 5023. 文件与路径 (pathlib)
frompathlibimportPath model_dir=Path("/data/models/Qwen3-32B")forfinmodel_dir.glob("*.safetensors"):print(f"📄{f.name}({f.stat().st_size/1024**3:.2f}GB)")第四部分 AI 工程化与 RAG 外挂 🚀 [v4.0 核心升级]
第 19-30 章:进阶工具库 (速查)
- 异步并发 (asyncio + httpx):用于对 vLLM 进行高并发压测(TTFT/TPOT)。
- Web 框架 (FastAPI):编写对外暴露的 API 接口(如 Webhook 接收器)。
- 数据校验 (Pydantic):校验 LLM 输出的 JSON 格式是否符合预期(Structured Output)。
- 监控指标 (prometheus_client):将
nvidia-smi的数据转为 Prometheus 指标。 - 容器控制 (docker SDK):用 Python 代码控制 Docker 容器的启停。
- 重试机制 (tenacity):API 调用失败时,实现指数退避重试。
🔥 第 31 章:RAG 与向量检索 (FDE 必须懂的 AI 应用层)
导师点拨:FDE 不需要推导余弦相似度的数学公式,但你必须知道:当客户抱怨“AI 回答总是胡说八道(幻觉)”时,你应该去检查代码里的“召回数量(Top-K)”和“相似度阈值”,而不是去改大模型。
1. 轻量级向量数据库:ChromaDB
在企业私有化交付中,如果客户数据量不大(几十万条以内),用 ChromaDB 是最快、最轻量的方案。
importchromadbfromchromadb.utilsimportembedding_functions# 1. 初始化客户端 (数据持久化到本地目录)client=chromadb.PersistentClient(path="./chroma_db")# 2. 使用内置的 Embedding 模型 (将文本转为向量)# 注意:实际交付中,通常会调用客户私有的 Embedding APIembedder=embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")# 3. 创建/获取知识库 (Collection)collection=client.get_or_create_collection(name="company_docs",embedding_function=embedder)# 4. 存入文档 (模拟文档切片 Chunking)documents=["公司报销制度:打车费超过200元需要总监审批。","公司报销制度:高铁只能乘坐二等座。","IT部规定:所有服务器必须安装防病毒软件。"]metadatas=[{"source":"HR手册"},{"source":"HR手册"},{"source":"IT规范"}]ids=["doc1","doc2","doc3"]collection.add(documents=documents,metadatas=metadatas,ids=ids)print("✅ 知识库向量化完成!")# 5. 相似度检索 (核心逻辑)query="我出差打车花了300块,谁来批?"results=collection.query(query_texts=[query],n_results=2# Top-K:召回最相关的 2 个片段)print(f"\n🔍 召回的参考文档:\n{results['documents'][0]}")2. 拼装 Prompt 并调用 LLM
拿到参考文档后,喂给大模型。
context="\n".join(results['documents'][0])prompt=f""" 你是一个企业行政助手。请仅根据以下参考资料回答用户的问题。如果资料中没有,请回答“我不知道”。 【参考资料】{context}【用户问题】{query}"""# 接下来将 prompt 发送给 vLLM 或 LLM API...🔥 第 32 章:企业级工程化交付规范 (告别“在我的电脑上能跑”)
导师点拨:外包和正规军的区别,就在于交付规范。把代码扔给客户,如果没有环境隔离和配置管理,部署必翻车。
1. 环境变量与配置管理 (python-dotenv)
绝对、绝对不要把 API Key 和数据库密码硬编码在代码里!
# 项目根目录创建 .env 文件LLM_API_KEY="sk-xxxxxx"VECTOR_DB_PATH="/data/chroma_db"VLLM_ENDPOINT="http://192.168.1.100:8000"# main.pyimportosfromdotenvimportload_dotenv# 自动加载 .env 文件到环境变量load_dotenv()api_key=os.getenv("LLM_API_KEY")ifnotapi_key:raiseValueError("❌ 缺失 LLM_API_KEY,请检查 .env 文件!")2. 依赖锁定 (pip-tools)
不要直接用pip freeze > requirements.txt,它会把底层 C 库的依赖也打包进去,导致换台机器就装不上。
# 1. 安装 pip-toolspipinstallpip-tools# 2. 创建 requirements.in (只写核心依赖)echo"fastapi">requirements.inecho"uvicorn">>requirements.inecho"chromadb">>requirements.inecho"python-dotenv">>requirements.in# 3. 编译生成锁定版本的 requirements.txt (包含所有子依赖的精确版本)pip-compile requirements.in# 交付时,客户只需要执行:pipinstall-rrequirements.txt第五部分 FDE 黄金三角实战项目 🏆 [v4.0 核心升级]
这三个项目,将是你简历上最核心的“弹药”。
项目一(主线):《极简版企业 RAG 知识库 API》
目标:证明你具备 AI 应用能力,能交付一个解决“大模型幻觉”的完整系统。
技术栈:FastAPI + ChromaDB + LLM API + Pydantic
# rag_server.pyfromfastapiimportFastAPI,HTTPExceptionfrompydanticimportBaseModelimportchromadbimportrequestsimportosfromdotenvimportload_dotenv load_dotenv()app=FastAPI(title="企业 RAG 知识库服务")# 初始化向量库client=chromadb.PersistentClient(path="./chroma_db")collection=client.get_or_create_collection("company_docs")classQueryRequest(BaseModel):question:strclassChatResponse(BaseModel):answer:strsources:list[str]@app.post("/chat",response_model=ChatResponse)asyncdefchat(req:QueryRequest):# 1. 检索相关文档results=collection.query(query_texts=[req.question],n_results=2)ifnotresults['documents'][0]:returnChatResponse(answer="知识库中未找到相关信息。",sources=[])context="\n".join(results['documents'][0])sources=[m.get('source','unknown')forminresults['metadatas'][0]]# 2. 拼装 Promptprompt=f"基于以下资料回答问题:\n{context}\n\n问题:{req.question}"# 3. 调用 LLM (这里模拟调用外部 vLLM 或 API)try:# 实际代码:requests.post(os.getenv("VLLM_ENDPOINT") + "/v1/chat/completions", ...)# 这里为了演示,返回模拟数据llm_answer=f"根据资料,答案是... (基于{context[:20]}...)"exceptExceptionase:raiseHTTPException(status_code=500,detail=f"LLM 调用失败:{e}")returnChatResponse(answer=llm_answer,sources=sources)# 启动: uvicorn rag_server:app --reload项目二(支线 1):《GPU 节点巡检与 Prometheus 导出脚本》
目标:证明你具备 AI Infra 基建能力。
技术栈:subprocess + prometheus_client
(代码参考你原笔记中的项目一 + 第二十三章 prometheus_client 结合,将 GPU 状态暴露为/metrics接口供 Grafana 抓取。)
项目三(支线 2):《vLLM 容器看门狗 (Watchdog)》
目标:证明你具备保障 AI 系统高可用的运维能力。
技术栈:requests + docker SDK + 异常重试
(代码参考你原笔记中的项目二,利用 Docker SDK 监听 vLLM 健康接口,实现挂掉自动拉起。)
附录
A. 8 周学习路径表 (打怪升级路线)
| 周数 | 核心目标 | 关键动作 / 产出 |
|---|---|---|
| 第 1 周 | Python 基础与数据结构 | 刷完基础语法,能熟练处理字典和列表。 |
| 第 2 周 | 运维武器库与异常处理 | 写出第一个能自动分析日志报错的 Python 脚本。 |
| 第 3 周 | 网络请求与环境配置 | 调通外部大模型 API,掌握.env配置管理。 |
| 第 4 周 | RAG 核心逻辑 (重点) | 跑通 ChromaDB,实现文档切片、向量化和相似度检索。 |
| 第 5 周 | FastAPI 与项目一整合 | 完成《RAG 知识库 API》,并能用 Postman 成功调用。 |
| 第 6 周 | Docker 化与依赖锁定 | 编写 Dockerfile,将项目一打包成镜像,交付给客户。 |
| 第 7 周 | 监控与高可用 (项目二/三) | 跑通 Prometheus 指标导出,完成 vLLM 看门狗脚本。 |
| 第 8 周 | 简历包装与复盘 | 将三个项目画成架构图,准备面试话术。 |
B. FDE 专属 Dockerfile 模板 (背下来)
当你交付 Python AI 应用时,用这个模板构建镜像,体积小且安全:
# 1. 使用精简版基础镜像 FROM python:3.10-slim # 2. 设置工作目录 WORKDIR /app # 3. 设置环境变量 (防止 Python 产生 .pyc 文件,并让日志实时输出) ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 # 4. 先拷贝依赖文件 (利用 Docker 缓存层,加速后续构建) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple # 5. 拷贝业务代码 COPY . . # 6. 暴露端口 EXPOSE 8000 # 7. 启动命令 (使用 uvicorn 运行 FastAPI) CMD ["uvicorn", "rag_server:app", "--host", "0.0.0.0", "--port", "8000"]👨🏫 导师的最后叮嘱:
小白,这份 v4.0 的文档,就是你的“通关文牒”。
不要把它当成课本去“背诵”,而是把它当成API 字典去“查阅”。现在,理论部分已经结束。作为你的导师,我要给你布置今天的唯一实操任务:
- 在本地新建一个文件夹,创建一个
.env文件,填入一个免费的 LLM API Key(比如智谱 GLM 或阿里通义千问)。- 写一个不到 20 行的 Python 脚本,读取这个
.env,调用 API,让大模型给你讲个笑话。跑通它!如果报错,把报错信息发给我,我们直接在“案发现场”开始第一课!你准备好敲键盘了吗?