本文引用的文件
本技术文档围绕“内容生成步骤”展开,系统性阐述书籍生成的全流程:从大纲生成、章节内容创作到全文整合;深入解析各生成节点的功能与实现、提示词工程、内容模板与质量控制策略;明确生成步骤的依赖关系与执行顺序、前置条件检查与错误处理机制;说明批量生成的协调机制(任务调度、进度同步与状态管理);并提供生成质量评估方法(内容审核、重复检测与合规性检查),以及具体的API调用示例与参数说明。
书籍生成模块采用“LangGraph工作流 + 编排服务 + 节点与策略 + 提示词与解析器”的分层设计:
控制器与存储:对外提供API、持久化与状态推进
graph TB
subgraph "前端"
FE["前端页面<br/>生成入口与状态展示"]
end
subgraph "后端"
CTRL["控制器<br/>book-generator.controller.ts"]
SVC["编排服务<br/>book-generator.service.ts"]
STORE["存储接口<br/>book-generator.store.ts"]
WS["WebSocket服务<br/>websocket.service.ts"]
VID["视频服务<br/>video-generator.service.ts"]
AUD["音频服务<br/>player.service.ts"]
end
subgraph "LangGraph"
GRAPH["状态定义<br/>graph.ts"]
LGCTRL["LangGraph控制器<br/>deploy-package/.../langgraph/controller.js"]
end
FE --> CTRL
CTRL --> SVC
SVC --> STORE
SVC --> WS
SVC --> VID
SVC --> AUD
LGCTRL --> GRAPH
LGCTRL --> STORE
图表来源
章节来源
章节来源
整体架构分为三层:
执行层:LangGraph工作流与节点负责具体生成动作,存储层持久化状态与内容
sequenceDiagram
participant U as "用户"
participant C as "控制器<br/>book-generator.controller.ts"
participant S as "编排服务<br/>book-generator.service.ts"
participant L as "LangGraph控制器<br/>deploy-package/.../langgraph/controller.js"
participant G as "LangGraph状态<br/>graph.ts"
participant ST as "存储<br/>book-generator.store.ts"
U->>C : POST /api/book-generator/books/ : id/batch-generate
C->>S : 创建批量任务并启动后台执行
S->>L : 触发LangGraph生成异步
L->>G : 初始化状态并进入工作流
G->>ST : 写入大纲/章节/内容等中间态
S->>ST : 轮询检查进度并更新
S-->>U : 通过WebSocket推送进度
S->>S : 执行后续步骤音频/视频/合并
图表来源
节点职责:
前言/后记节点:生成并写入元数据
flowchart TD
Start(["开始"]) --> Outline["生成章大纲"]
Outline --> FullOutline["为每章生成节与小节"]
FullOutline --> WriteChapters["逐小节生成正文"]
WriteChapters --> Foreword["生成前言"]
Foreword --> Afterword["生成后记"]
Afterword --> End(["结束"])
图表来源
章节来源
取消机制:通过任务ID设置取消标志,编排器在关键点检查并抛出取消异常
classDiagram
class BatchGenerationOrchestrator {
+taskId : string
+bookId : string
+steps : GenerationStep[]
+execute() Promise
-pushProgress(step, progress, message) void
-checkCancellation() void
-sleep(ms) Promise
-executeGenerateContent() Promise
-executeGenerateAudio() Promise
-executeMergeAudio() Promise
-executeGenerateVideo() Promise
-executeMergeVideo() Promise
}
图表来源
章节来源
取消与状态查询:为每个书籍维护运行中的批量任务,支持取消与状态查询
sequenceDiagram
participant C as "控制器"
participant S as "编排服务"
participant WS as "WebSocket"
participant ST as "存储"
C->>S : POST /books/ : id/batch-generate
S->>WS : 推送任务启动
loop 步骤循环
S->>S : 执行步骤并检查取消
S->>WS : 推送步骤进度
S->>ST : 更新书籍/章节状态
end
S->>WS : 推送完成
C-->>C : 返回任务信息
图表来源
章节来源
解析器实现:大纲解析器、章节解析器、子章节解析器,用于结构化解析LLM输出
classDiagram
class OutlineNode {
+invoke(state) State
}
class FullOutlineNode {
+invoke(state) State
}
class PerChapterNode {
+invoke(state) State
}
class ContentNode {
+invoke(state) State
}
class ForewordNode {
+invoke(state) State
}
class AfterwordNode {
+invoke(state) State
}
OutlineNode --> FullOutlineNode : "生成节与小节"
FullOutlineNode --> PerChapterNode : "逐章"
PerChapterNode --> ContentNode : "生成正文"
ContentNode --> ForewordNode : "生成前言"
ForewordNode --> AfterwordNode : "生成后记"
图表来源
章节来源
章节来源
章节来源
章节来源
解析器与提示词工程为节点提供输入与输出保障
graph LR
CTRL["book-generator.controller.ts"] --> SVC["book-generator.service.ts"]
SVC --> STORE["book-generator.store.ts"]
SVC --> WS["websocket.service.ts"]
SVC --> VID["video-generator.service.ts"]
SVC --> AUD["player.service.ts"]
LGCTRL["langgraph/controller.js"] --> GRAPH["graph.ts"]
LGCTRL --> STORE
图表来源
章节来源
该内容生成体系以LangGraph为核心,结合编排服务与节点策略,实现了从大纲到全文的自动化生成,并通过提示词工程与解析器保证输出质量。批量生成机制提供了完善的任务调度、进度同步与状态管理能力,适合在生产环境中稳定运行。建议持续完善质量评估与合规检查机制,进一步提升生成内容的可用性与安全性。
创建书籍并启动LangGraph生成
对已有书籍启动LangGraph生成
一键完整生成书籍
取消批量生成任务
查询批量生成任务状态
章节来源
章节来源