FastAPI + LangGraph 从零开发智能实验室预约系统

本集视频在 B 站 BV13hbP6zEUd · P1

去 B 站看本集

00. 智能实验室预约系统介绍

一、系统简介

项目并不是简单地调用一下大模型 API,而是从一个真实的业务系统出发,逐步接入 AI 能力,最终实现一个可以理解用户需求、查询业务数据并辅助完成实验室预约的 AI 应用。

最终项目技术栈:

latex
前端:
Vue3 + Vite + Element Plus

后端:
Python + FastAPI + SQLAlchemy

数据库:
MySQL

AI:
LangChain
ChromaDB
RAG
LangGraph

二、为什么选择这个项目?

很多同学学习 FastAPI 或 AI 应用开发时,经常会遇到一个问题:

学习了很多技术,但是不知道如何把它们组合到一个真实项目中。

例如:

latex
学了 FastAPI

会写 CRUD

学了 LangChain

会调用大模型

学了 RAG

会做知识库问答

学了 LangGraph

会画工作流

但是这些技术之间到底如何结合?

本课程将通过一个完整项目,把这些技术串联起来。

三、项目背景

假设学校拥有多个实验室:

latex
人工智能实验室
机器人实验室
云计算实验室
软件工程实验室

每个实验室拥有不同的:

latex
实验设备
容纳人数
开放时间
使用规则

学生如果想使用实验室,需要:

latex
查看实验室

了解实验室设备

选择预约时间

提交预约申请

管理员审核

传统预约系统中,用户需要自己完成这些操作。

而在本项目中,我们希望引入 AI 能力。

例如用户可以直接告诉系统:

我明天下午需要一个可以容纳 20 人的实验室。

AI 可以理解用户需求,并帮助用户查询符合条件的实验室。

再例如:

哪个实验室有 RTX4090?

AI 可以查询真实的实验室数据。

甚至最终可以实现:

帮我预约明天下午两点到五点的 AI 实验室。

AI 将自动完成:

latex
理解用户需求

提取预约信息

检查实验室

检查预约时间

生成预约方案

用户确认

创建预约

这就是我们最终要完成的:AI 智能实验室预约系统

四、项目开发路线

本课程不会一开始就直接进入 AI Agent 开发。

而是采用:

业务系统 → AI 能力 → AI Agent

这样的开发路线。

第一阶段:实验室预约业务系统

首先完成传统业务系统。

主要功能:

学生端

latex
用户登录
实验室列表
实验室详情
实验室预约
我的预约
取消预约

管理端

latex
实验室管理
设备管理
预约审核
用户管理

技术:

latex
Vue3
+
FastAPI
+
SQLAlchemy
+
MySQL

五、为什么先开发业务系统?

AI 并不是独立存在的。

如果我们希望 AI 可以帮助用户预约实验室,那么首先需要拥有一个完整的业务系统。

例如传统系统中已经存在:

latex
查询实验室
查询实验室设备
查询可预约时间
创建预约
取消预约

这些都是系统的业务能力。

后面 AI Agent 的作用,就是调用这些业务能力。

例如:

latex
传统用户

点击按钮

调用 API

业务系统

数据库

AI 用户:

latex
自然语言

AI Agent

调用业务工具

业务系统

数据库

因此:

AI 并不是重新开发一套业务系统,而是为原有业务系统增加一个智能入口。

六、第二阶段:接入大模型

完成业务系统后,我们首先接入大模型。

实现一个简单的:AI 实验室助手

用户可以通过聊天的方式咨询实验室相关问题。

例如:

实验室开放到几点?

实验室有哪些设备?

如何预约实验室?

这一阶段主要学习:

latex
大模型 API
Prompt
Message
AI 对话

七、第三阶段:RAG 实验室知识库

但是我们很快会发现一个问题。

普通大模型并不知道我们学校实验室的具体规则。

例如:

实验室预约之后可以取消吗?

实验室设备损坏需要怎么办?

这些内容属于项目私有知识。

因此我们需要引入:RAG 检索增强生成

我们将实验室相关资料导入知识库:

latex
实验室预约规则
实验室安全规范
设备使用规范
实验室管理制度

整体流程:

latex
用户问题

检索相关知识

ChromaDB

获取相关文档

大模型

生成回答

通过 RAG,让 AI 可以回答项目中的私有知识。

八、第四阶段:Tool Calling

有了 RAG 之后,AI 可以回答知识问题。

但是:

AI 仍然无法操作真实业务系统。

例如用户问:

现在有哪些实验室可以预约?

这个问题不能只通过 RAG 回答。

因为实验室状态是实时变化的。

所以我们需要让 AI 调用业务系统。

例如提供一个工具:

python
search_laboratory()

AI 根据用户的问题,自动决定是否调用工具。

整体流程:

latex
用户问题

AI

判断是否需要调用工具

Tool Calling

查询数据库

返回真实数据

AI 生成回答

例如:

哪个实验室有 RTX4090?

AI:

latex
调用查询实验室工具

查询 MySQL

获取实验室数据

生成回答

这一阶段,我们将学习:

latex
LangChain
Tool
Tool Calling
Structured Output

九、第五阶段:LangGraph 智能预约

当 AI 可以调用工具之后,我们进一步思考:

如果用户希望 AI 帮他完成预约呢?

例如:

帮我预约明天下午的实验室。

这个任务并不是简单调用一次工具。

AI 需要完成多个步骤:

latex
用户请求

提取预约信息

判断信息是否完整

查询实验室

查询空闲时间

推荐实验室

等待用户确认

创建预约

这是一个典型的:

多步骤、有状态的业务流程。

因此我们引入:LangGraph

通过 LangGraph 构建 AI 工作流。

整体流程:

latex
                    用户请求

                   信息提取

                 信息是否完整?
                  ↙          ↘
                否            是
                ↓              ↓
             继续追问       查询实验室

                            查询时间

                            推荐方案

                            用户确认

                            创建预约

最终实现:AI 智能预约 Agent

十、完整技术架构

最终项目架构如下:

latex
                        Vue3

              ┌──────────┴──────────┐
              │                     │
              ▼                     ▼
         传统业务 API            AI Chat
              │                     │
              ▼                     ▼
           FastAPI              LangGraph
              │                     │
              │              ┌──────┼──────┐
              │              │      │      │
              ▼              ▼      ▼      ▼
            Service        Tool    RAG   Memory
              │              │      │
              └──────────────┼──────┘

                    ┌────────┴────────┐
                    │                 │
                    ▼                 ▼
                  MySQL            ChromaDB

十一、本课程最终学习内容

完成本课程后,你将掌握:

Python 后端开发

latex
Python 基础语法
FastAPI
Pydantic
SQLAlchemy
JWT
MySQL
RESTful API

AI 应用开发

latex
大模型 API
Prompt
LangChain
RAG
ChromaDB
Embedding
Retriever
Tool Calling

AI Agent

latex
Agent
LangGraph
State
Node
Edge
Conditional Edge
ToolNode
Human-in-the-loop

十二、本课程最终项目演示

最终我们将实现这样的效果。

用户:

我明天下午需要一个可以容纳 20 人的实验室。

AI:

latex
正在分析你的需求...

日期:明天
时间:下午
人数:20

正在查询实验室...

找到以下可预约实验室:

1. 人工智能实验室
容量:30人
可预约时间:14:00 - 18:00

2. 软件工程实验室
容量:25人
可预约时间:13:00 - 17:00

用户:

帮我预约人工智能实验室。

AI:

latex
预约信息确认:

实验室:人工智能实验室
日期:2026-xx-xx
时间:14:00 - 17:00

是否确认预约?

用户确认后:

latex
AI 调用预约工具

业务系统

MySQL

创建预约成功

十三、课程开发顺序

整个课程按照以下顺序进行:

latex
第一部分
Python + FastAPI 基础

第二部分
实验室预约业务系统

第三部分
接入大模型

第四部分
RAG 实验室知识库

第五部分
Tool Calling

第六部分
LangGraph

第七部分
AI 智能预约 Agent

十四、本课程的核心思想

希望大家在完成这个项目之后,不只是学会:

如何调用大模型 API。

更重要的是理解:如何让 AI 真正进入业务系统。

传统业务系统:

latex
用户

页面操作

API

Service

Database

AI Agent:

latex
用户自然语言

AI 理解需求

调用 Tool

业务 Service

Database

AI 并不是取代业务系统。

而是:

为传统业务系统提供了一种更加智能的交互方式。