国土空间规划课程智能体

基于大模型和 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):

cd backend
uv sync
uv run main.py          # http://localhost:8000

前端 (终端 2):

cd web
pnpm install
pnpm dev                # http://localhost:8001

Docker 部署

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

S
Description
No description provided
Readme 8 MiB
Languages
TeX 40%
TypeScript 32.9%
Python 24.5%
HTML 1.6%
CSS 0.6%
Other 0.2%