当前位置: 首页 > news >正文

从零打造 AI 小说创作平台(五):AI 创作流水线(上)——六阶段编排设计

从零打造 AI 小说创作平台(五):AI 创作流水线(上)——六阶段编排设计

系列:从零打造 AI 小说创作平台 NovelForge
篇章:第 5 篇 / 共 10 篇
关键词:LangGraph、StateGraph、Human-in-the-loop、阶段流转、状态持久化


前言

这是整个项目最核心的模块。六阶段创作流水线让用户从一个想法出发,经过结构化的引导,最终生成完整的小说章节。每个阶段都有 AI 辅助,但用户始终保持决策权。


一、六阶段流程

阶段 1: 基础设定 (Foundation) ↓ 用户确认 阶段 2a: 总大纲 (Macro Outline) ↓ 用户确认 阶段 2b: 分卷大纲 (Volume Outline) ↓ 用户确认 阶段 2c: 章节小纲 (Chapter Outline) ↓ 用户确认 阶段 3: 情节校验 (Plot Validation) ↓ 用户确认/修改 阶段 4: 提示词组装 (Prompt Composer) [自动] ↓ 阶段 5: 章节写作 (Chapter Writer) [流式] ↓ 阶段 6: 修订优化 (Revise) ↓ 用户确认 → 下一章 / 完成

二、架构决策:Service 层 + LangGraph

为什么不用纯 LangGraph interrupt?

原始设计是用 LangGraph 的interrupt_after+AsyncPostgresSaver实现 Human-in-the-loop。实际开发中发现几个问题:

  1. 前端需要细粒度控制:每个阶段的 AI 生成需要独立的 SSE 端点,用户可以选择"AI 生成"或"手动编辑"
  2. 状态需要业务层可见:前端需要随时查询当前阶段和历史数据
  3. 阶段间可能有复杂交互:比如基础设定更新后需要同步到项目表

最终方案:

职责
Service 层会话生命周期、阶段流转、状态持久化(JSONB)
LangGraph各阶段内部的 AI 调用编排(节点连接、条件路由)
独立 SSE 端点每个阶段的 AI 生成

三、PipelineState 定义

classPipelineState(TypedDict,total=False):# 基本信息user_id:strproject_id:strsession_id:strcurrent_stage:str# 阶段 1: 基础设定foundation:Optional[FoundationState]# 阶段 2: 大纲macro_outline:Optional[OutlineItem]volume_outlines:Optional[List[OutlineItem]]chapter_outlines:Optional[List[OutlineItem]]# 阶段 3: 情节校验validation_result:Optional[ValidationResult]# 阶段 4: 提示词prompt:Optional[PromptData]# 阶段 5: 章节写作draft:Optional[DraftData]# 阶段 6: 修订revision:Optional
http://www.jsqmd.com/news/869660/

相关文章:

  • 工业视觉实战:手把手教你用YOLOv8训练红外/热成像灰度图(附完整代码修改)
  • 从零到一:手把手教你用SpringBoot+MyBatis搭建企业级员工管理系统(附完整源码)
  • 别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集
  • Keil C51函数指针调用中的递归警告解析与优化
  • Windows右键菜单终极优化指南:用ContextMenuManager实现专业级菜单管理
  • CentOS 7上搞定Dell iDRAC Service Module安装报错(附usbutils依赖解决)
  • Spring Boot项目实战:手把手教你集成银联B2B无卡支付(SM2国密证书版)
  • 别再死记硬背OSI七层模型了!用PacketTracer抓包,手把手带你“看见”HTTP和DNS协议
  • QMCDecode终极指南:如何在Mac上快速解密QQ音乐加密文件
  • 深度掌控AMD Ryzen处理器:SMUDebugTool硬件调试完全指南
  • 如何快速掌握SQLines:开源数据库迁移工具的完整指南
  • 3MF格式插件:如何让Blender成为3D打印数据流转的智能枢纽
  • 想解决考公岗位选择困难?黑龙江领先公考专业指导为你排忧解难 - mypinpai
  • 3步精通Windows右键菜单管理:ContextMenuManager深度指南
  • 量子电路优化:GSI指标原理与实践指南
  • 捡垃圾实战:让ESXi 7.0 U3识别老古董Mellanox ConnectX-2 10G网卡(附驱动修改全流程)
  • ESP32-WROOM-32E和PICO-D4选哪个?手把手教你根据引脚差异做硬件选型
  • 如何一键解锁QQ音乐加密格式?这款Mac专属工具让你轻松实现音乐自由
  • 如何在Mac上免费导出微信聊天记录:WeChatExporter完全指南
  • CST如何将导入的CAD模型由二维更正为三维
  • 5分钟掌握OBS多平台同步直播:obs-multi-rtmp插件终极配置指南
  • Blender3mfFormat插件:3D打印工作流的完美桥梁
  • 别再乱调了!用Audition参数均衡器拯救你的干音(附实战预设)
  • UVa 273 Jack Straws
  • 从九点标定到AX=XB:给机器人视觉新手的两种手眼标定方案选择指南(含OpenCV/C++示例)
  • 别再说单卡跑不动大模型了:手把手教你用Hugging Face的Gradient Accumulation和Checkpointing榨干GPU显存
  • Mamba-2架构与LaCT并行计算技术解析
  • 从零到一:基于Linux平台与华中8型数控系统,构建车间级数据采集监控看板
  • 告别Arduino IDE!用Thonny给ESP8266刷MicroPython固件的保姆级图文教程
  • 怎样快速配置WarcraftHelper:魔兽争霸3兼容性优化的终极解决方案