356 lines
16 KiB
Markdown
356 lines
16 KiB
Markdown
# AI 智能体开发(LangChain + LangGraph)
|
||
|
||
## 课程简介
|
||
|
||
本课程面向具备 Python 基础语法的大学生和 AI 应用开发初学者,系统讲解如何使用 **大语言模型 API、LangChain、RAG、向量数据库、LangGraph** 构建 AI 智能体应用。
|
||
|
||
课程不是停留在“调用大模型聊天”,而是围绕真实智能体开发流程,帮助学习者理解并实践:如何把大模型、Prompt、工具、知识库、状态管理、流程控制、人机协作、评估与部署组织成一个可运行、可测试、可交付的 AI 应用系统。
|
||
|
||
课程主线如下:
|
||
|
||
```text
|
||
开发环境
|
||
→ 大模型 API 调用
|
||
→ LangChain 基础组件
|
||
→ Prompt / Chain / Parser / Tool
|
||
→ RAG 与向量数据库
|
||
→ LangGraph 状态图
|
||
→ 对话代理、任务调度、多智能体、人机协作
|
||
→ 综合项目实战
|
||
→ 部署、评估与课程总结
|
||
```
|
||
|
||
## 课程定位
|
||
|
||
本课程定位为 **AI 智能体开发入门到项目实战课程**,重点培养以下能力:
|
||
|
||
- 能够独立搭建 Python + Jupyter + LangChain + LangGraph 开发环境;
|
||
- 能够通过 OpenAI 兼容 API 调用大语言模型;
|
||
- 能够使用 Prompt、链式组合、输出解析器构建稳定的大模型应用;
|
||
- 能够定义工具,并让模型根据任务调用工具;
|
||
- 能够使用 RAG 和向量数据库构建知识库问答系统;
|
||
- 能够使用 LangGraph 构建有状态、可分支、可循环、可记忆的智能体流程;
|
||
- 能够理解多智能体协作、任务调度和人机协作机制;
|
||
- 能够完成从需求分析、MVP 实现到部署评估的完整项目闭环。
|
||
|
||
## 适合人群
|
||
|
||
适合以下学习者:
|
||
|
||
- 具备 Python 基础语法的大学生;
|
||
- 想从大模型 API 调用进入 AI 应用开发的初学者;
|
||
- 想系统学习 LangChain、RAG、LangGraph 的开发者;
|
||
- 希望完成 AI 智能体项目作品的学生或工程实践者;
|
||
- 对工具调用、多智能体、人机协作、任务自动化感兴趣的学习者。
|
||
|
||
## 先修要求
|
||
|
||
建议学习者具备:
|
||
|
||
- Python 基础语法;
|
||
- 函数、列表、字典、类、异常处理等基础知识;
|
||
- 基本命令行使用能力;
|
||
- Jupyter Notebook 基础使用经验;
|
||
- 对 HTTP API、JSON、环境变量有初步了解更佳。
|
||
|
||
## 技术栈
|
||
|
||
- **开发工具**:VS Code
|
||
- **编程语言**:Python 3.12.11
|
||
- **虚拟环境**:venv
|
||
- **Notebook 环境**:Jupyter Notebook / ipykernel
|
||
- **主要框架**:LangChain、LangGraph
|
||
- **向量数据库**:ChromaDB
|
||
- **大语言模型**:`qwen3.6-35b-A3b`
|
||
- **向量模型**:`qwen3-embedding`
|
||
- **API 方式**:OpenAI 兼容 API
|
||
- **包管理**:pip + 清华大学 TUNA 镜像源
|
||
- **部署与评估**:FastAPI、Docker、日志、评估集、LangSmith 概念
|
||
|
||
## 环境要求
|
||
|
||
- Python 3.10 及以上版本,推荐 Python 3.12.11
|
||
- 已安装 pip
|
||
- 已安装 VS Code 和 Jupyter 相关插件
|
||
- 具备 OpenAI 兼容 API 访问权限
|
||
- 已获取可用的 `OPENAI_BASE_URL` 和 `OPENAI_API_KEY`
|
||
|
||
## 默认模型配置
|
||
|
||
本课程默认统一使用以下模型:
|
||
|
||
| 类型 | 默认模型 | 用途 |
|
||
| --- | --- | --- |
|
||
| 大语言模型 | `qwen3.6-35b-A3b` | 对话、生成、推理、工具调用、智能体节点 |
|
||
| 向量模型 | `qwen3-embedding` | 文档向量化、相似度检索、RAG 知识库 |
|
||
|
||
如实际 API 服务不支持上述模型,可根据服务提供方说明替换为等价模型,但建议在整门课程中保持模型名称统一,避免调试混乱。
|
||
|
||
## 快速开始
|
||
|
||
### 1. 克隆本仓库
|
||
|
||
```bash
|
||
git clone <仓库地址>
|
||
cd AI智能体开发
|
||
```
|
||
|
||
### 2. 创建虚拟环境
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
```
|
||
|
||
### 3. 激活虚拟环境
|
||
|
||
Windows PowerShell:
|
||
|
||
```powershell
|
||
.venv\Scripts\Activate.ps1
|
||
```
|
||
|
||
macOS / Linux:
|
||
|
||
```bash
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
### 4. 安装依赖
|
||
|
||
```bash
|
||
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||
```
|
||
|
||
### 5. 配置环境变量
|
||
|
||
在项目根目录创建 `.env` 文件:
|
||
|
||
```bash
|
||
OPENAI_BASE_URL=https://your-base-url.com/v1
|
||
OPENAI_API_KEY=sk-your-api-key
|
||
```
|
||
|
||
### 6. 选择 Jupyter 内核
|
||
|
||
在 VS Code 中选择 `.venv` 对应的 Python 解释器或 Jupyter Kernel,然后按顺序打开 `.ipynb` 课件学习。
|
||
|
||
## 学习目标
|
||
|
||
完成课程后,学习者应能够:
|
||
|
||
1. 搭建 Python、VS Code、venv、Jupyter 的 AI 应用开发环境;
|
||
2. 使用 OpenAI 兼容 API 调用 `qwen3.6-35b-A3b`;
|
||
3. 掌握 PromptTemplate、ChatPromptTemplate、Few-shot Prompt 等提示模板方法;
|
||
4. 使用 LangChain 构建 LLM 链、结构化输出链和复杂 Runnable 链;
|
||
5. 定义计算、查询、文件处理等工具,并实现模型驱动的工具调用;
|
||
6. 使用 `qwen3-embedding`、ChromaDB 构建向量检索系统;
|
||
7. 构建完整 RAG 知识库问答应用;
|
||
8. 使用 LangGraph 构建状态图、节点、边、条件边、循环与记忆;
|
||
9. 实现对话代理、任务调度、多智能体协作和人机协作流程;
|
||
10. 完成知识库问答助手、多工具协作智能体、交互式智能体项目;
|
||
11. 理解智能体项目的部署、评估、日志、追踪和上线检查方法。
|
||
|
||
## 推荐学习路径
|
||
|
||
```text
|
||
01-02:环境准备
|
||
03-04:大模型 API 与 LangChain 入门
|
||
05-08:Prompt、LLM 链、输出解析器、链式组合
|
||
09-10:工具定义与工具调用
|
||
11-13:RAG、Embedding、向量数据库、知识库问答
|
||
14-19:LangGraph 状态图基础
|
||
20-23:高级智能体编排
|
||
24-26:综合项目实战
|
||
27-28:部署评估与课程总结
|
||
```
|
||
|
||
> 注:从认知顺序看,建议学习者在学习第 05 课 LLM 链时,同时回看第 06 课 Prompt 模板。后续课程维护时,可考虑将 Prompt 模板提前到 LLM 链之前。
|
||
|
||
## 详细课程大纲
|
||
|
||
### 模块一:开发环境与 Python 项目配置
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 01 | `01_开发环境搭建.ipynb` | 开发环境搭建 | 可运行的本地 Python 虚拟环境 |
|
||
| 02 | `02_Python环境配置.ipynb` | Python 环境配置 | 可复现的 Notebook 开发环境 |
|
||
|
||
本模块帮助学习者完成 VS Code、Python、venv、pip、Jupyter、依赖管理等基础准备,为后续运行大模型和智能体课件打好环境基础。
|
||
|
||
### 模块二:大模型 API 与 LangChain 入门
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 03 | `03_大模型API调用.ipynb` | 大模型 API 调用 | 可调用 `qwen3.6-35b-A3b` 的 Python 示例 |
|
||
| 04 | `04_LangChain概述.ipynb` | LangChain 概述 | 第一个 LangChain 调用链 |
|
||
|
||
本模块介绍 OpenAI 兼容 API、环境变量配置、单轮对话、多轮对话、流式输出,以及 LangChain 的框架定位和组件化开发思想。
|
||
|
||
### 模块三:LangChain 核心组件
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 05 | `05_LLM链.ipynb` | LLM 链 | Prompt + LLM + Parser 基础链 |
|
||
| 06 | `06_Prompt模板.ipynb` | Prompt 模板 | 可复用的 Prompt 模板 |
|
||
| 07 | `07_输出解析器.ipynb` | 输出解析器 | 稳定结构化输出链 |
|
||
| 08 | `08_链式组合.ipynb` | 链式组合 | 多步骤、多分支 Runnable 流程 |
|
||
|
||
本模块学习 LangChain 应用开发的核心组件,包括 Prompt 模板、模型调用、输出解析、Runnable、并行链、分支链和复杂链式组合。
|
||
|
||
### 模块四:工具定义与工具调用
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 09 | `09_工具定义.ipynb` | 工具定义 | 自定义工具集合 |
|
||
| 10 | `10_工具调用.ipynb` | 工具调用 | 能自动选择并调用工具的智能体 |
|
||
|
||
本模块从 `@tool` 工具定义开始,逐步学习计算工具、查询工具、文件工具、多工具注册、模型选择工具、工具执行与最终答案生成。
|
||
|
||
建议在学习本模块后重点理解 Agent 的基本循环:
|
||
|
||
```text
|
||
观察任务 → 思考方案 → 选择工具 → 执行工具 → 观察结果 → 生成答案
|
||
```
|
||
|
||
### 模块五:RAG 与向量数据库
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 11 | `11_检索增强.ipynb` | 检索增强 | 简单本地 RAG 问答链 |
|
||
| 12 | `12_向量数据库.ipynb` | 向量数据库 | 基于 ChromaDB 的本地知识库检索 |
|
||
| 13 | `13_RAG构建.ipynb` | RAG 构建 | 多文档知识库问答系统 |
|
||
|
||
本模块学习 RAG 的完整流程:文档加载、文本切分、`qwen3-embedding` 向量化、向量数据库存储、相似度检索、上下文构造、答案生成和检索效果评估。
|
||
|
||
推荐理解路径:
|
||
|
||
```text
|
||
为什么需要 RAG
|
||
→ 文档如何切分
|
||
→ 文本如何变成向量
|
||
→ 向量数据库如何检索
|
||
→ 检索结果如何交给大模型回答
|
||
→ 如何评估 RAG 效果
|
||
```
|
||
|
||
### 模块六:LangGraph 状态图基础
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 14 | `14_LangGraph概述.ipynb` | LangGraph 概述 | 最小 LangGraph 状态图 |
|
||
| 15 | `15_图结构.ipynb` | 图结构 | StateGraph 总体结构示例 |
|
||
| 16 | `16_状态管理.ipynb` | 状态管理 | 多字段业务状态设计 |
|
||
| 17 | `17_节点与边.ipynb` | 节点与边 | 多节点顺序执行图 |
|
||
| 18 | `18_条件边.ipynb` | 条件边 | 带条件判断的状态图 |
|
||
| 19 | `19_循环与记忆.ipynb` | 循环与记忆 | 支持循环和持久化状态的智能体流程 |
|
||
|
||
本模块学习 LangGraph 的核心思想:用状态图管理复杂智能体流程。学习者将掌握 State、Node、Edge、START、END、条件边、循环、MemorySaver 和 thread_id 等关键概念。
|
||
|
||
### 模块七:高级智能体编排
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 20 | `20_多智能体架构.ipynb` | 多智能体架构 | 多智能体协作工作流 |
|
||
| 21 | `21_对话代理.ipynb` | 对话代理 | 支持上下文记忆的对话机器人 |
|
||
| 22 | `22_任务调度.ipynb` | 任务调度 | 自动化任务调度智能体 |
|
||
| 23 | `23_人机协作.ipynb` | 人机协作 | 带人工审批环节的智能体工作流 |
|
||
|
||
本模块从单智能体流程扩展到多智能体协作,学习监督者模式、流水线模式、辩论模式、对话代理、任务拆解、任务调度、人机确认与审批流程。
|
||
|
||
### 模块八:综合项目实战
|
||
|
||
| 序号 | 课件 | 项目 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 24 | `24_项目实战一.ipynb` | 个人知识库问答助手 | 知识库问答助手 MVP |
|
||
| 25 | `25_项目实战二.ipynb` | 多工具协作型智能体 | 多工具智能体 |
|
||
| 26 | `26_项目实战三.ipynb` | 带交互界面的学习任务助手 | 可交互智能体项目 |
|
||
|
||
三个项目形成如下递进:
|
||
|
||
1. **项目一:个人知识库问答助手**
|
||
聚焦 RAG 思想,完成文档准备、检索、答案生成和参考资料返回。
|
||
|
||
2. **项目二:多工具协作型智能体**
|
||
聚焦工具调用,完成搜索、计算、文件读取、工具选择、工具执行和结果汇总。
|
||
|
||
3. **项目三:带交互界面的学习任务助手**
|
||
聚焦项目封装和交互体验,完成意图识别、条件路由、历史记录和命令行交互。
|
||
|
||
后续可将项目三进一步升级为综合收官项目:整合 RAG、多工具、记忆、条件路由、CLI / Web 交互和自动评估用例。
|
||
|
||
### 模块九:部署、评估与课程总结
|
||
|
||
| 序号 | 课件 | 主题 | 核心产出 |
|
||
| --- | --- | --- | --- |
|
||
| 27 | `27_部署与评估.ipynb` | 部署与评估 | 智能体上线检查与评估流程 |
|
||
| 28 | `28_课程总结.ipynb` | 课程总结 | 后续学习路线与完整知识框架 |
|
||
|
||
本模块帮助学习者理解智能体应用如何从 Notebook Demo 走向工程交付,包括函数封装、命令行运行、API 服务、Docker、云部署、评估集、日志、追踪和上线检查清单。
|
||
|
||
## 实践项目列表
|
||
|
||
| 项目 | 对应课件 | 项目类型 | 关键能力 |
|
||
| --- | --- | --- | --- |
|
||
| 第一个大模型 API 对话程序 | `03_大模型API调用.ipynb` | API 入门 | 环境变量、单轮/多轮/流式调用 |
|
||
| 第一个 LangChain 程序 | `04_LangChain概述.ipynb` | 框架入门 | ChatOpenAI、Prompt、LCEL |
|
||
| 结构化输出链 | `07_输出解析器.ipynb` | 输出解析 | JSON、Pydantic、格式约束 |
|
||
| 智能客服工单处理链 | `08_链式组合.ipynb` | 链式组合 | 分类、摘要、并行分析、回复建议 |
|
||
| 多功能工具集合 | `09_工具定义.ipynb` | 工具定义 | 计算、查询、文件处理工具 |
|
||
| 工具调用型助手 | `10_工具调用.ipynb` | 工具智能体 | 工具选择、工具执行、结果汇总 |
|
||
| 私有文档问答系统 | `11_检索增强.ipynb` | RAG 入门 | 文档加载、切分、检索、生成 |
|
||
| ChromaDB 知识库 | `12_向量数据库.ipynb` | 向量数据库 | 持久化、相似度检索、元数据过滤 |
|
||
| 多文档 RAG 系统 | `13_RAG构建.ipynb` | 完整 RAG | 多文档加载、检索评估、问答生成 |
|
||
| 多智能体协作流程 | `20_多智能体架构.ipynb` | 多智能体 | 监督者、流水线、辩论、协作 |
|
||
| 对话代理机器人 | `21_对话代理.ipynb` | 对话智能体 | messages、检查点、多轮记忆 |
|
||
| 任务调度智能体 | `22_任务调度.ipynb` | 工作流智能体 | 任务拆解、执行、汇总 |
|
||
| 人工审批工作流 | `23_人机协作.ipynb` | Human-in-the-loop | interrupt、resume、人工确认 |
|
||
| 个人知识库问答助手 | `24_项目实战一.ipynb` | 综合项目一 | RAG、检索、回答、依据展示 |
|
||
| 多工具协作型智能体 | `25_项目实战二.ipynb` | 综合项目二 | 搜索、计算、文件读取、工具选择 |
|
||
| 学习任务助手 | `26_项目实战三.ipynb` | 综合项目三 | 意图识别、条件路由、历史记录、交互 |
|
||
| 智能体部署与评估流程 | `27_部署与评估.ipynb` | 工程化项目 | API、评估集、日志、追踪、上线检查 |
|
||
|
||
## 课程优化说明
|
||
|
||
本课程已按以下原则进行优化:
|
||
|
||
- 统一课程主线模型:LLM 使用 `qwen3.6-35b-A3b`,Embedding 使用 `qwen3-embedding`;
|
||
- 清理 Notebook 已保存运行输出,避免残留报错、API Key 前缀和本地运行结果干扰学习;
|
||
- 补齐 `requirements.txt` 中课程实际使用的关键依赖;
|
||
- 将 Claude / Anthropic 调用作为扩展阅读,不作为课程主线默认运行内容;
|
||
- 修正项目实战中的模型注释示例,避免出现与课程默认模型不一致的示例;
|
||
- README 课程目录与实际项目内容保持一致。
|
||
|
||
## 学习建议
|
||
|
||
1. 先完成 01-02 环境配置,确保 `.venv` 和 Jupyter Kernel 正确;
|
||
2. 学习 03 时重点确认 `.env` 中的 API 配置是否可用;
|
||
3. 学习 05-08 时重点掌握 Prompt、链、解析器和 Runnable 的组合方式;
|
||
4. 学习 09-10 时重点理解“工具让模型获得外部能力”;
|
||
5. 学习 11-13 时重点理解 RAG 的每个环节,而不是只运行最终代码;
|
||
6. 学习 14-19 时建议画流程图辅助理解 LangGraph 的状态、节点和边;
|
||
7. 学习 20-23 时关注单智能体到多智能体、人机协作的演进;
|
||
8. 学习 24-26 时建议主动扩展项目数据和功能,形成自己的项目作品;
|
||
9. 学习 27-28 时重点整理项目部署、评估、日志和后续学习路线。
|
||
|
||
## 注意事项
|
||
|
||
- 每份课件都是独立的 `.ipynb` 文件,建议按顺序学习;
|
||
- 运行课件前请确保虚拟环境已激活,并且 Jupyter 内核选择为 `.venv`;
|
||
- 涉及大模型 API 的课件需要正确配置 `OPENAI_BASE_URL` 和 `OPENAI_API_KEY`;
|
||
- 涉及 RAG 和向量数据库的课件默认使用 `qwen3-embedding`;
|
||
- 如果 API 服务不支持工具调用、流式输出或指定模型,请根据服务商文档调整对应参数;
|
||
- 项目实战中的部分案例为了教学稳定性使用规则模拟,学习者可在掌握流程后替换为真实 API 或真实数据源。
|
||
|
||
## 后续拓展方向
|
||
|
||
完成本课程后,可以继续学习:
|
||
|
||
- 更复杂的 ReAct Agent 和规划型 Agent;
|
||
- 多模态智能体;
|
||
- 企业知识库 RAG 优化;
|
||
- Agent 评估体系与自动化测试;
|
||
- LangGraph 生产级工作流;
|
||
- MCP 工具生态;
|
||
- Streamlit / Gradio / FastAPI 智能体 Web 应用;
|
||
- 智能体权限控制、审计、安全与成本优化。
|