从零打造 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
Google 原生 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

几个关键设计决策:

  1. 深度设定用 JSONBnovel_foundations.deep_settings 存储 6 个结构化子字段(角色系统/冲突设计/风格指南/世界观/力量体系/金手指),兼顾灵活性和查询性能
  2. 流水线状态用 JSONBpipeline_sessions.state 存储完整的 PipelineState,每次阶段流转时更新
  3. 软删除:projects 和 chapters 使用 deleted_at 字段
  4. 数据隔离在 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 的核心技术决策:

  1. 单体 + LangGraph 内嵌:简化部署,保持开发效率
  2. Service 层状态管理 + LangGraph 编排:比纯 LangGraph interrupt 更灵活
  3. OpenAI 兼容模式统一接入:一套代码支持 8 个提供商
  4. BYOK 优先:用户自带 Key,平台 Key 降级
  5. 每阶段独立 SSE 端点:前端可自由控制生成节奏
  6. JSONB 存储结构化数据:深度设定和流水线状态都用 JSONB,灵活且高效
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐