Files
ai-agent-dev/README.md
2026-07-08 10:09:42 +08:00

356 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-08Prompt、LLM 链、输出解析器、链式组合
09-10工具定义与工具调用
11-13RAG、Embedding、向量数据库、知识库问答
14-19LangGraph 状态图基础
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 应用;
- 智能体权限控制、审计、安全与成本优化。