这套东西的名字听起来像是又一个"AI 全栈速成班",但把课纲拆开看,它的重心其实压在 FastAPI 这一侧:从 miniconda 环境、Pydantic 校验、路由传参一路铺到依赖注入、APIRouter 拆分、PostgreSQL 连接与 ORM 建模。也就是说,它并不是那种上来就丢几个 LangChain 链式调用、让你复制粘贴跑通一个 demo 就结束的课。招聘系统只是它选定的落地场景,真正想让你练出来的是"能把一个带数据库、带模型调用、带业务校验的后端服务自己搭起来"这件事。对收藏型学习者来说,这个定位决定了它值不值得占硬盘——如果你只想看大模型花式玩法,前面三分之一会显得啰嗦;如果你一直卡在"模型能跑但不会做成接口"这一步,那前面这些恰恰是最该精看的部分。

它到底解决什么问题:把模型调用塞进一个能上线的服务里

智能招聘这个场景,本质上不是让你训练一个模型,而是让你把"简历解析、岗位匹配、候选人打分"这类能力包装成别人能调用的接口。难点从来不在提示词写得多漂亮,而在于:请求进来怎么校验、参数缺失怎么办、数据库里的岗位和简历怎么关联、模型返回的 JSON 解析失败怎么兜底、多个接口怎么分模块组织。这些全是后端工程的活。课纲里 Pydantic 占了两节、依赖注入占了两节、APIRouter 单独一节、数据库从安装到连接再到 ORM 建模占了三节,这个配比说明作者是认真在处理工程问题,而不是把 FastAPI 当装饰。

换句话说,这门课要解决的是"最后一公里"问题。很多人已经会用 LangChain 拼检索、拼对话、拼结构化输出,但做出来的东西是一个脚本,换个输入就要改代码,没法给别人用。招聘系统这个外壳逼着你把模型能力变成服务:前端或调用方传一份简历文本进来,服务返回结构化的候选人信息和匹配理由。中间涉及的表单校验、异步请求、数据库读写、异常处理,全是脚本阶段不会遇到的。学完之后你未必能做出一个商业级招聘平台,但你能把任何一个小模型能力做成有接口、有存储、有校验的服务,这个迁移价值比场景本身大得多。

适合什么基础:会写 Python 就行,但别指望它教你 Python

从 miniconda 使用开始讲,说明课程默认你可能连环境管理都不太熟,这一点对新手是友好的。但友好不等于零基础。Pydantic 那两节讲的是模型定义、字段类型、校验规则,如果你对 Python 的类型注解、类、装饰器没有基本概念,看这两节会很吃力,因为讲师不会停下来解释什么是类属性。依赖注入两节更是如此,它涉及函数作为参数传递、作用域、缓存这些偏设计的思路,纯新手容易看得云里雾里,只能照抄。

比较合适的入门状态是:能独立写几十行的 Python 脚本,用过 requests 发请求,知道什么是 JSON,最好摸过一点 Flask 或 Django 的视图函数。有这个底子,FastAPI 的装饰器路由、请求对象、响应模型都能很快对上号。数据库部分从 PostgreSQL 安装讲到连接操作和 ORM 模型定义,如果你之前只用过 SQLite 或者干脆没碰过数据库,这几节需要你动手装一遍、连一遍,光看不练等于没看。反过来,如果你已经写过 FastAPI 项目,前面十来节可以两倍速过,把注意力放在依赖注入的组织方式和 ORM 建模的字段设计上。

建议先看哪几块:三处精看,两处快进

第一处精看是 Pydantic 两节加上 Body 传参。招聘系统的核心数据流就是"请求体进来、校验、转成内部对象",Pydantic 模型定义得好不好,直接决定后面模型调用时拿到的数据干不干净。很多人做 AI 应用翻车就翻在这里:简历文本里字段缺失、类型不对,直接喂给模型或者写进数据库,报错还找不到原因。把这两节吃透,你会养成先定义结构再写逻辑的习惯,这个习惯在整门课后面反复被用到。

第二处精看是依赖注入两节加 APIRouter。这两块是 FastAPI 区别于 Flask 的地方,也是把代码从"一个文件几百行"拆成"可维护项目"的关键。依赖注入可以用来复用数据库会话、复用当前用户、复用模型客户端,APIRouter 则把简历相关接口、岗位相关接口分开。招聘系统里至少会有简历和岗位两条业务线,正好拿它练手。第三处精看是 ORM 模型定义,重点看字段类型怎么选、关系怎么建,因为简历和岗位之间大概率存在匹配关系,这块设计不好,后面查数据会非常别扭。

可以快进的是 miniconda 安装和 PostgreSQL 安装这两节,如果你本地环境已经就绪,直接跳过,遇到问题再回来查。FastAPI 入门那节也可以快速扫过,它主要是建立整体印象,真正的细节在后面几节里。这种"两头快、中间慢"的看法,能让你把时间花在真正影响项目结构的章节上,而不是耗在装软件上。

学完能独立做什么:一个能跑通闭环的小服务

把课纲走完并动手练过,你应该能独立做出这样一个东西:一个 FastAPI 服务,启动后连接 PostgreSQL,暴露几个接口,一个用来提交简历文本并落库,一个用来提交岗位信息,一个用来触发匹配并返回打分和理由。接口有请求体校验,有统一的路由前缀,数据库操作通过 ORM 完成,模型调用被封装在依赖或服务层里。它不漂亮,但闭环是通的:数据进得来、存得下、模型调得动、结果出得去。

更实际的收获是排错能力。你会知道 422 报错通常是请求体不符合 Pydantic 模型,知道数据库连接失败要先看连接串和驱动,知道模型返回解析失败要在哪一层加兜底。这些东西没法从"看懂"里获得,只能从"跑挂再修好"里获得。所以这门课的价值不在于你最后拥有一个招聘系统,而在于你拥有了一个可以往里塞任何 AI 能力的后端骨架,下次要做简历筛选、客服问答、文档问答,换的是业务逻辑,不是整套架构。

资料怎么配合练习:别按顺序刷,按项目阶段拆

这套资料最大的坑是"顺序看完就以为学会了"。视频课时短、节奏快,很容易一路点头看完,合上电脑什么也没留下。建议按项目阶段拆开用:第一阶段只碰环境、FastAPI 入门、Pydantic、路由和各类传参,目标是能写出一个带校验的 echo 接口;第二阶段碰依赖注入和 APIRouter,目标是把第一阶段那个接口拆成两个模块、抽出公共依赖;第三阶段碰数据库三节,目标是让接口能读写 PostgreSQL;最后才是把模型调用接进去,做招聘匹配。每个阶段结束都自己写一遍,不要边看边抄。

另外,LangChain 相关的内容建议放在数据库跑通之后再回头细看,因为只有当你手里有一个能存数据、能返回结构的服务时,你才会真正理解为什么要用链、为什么要做输出解析、为什么要把提示词和业务逻辑分开。如果一上来就钻模型部分,很容易变成调参游戏,学完还是不知道怎么落地。每节视频看完,用一句话写下"这节解决了我项目里的哪个具体问题",写不出来就说明这节可以跳过或者需要重看,这个自检方法比任何笔记都管用。

课程目录

章节 1:FastAPI 试看 课时 1 视频【FastAPI】miniconda 使用 课时 2 视频【FastAPI】FastAPI 入门 课时 3 视频【FastAPI】Pydantic 基本使用(1) 课时 4 视频【FastAPI】Pydantic 基本使用(2) 课时 5 视频【FastAPI】路由传参 课时 6 视频【FastAPI】Body 传参 课时 7 视频【FastAPI】Cookie 传参 课时 8 视频【FastAPI】Header 传参 课时 9 视频【FastAPI】依赖注入(1) 课时 10 视频【FastAPI】依赖注入(2) 课时 

11 视频【FastAPI】APIRouter 使用 课时 

12 视频【FastAPI】PostgreSQL 安装 课时 

13 视频【FastAPI】数据库连接操作 课时 

14 视频【FastAPI】ORM 模型定义 课时 

15 视频【FastAPI】迁移 ORM 模型 课时 

16 视频【FastAPI】一对一关系 课时 

17 视频【FastAPI】一对多关系 课时 

18 视频【FastAPI】多对多关系 课时 

19 视频【FastAPI】创建 AsyncSession 对象 课时 

20 视频【FastAPI】删除数据 课时 

21 视频【FastAPI】查找数据 课时 

22 视频【FastAPI】修改数据 章节 2:TypeScript 课时 

23 视频【TypeScript】Node 环境搭建 课时 

24 视频【TypeScript】TypeScript 介绍 课时 

25 视频【TypeScript】第一个 TypeScript 程序 课时 26 视频【TypeScript】数据类型(1) 课时 27 视频【TypeScript】数据类型(2) 课时 28 视频【TypeScript】数据类型(3) 课时 

29 视频【TypeScript】类型断言 课时 

30 视频【TypeScript】函数可选和默认参数 课时 

31 视频【TypeScript】函数剩余参数 课时 

32 视频【TypeScript】函数重载 课时 

33 视频【TypeScript】类的定义和实例化 课时 

34 视频【TypeScript】访问修饰符和只读属性 课时 

35 视频【TypeScript】setter 和 getter 课时 

36 视频【TypeScript】静态成员和 this 课时 

37 视频【TypeScript】类的继承 课时 

38 视频【TypeScript】类的多态 课时 

39 视频【TypeScript】接口的定义和使用 课时 

40 视频【TypeScript】接口继承和类实现接口 课时 

41 视频【TypeScript】interface 和 type 对比 课时 

42 视频【TypeScript】泛型基本使用 课时 

43 视频【TypeScript】泛型约束 课时 

44 视频【TypeScript】泛型其他 章节 3:Vue 基础 课时 

45 视频【Vue】VSCode 插件安装 课时 

46 视频【Vue】Vue 项目创建 课时 

47 视频【Vue】vue 快捷代码片段 课时 

48 视频【Vue】ref 响应式变量 课时 

49 视频【Vue】reactive 响应式变量 课时 50 视频【Vue】模板语法(1) 课时 51 视频【Vue】模板语法(2) 课时 52 视频【Vue】模板语法(3) 课时 

53 视频【Vue】计算属性 课时 

54 视频【Vue】监听属性 课时 

55 视频【Vue】生命周期函数 课时 

56 视频【Vue】组件 – 定义属性 课时 

57 视频【Vue】组件 – 定义事件 课时 

58 视频【Vue】组件 – 定义 v-model 课时 

59 视频【Vue】组件 – 定义插槽 课时 

60 视频【Vue】VueRouter – 基本使用 课时 

61 视频【Vue】VueRouter – 嵌套路由 课时 

62 视频【Vue】VueRouter – 路由传参 课时 

63 视频【Vue】VueRouter – 编程式导航 课时 

64 视频【Vue】VueRouter – 导航守卫 课时 

65 视频【Vue】Pinia 的使用详解 章节 4:LangChain 课时 

66 视频【LangChain】准备工作 课时 

67 视频【LangChain】创建模型对象 课时 

68 视频【LangChain】模型配置和 token 统计 课时 

69 视频【LangChain】消息类型 课时 

70 视频【LangChain】工具定义和注册 课时 

71 视频【LangChain】工具定义参数配置 课时 72 视频【LangChain】ToolRuntime-State 课时 73 视频【LangChain】ToolRuntime-Context 课时 74 视频【LangChain】ToolRuntime-Store 课时 75 视频【LangChain】ToolRuntime-Config 课时 

76 视频【LangChain】短期记忆 – 概述 课时 

77 视频【LangChain】短期记忆 – 实现 课时 

78 视频【LangChain】短期记忆 – PostgreSQL 实现 课时 

79 视频【LangChain】短期记忆 – 消息裁剪 课时 

80 视频【LangChain】短期记忆 – 消息删除 课时 

81 视频【LangChain】短期记忆 – 消息总结 课时 

82 视频【LangChain】短期记忆 – 工具 课时 

83 视频【LangChain】短期记忆 – 中间件 课时 

84 视频【LangChain】流式输出 – 基本使用 课时 

85 视频【LangChain】流式输出 – 三种模式 课时 

86 视频【LangChain】流式输出 – 混合模式 课时 

87 视频【LangChain】流式输出 – 异步事件流 课时 

88 视频【LangChain】结构化输出 – 智能体输出 课时 

89 视频【LangChain】结构化输出 – 错误处理 课时 

90 视频【LangChain】中间件 – 人工介入 课时 

91 视频【LangChain】中间件 – 模型工具调用限制 课时 

92 视频【LangChain】中间件 – 模型工具重试机制 课时 

93 视频【LangChain】中间件 – 敏感信息检测 课时 

94 视频【LangChain】中间件 – 复杂任务拆解 课时 

95 视频【LangChain】中间件 – 大量工具选择优化 课时 

96 视频【LangChain】自定义中间件 – 概述 课时 

97 视频【LangChain】自定义中间件 – 装饰器 课时 

98 视频【LangChain】自定义中间件 – 类定义 课时 

99 视频【LangChain】自定义中间件 – 案例分析 章节 5:LangGraph 课时 1

00 视频【LangGraph】基本使用 课时 1

01 视频【LangGraph】State 使用详解 课时 1

02 视频【LangGraph】Edge 边 – 条件 + Send+Command 课时 1

03 视频【LangGraph】可视化 Graph 课时 1

04 视频【LangGraph】持久化 – checkpointer 课时 1

05 视频【LangGraph】持久化 – 时间旅行 课时 1

06 视频【LangGraph】持久化 – 长期记忆 课时 1

07 视频【LangGraph】持续运行 – 概念讲解 课时 1

08 视频【LangGraph】持续运行 – interrupt 课时 1

09 视频【LangGraph】持续运行 – 异常后恢复 课时 1

10 视频【LangGraph】流式输出 – 基本使用 课时 1

11 视频【LangGraph】流式输出 – token 课时 1

12 视频【LangGraph】流式输出 – custom 课时 1

13 视频【LangGraph】子图 – 节点中调用 课时 1

14 视频【LangGraph】子图 – 当作节点 章节 6: 项目实战试看 课时 1

15 视频【准备】项目介绍 课时 1

16 视频【后端】项目初始化 课时 1

17 视频【后端】连接数据库 课时 1

18 视频【后端】ORM 模型创建 课时 1

19 视频【后端】将 ORM 同步到数据库中 课时 1

20 视频【后端】git 管理项目 课时 1

21 视频【后端】User&Department Repo 课时 1

22 视频【后端】初始化数据 课时 1

23 视频【后端】登录功能实现 课时 1

24 视频【后端】测试登录 API 课时 1

25 视频【后端】访问限制依赖实现 课时 1

26 视频【后端】FastAPI 使用 Redis 缓存 课时 1

27 视频【后端】邮件发送配置 课时 1

28 视频【后端】邀请用户 课时 1

29 视频【后端】注册功能实现 课时 1

30 视频【后端】员工列表实现 课时 1

31 视频【后端】修改员工状态 课时 1

32 视频【后端】获取部门列表 课时 1

33 视频【后端】钉钉 OAuth2 – 准备工作 课时 1

34 视频【后端】钉钉 OAuth2 – 生成登录链接 课时 1

35 视频【后端】钉钉 OAuth2 – 获取 token 课时 1

36 视频【后端】钉钉 OAuth2 – 获取用户信息 课时 1

37 视频【后端】获取钉钉账号信息 课时 1

38 视频【后端】分配 HR 管理的部门 课时 1

39 视频【后端】添加职位信息 课时 1

40 视频【后端】获取职位列表 课时 1

41 视频【后端】删除职位 课时 1

42 视频【后端】邮箱机器人 课时 1

43 视频【后端】简历上传 课时 1

44 视频【后端】PaddleOCR 服务集成 课时 1

45 视频【后端】创建简历 OCR 解析任务 课时 1

46 视频【后端】获取简历解析任务状态 课时 1

47 视频【后端】候选人信息智能体完成 课时 1

48 视频【后端】添加候选人 课时 1

49 视频【后端】创建候选人智能体架子 课时 1

50 视频【后端】候选人评分工具 课时 1

51 视频【后端】获取面试官空闲时间工具 课时 1

52 视频【后端】发送面试时间工具 课时 1

53 视频【后端】确认面试时间工具 课时 1

54 视频【后端】拒绝面试工具 课时 1

55 视频【后端】获取当前时间工具 课时 1

56 视频【后端】测试候选人智能体 课时 1

57 视频【后端】定时调度智能体 课时 1

58 视频【后端】集成智能体到路由中 课时 1

59 视频【后端】获取候选人列表 课时 1

60 视频【后端】更新候选人状态 课时 1

61 视频【后端】获取候选人 AI 得分信息 课时 1

62 视频【后端】获取最近 7 天候选人数量 课时 1

63 视频【前端】集成 Tailwind 和 ElementPlus 课时 1

64 视频【前端】创建 userStore 课时 1

65 视频【前端】登录页面实现 课时 1

66 视频【前端】登录功能实现 课时 1

67 视频【前端】注册功能完成 课时 1

68 视频【前端】主页面布局完成 课时 1

69 视频【前端】dashboard 页面完成 课时 1

70 视频【前端】职位管理完成 课时 1

71 视频【前端】PaddleOCR Bug 解决