1a3730c33c
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
122 lines
3.9 KiB
Markdown
122 lines
3.9 KiB
Markdown
# 国土空间规划课程智能体
|
||
|
||
基于大模型和 RAG 的国土空间规划课程智能问答系统,支持多模态文档理解、知识图谱、AI 绘图和论坛交流。
|
||
|
||
## 功能概览
|
||
|
||
| 模块 | 说明 |
|
||
|------|------|
|
||
| **智能问答** | RAG 检索增强生成,支持流式输出、多模型切换、思考过程展示 |
|
||
| **多模态 RAG** | PDF 图片自动提取 + VLM 描述生成,问答结果中直接展示图片 |
|
||
| **知识库管理** | 上传 PDF/DOCX/TXT/MD 文档,自动分块、向量化入库 |
|
||
| **课程内容** | 知识图谱可视化,教材章节结构浏览 |
|
||
| **AI 绘图** | 文生图(Stable Diffusion)、图生图,SiliconFlow API 驱动 |
|
||
| **论坛** | 分类讨论区,支持发帖、回复 |
|
||
| **用户系统** | JWT 认证,管理员/普通用户角色分离 |
|
||
|
||
## 技术架构
|
||
|
||
```
|
||
用户浏览器
|
||
│
|
||
▼
|
||
Next.js 15 (:8001) ←── Turbopack 构建
|
||
│ /api/* → 反向代理
|
||
│ /images/* → 反向代理
|
||
▼
|
||
FastAPI (:8000)
|
||
├── LangGraph 工作流 (analyze → retrieve → generate)
|
||
├── RAG 管线
|
||
│ ├── text2vec-base-chinese (嵌入)
|
||
│ ├── ChromaDB (向量存储)
|
||
│ ├── pymupdf (PDF 图片提取)
|
||
│ └── Qwen3-VL-8B (图片描述生成)
|
||
├── LLM 路由
|
||
│ ├── SiliconFlow (Qwen/DeepSeek 系列)
|
||
│ └── DeepSeek 官方 API
|
||
└── SQLAlchemy ORM
|
||
├── SQLite (本地开发)
|
||
└── PostgreSQL (Docker 部署)
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
**后端**: Python 3.12 / FastAPI / LangChain / LangGraph / ChromaDB / SQLAlchemy / pymupdf
|
||
|
||
**前端**: Next.js 15 / React 19 / TypeScript / TailwindCSS / shadcn/ui / Zustand
|
||
|
||
**部署**: Docker + Supervisor (单容器) / PostgreSQL
|
||
|
||
## 快速开始
|
||
|
||
### 本地开发
|
||
|
||
**后端** (终端 1):
|
||
```bash
|
||
cd backend
|
||
uv sync
|
||
uv run main.py # http://localhost:8000
|
||
```
|
||
|
||
**前端** (终端 2):
|
||
```bash
|
||
cd web
|
||
pnpm install
|
||
pnpm dev # http://localhost:8001
|
||
```
|
||
|
||
### Docker 部署
|
||
|
||
```bash
|
||
cp env.example .env # 编辑 .env,配置 SILICONFLOW_API_KEY 等
|
||
docker-compose up -d # http://localhost:8001
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
course_agent_od/
|
||
├── backend/
|
||
│ ├── main.py # 应用入口
|
||
│ ├── pyproject.toml # 依赖 (uv)
|
||
│ └── src/
|
||
│ ├── api/ # FastAPI 路由
|
||
│ ├── core/ # 配置、数据库、安全
|
||
│ ├── rag/ # RAG 管线
|
||
│ │ ├── chains.py # RAGChain
|
||
│ │ ├── retrievers.py # KnowledgeBaseRetriever
|
||
│ │ ├── document_loaders.py # PDFImageExtractor
|
||
│ │ ├── vector_store.py # ChromaDB 封装
|
||
│ │ └── prompts.py # 提示词模板
|
||
│ ├── llm/ # LLM 客户端 + VLM
|
||
│ ├── graph/ # LangGraph 工作流
|
||
│ ├── models/ # SQLAlchemy ORM
|
||
│ └── services/ # 业务逻辑
|
||
├── web/
|
||
│ ├── next.config.js # 反向代理配置
|
||
│ └── src/
|
||
│ ├── app/(main)/ # 页面路由
|
||
│ ├── components/chat/ # 聊天组件
|
||
│ ├── store/ # Zustand 状态管理
|
||
│ └── lib/api.ts # API 客户端
|
||
├── data/ # 运行时数据 (.gitignore)
|
||
├── docker/ # Docker + Supervisor 配置
|
||
├── Dockerfile
|
||
└── docker-compose.yml
|
||
```
|
||
|
||
## 环境变量
|
||
|
||
关键变量见 `env.example`:
|
||
|
||
| 变量 | 说明 |
|
||
|------|------|
|
||
| `SILICONFLOW_API_KEY` | SiliconFlow LLM/VLM API 密钥 (必需) |
|
||
| `DATABASE_URL` | SQLite 或 PostgreSQL 连接串 |
|
||
| `SECRET_KEY` | JWT 签名密钥 |
|
||
| `POSTGRES_PASSWORD` | PostgreSQL 密码 (Docker) |
|
||
|
||
## 许可证
|
||
|
||
MIT License
|