从零打造 AI 小说创作平台(一):系统架构与技术蓝图
从零打造 AI 小说创作平台(一):系统架构与技术蓝图
系列:从零打造 AI 小说创作平台 NovelForge
篇章:第 1 篇 / 共 10 篇
关键词:系统架构、技术选型、FastAPI、Vue3、LangGraph、多模型路由
前言
这个系列完整记录一个 AI 小说创作平台——NovelForge 的设计与开发全过程。它不是一个简单的"调 API 生成文本"的 Demo,而是一个具备完整工程化能力的产品:六阶段创作流水线、多模型路由、向量记忆 RAG、流式输出、版本管理、Admin 后台。
NovelForge 的核心理念:AI 是创作伙伴,不是替代者。用户通过结构化流水线引导 AI 生成大纲和章节,每个环节都保留编辑和决策权。
一、产品全景
1.1 三种创作模式
| 模式 | 场景 | 流程 |
|---|---|---|
| 创作模式 | 从零写一本新书 | 基础设定 → 三级大纲 → 情节校验 → 章节生成 |
| 续写模式 | 对已有章节续写 | 上下文分析 → 参数配置 → 流式续写 |
| 改编模式 | 对已有章节改编 | 原文解析 → 改编配置 → 流式生成 → 版本对比 |
另外还有独立的润色模式(6 种润色方向:文笔/节奏/情感/对白/钩子/自定义)。
1.2 功能模块
模块一:用户与认证 → JWT + 邮箱验证 + BYOK 加密
↓
模块二:项目管理 → 项目/章节 CRUD + 自动保存 + 软删除
↓
模块三:AI 创作流水线 → 六阶段编排 + 多模型路由 + 流式输出
↓
模块四:生成历史与版本 → 历史记录 + 锁定 + 版本回溯
↓
模块五:Admin 后台 → 用户管理 + 平台 Key + 类型/模型供应商管理
二、整体架构
用户浏览器 (Vue3 + Vuetify 3)
| HTTPS / SSE
Nginx (静态资源 + 反向代理)
|
FastAPI + LangGraph (Python 3.12)
├── API Layer (12 个 Router 模块, ~80 个端点)
├── Middleware (JWT / RateLimit / CORS / RequestID / Logging)
├── Service Layer (20 个 Service)
├── Repository Layer (12 个 Repository)
├── Pipeline Layer (LangGraph StateGraph)
│ ├── CreationPipeline (六阶段, 9 个节点)
│ ├── ContinueGraph (两阶段)
│ └── AdaptGraph (两阶段)
├── LLM Router (8 个提供商, OpenAI 兼容模式)
└── Crypto Layer (AES-256-GCM)
| | |
PostgreSQL 16 Redis 7 Qdrant 1.9
(13 张表) (限流/黑名单) (向量记忆)
为什么选单体?
这是面向个人作者的创作工具,初期用户量有限。单体的优势:
- Docker Compose 一键启动,部署简单
- LangGraph 与业务逻辑共享进程,无跨服务通信开销
- Service Layer 边界清晰,后续拆分成本低
三、技术选型
3.1 后端核心
| 技术 | 选型理由 |
|---|---|
| FastAPI | async 原生,SSE 支持简洁,自动生成 OpenAPI 文档 |
| LangGraph | StateGraph + 条件路由,天然支持多阶段编排 |
| LangChain | 统一调用 8 个 LLM 提供商 |
| SQLAlchemy 2.0 async | Python 主流 ORM,async 支持完善 |
| pydantic-settings | 类型安全的配置管理,多环境支持 |
3.2 LLM 多模型路由
这是项目最有特色的设计之一。实际支持 8 个提供商:
| 提供商 | 接入方式 | 默认模型 |
|---|---|---|
| OpenAI | 原生 | gpt-4o-mini |
| Anthropic | 原生 SDK | claude-3-5-sonnet |
| 原生 SDK | gemini-1.5-pro | |
| 智谱 AI | OpenAI 兼容 | glm-4-plus |
| DeepSeek | OpenAI 兼容 | deepseek-chat |
| Moonshot | OpenAI 兼容 | moonshot-v1-8k |
| 通义千问 | OpenAI 兼容 | qwen-plus |
| 自定义 | OpenAI 兼容 | 用户指定 |
核心思路:大部分国内模型都支持 OpenAI 兼容 API,统一用 ChatOpenAI + 自定义 base_url 接入,代码量极小。
3.3 前端
| 技术 | 选型理由 |
|---|---|
| Vue 3.4 | Composition API + TypeScript,开发体验好 |
| Vuetify 3 | Material Design,深色/浅色主题开箱即用 |
| Pinia | 官方推荐状态管理,TS 友好 |
| Vite 5 | 极速 HMR |
| 原生 EventSource | 接收 SSE 流式输出 |
3.4 基础设施
| 技术 | 用途 |
|---|---|
| PostgreSQL 16 | 业务数据,JSONB 存储深度设定和流水线状态 |
| Redis 7 | Token 黑名单、API 限流、缓存 |
| Qdrant 1.9 | 向量记忆(跨章节一致性) |
| Docker Compose | 本地开发环境一键启动 |
| MailHog | 开发环境邮件捕获 |
四、数据库设计概览
13 张表,核心关系:
users ──┬── projects ──┬── chapters ── generation_jobs
│ ├── novel_foundations ── outlines
│ ├── pipeline_sessions
│ └── world_state_snapshots
├── user_api_keys
└── (admin) platform_api_keys
独立管理表:genres, model_providers
几个关键设计决策:
- 深度设定用 JSONB:
novel_foundations.deep_settings存储 6 个结构化子字段(角色系统/冲突设计/风格指南/世界观/力量体系/金手指),兼顾灵活性和查询性能 - 流水线状态用 JSONB:
pipeline_sessions.state存储完整的 PipelineState,每次阶段流转时更新 - 软删除:projects 和 chapters 使用
deleted_at字段 - 数据隔离在 Service 层:所有查询强制附加
user_id过滤,不依赖数据库 RLS
五、流水线编排设计
5.1 混合架构
实际采用 Service 层状态管理 + LangGraph 图编排 的混合方案:
- Service 层:会话生命周期、阶段流转控制、状态持久化
- LangGraph:各阶段内部的 AI 调用编排
- 独立 SSE 端点:每个阶段的 AI 生成都有独立的流式接口
这比纯 LangGraph interrupt 方案更灵活——每个阶段可以独立触发,前端可以自由控制节奏。
5.2 阶段流转
FOUNDATION → MACRO_OUTLINE → VOLUME_OUTLINE → CHAPTER_OUTLINE
→ PLOT_VALIDATION → PROMPT_COMPOSER → CHAPTER_WRITER → REVISE
每个 Human-in-the-loop 阶段支持三种用户操作:
- approve:确认,自动推进到下一阶段
- reject:拒绝,回退重新生成
- edit:编辑内容,合并到状态
5.3 并发控制
- 单用户最多 3 个活跃会话
- 同一项目只能有 1 个活跃会话
- 超出限制返回 409 Conflict
六、安全设计
| 安全项 | 方案 |
|---|---|
| 认证 | JWT HS256,Access 1h + Refresh 7d,退出加 Redis 黑名单 |
| 密码 | bcrypt work factor 12 |
| API Key | AES-256-GCM 加密存库,前端不接触明文 |
| 数据隔离 | Service 层强制 user_id 过滤 |
| 限流 | Redis 滑动窗口,登录 10 次/分钟 |
| CORS | 仅允许配置的前端域名 |
| 错误处理 | 不暴露内部细节,不区分"不存在"和"无权限" |
七、API 规模
整个系统约 80 个 API 端点:
| 模块 | 端点数 |
|---|---|
| 认证 | 10 |
| 项目/章节 | 11 |
| 基础设定 + AI 增强 | 9 |
| 大纲 | 5 |
| 流水线会话 | 9 |
| AI 生成(SSE) | 7 |
| 续写/改编/润色 | 5 |
| 生成历史 | 4 |
| 用户设置 | 4 |
| 系统配置 | 2 |
| Admin 后台 | 14 |
八、开发节奏
| Sprint | 周期 | 内容 |
|---|---|---|
| Sprint 0 | 1 周 | 项目脚手架、Docker 环境、代码规范 |
| Sprint 1 | 1 周 | 用户认证(注册/登录/JWT/邮箱验证) |
| Sprint 2 | 2 周 | 项目管理(CRUD/自动保存/章节排序) |
| Sprint 3 | 3 周 | AI 创作流水线(六阶段/SSE/多模型) |
| Sprint 4 | 2 周 | 续写/改编/润色/生成历史 |
| Sprint 5 | 1 周 | Admin 后台 + 基础设定优化 |
小结
NovelForge 的核心技术决策:
- 单体 + LangGraph 内嵌:简化部署,保持开发效率
- Service 层状态管理 + LangGraph 编排:比纯 LangGraph interrupt 更灵活
- OpenAI 兼容模式统一接入:一套代码支持 8 个提供商
- BYOK 优先:用户自带 Key,平台 Key 降级
- 每阶段独立 SSE 端点:前端可自由控制生成节奏
- JSONB 存储结构化数据:深度设定和流水线状态都用 JSONB,灵活且高效
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)