# 内容生成步骤 **本文引用的文件** - [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md) - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) - [server/src/modules/book-generator/book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts) - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [deploy-package/server/modules/book-generator/langgraph/index.js](file://deploy-package/server/modules/book-generator/langgraph/index.js) - [server/src/modules/book-generator/stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts) - [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts) - [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts) - [server/src/modules/book-generator/strategies/sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) - [server/src/modules/book-generator/strategies/per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [server/src/modules/book-generator/strategies/one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [server/src/modules/book-generator/strategies/selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [server/src/modules/book-generator/strategies/types.ts](file://server/src/modules/book-generator/strategies/types.ts) - [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts) - [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts) - [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts) - [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts) - [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts) - [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts) - [server/src/modules/book-generator/nodes/plan.node.ts](file://server/src/modules/book-generator/nodes/plan.node.ts) - [server/src/modules/book-generator/nodes/sections.node.ts](file://server/src/modules/book-generator/nodes/sections.node.ts) - [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) - [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [server/src/modules/book-generator/prompts/templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) ## 目录 1. [引言](#引言) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考量](#性能考量) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 引言 本技术文档围绕“内容生成步骤”展开,系统性阐述书籍生成的全流程:从大纲生成、章节内容创作到全文整合;深入解析各生成节点的功能与实现、提示词工程、内容模板与质量控制策略;明确生成步骤的依赖关系与执行顺序、前置条件检查与错误处理机制;说明批量生成的协调机制(任务调度、进度同步与状态管理);并提供生成质量评估方法(内容审核、重复检测与合规性检查),以及具体的API调用示例与参数说明。 ## 项目结构 书籍生成模块采用“LangGraph工作流 + 编排服务 + 节点与策略 + 提示词与解析器”的分层设计: - LangGraph工作流:定义状态、节点与执行顺序,驱动生成过程 - 编排服务:负责批量生成的步骤编排、进度推送与状态管理 - 节点与策略:实现具体生成步骤(大纲、章节内容、前言、后记等) - 提示词与解析器:支撑提示词工程与输出解析 - 控制器与存储:对外提供API、持久化与状态推进 ```mermaid graph TB subgraph "前端" FE["前端页面
生成入口与状态展示"] end subgraph "后端" CTRL["控制器
book-generator.controller.ts"] SVC["编排服务
book-generator.service.ts"] STORE["存储接口
book-generator.store.ts"] WS["WebSocket服务
websocket.service.ts"] VID["视频服务
video-generator.service.ts"] AUD["音频服务
player.service.ts"] end subgraph "LangGraph" GRAPH["状态定义
graph.ts"] LGCTRL["LangGraph控制器
deploy-package/.../langgraph/controller.js"] end FE --> CTRL CTRL --> SVC SVC --> STORE SVC --> WS SVC --> VID SVC --> AUD LGCTRL --> GRAPH LGCTRL --> STORE ``` 图表来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts) - [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts) - [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts) - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) 章节来源 - [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md) - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) ## 核心组件 - LangGraph状态与工作流:定义生成过程中的状态字段、进度计算与节点连接 - 批量生成编排器:顺序执行内容生成、音频生成、音频合并、视频生成、视频合并,并推送进度 - 书籍生成控制器:提供LangGraph创建与生成、批量生成、取消与状态查询API - 书籍生成类型定义:统一书籍、章节、任务、配置与提示词模板的类型 - 节点与策略:实现大纲生成、章节内容生成、前言/后记生成等具体步骤 - 提示词工程与解析器:支撑提示词构建、模板化与输出解析 章节来源 - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts) ## 架构总览 整体架构分为三层: - API层:控制器暴露REST接口,接收用户请求并触发生成流程 - 编排层:编排服务按步骤顺序执行,监控状态与进度,处理取消与异常 - 执行层:LangGraph工作流与节点负责具体生成动作,存储层持久化状态与内容 ```mermaid sequenceDiagram participant U as "用户" participant C as "控制器
book-generator.controller.ts" participant S as "编排服务
book-generator.service.ts" participant L as "LangGraph控制器
deploy-package/.../langgraph/controller.js" participant G as "LangGraph状态
graph.ts" participant ST as "存储
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 : 执行后续步骤音频/视频/合并 ``` 图表来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) - [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) ## 详细组件分析 ### LangGraph状态与节点 - 状态字段:包含书籍ID、主题、生成层级、描述、规划结果、当前处理章节、已完成章节列表、完成标志、错误信息、进度、失败章节列表等 - 节点职责: - 大纲生成节点:生成章级大纲 - 全量大纲节点:生成节与小节,并入库 - 章节内容写入节点:逐小节生成正文并入库 - 前言/后记节点:生成并写入元数据 ```mermaid flowchart TD Start(["开始"]) --> Outline["生成章大纲"] Outline --> FullOutline["为每章生成节与小节"] FullOutline --> WriteChapters["逐小节生成正文"] WriteChapters --> Foreword["生成前言"] Foreword --> Afterword["生成后记"] Afterword --> End(["结束"]) ``` 图表来源 - [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) 章节来源 - [server/src/modules/book-generator/README.md](file://server/src/modules/book-generator/README.md) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) ### 批量生成编排器 - 步骤类型:内容生成、音频生成、音频合并、视频生成、视频合并 - 执行流程: - 初始化书籍信息与步骤列表 - 顺序执行每个步骤,推送进度与状态 - 步骤间检查取消标志,异常捕获并返回失败步骤 - 完成后更新书籍进度至100 - 进度计算:步骤级进度与节点级进度结合,确保只增不减 - 取消机制:通过任务ID设置取消标志,编排器在关键点检查并抛出取消异常 ```mermaid 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 } ``` 图表来源 - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) 章节来源 - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) ### 书籍生成控制器 - LangGraph创建与生成API:支持新建书籍并启动LangGraph生成,或对已有书籍再次生成 - 批量生成API:启动内容、音频、合并、视频、合并的完整流程,支持步骤选择 - 取消与状态查询:为每个书籍维护运行中的批量任务,支持取消与状态查询 ```mermaid 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 : 返回任务信息 ``` 图表来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts) 章节来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) ### 节点与策略 - 节点实现:大纲节点、全量大纲节点、章节内容节点、前言节点、后记节点、按章节点、规划节点、章节节点等 - 策略实现:顺序策略、按章策略、一步大纲策略、策略选择器与类型定义 - 解析器实现:大纲解析器、章节解析器、子章节解析器,用于结构化解析LLM输出 ```mermaid 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 : "生成后记" ``` 图表来源 - [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts) - [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts) - [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts) - [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts) - [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts) - [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts) 章节来源 - [server/src/modules/book-generator/nodes/outline.node.ts](file://server/src/modules/book-generator/nodes/outline.node.ts) - [server/src/modules/book-generator/nodes/full-outline.node.ts](file://server/src/modules/book-generator/nodes/full-outline.node.ts) - [server/src/modules/book-generator/nodes/per-chapter.node.ts](file://server/src/modules/book-generator/nodes/per-chapter.node.ts) - [server/src/modules/book-generator/nodes/content.node.ts](file://server/src/modules/book-generator/nodes/content.node.ts) - [server/src/modules/book-generator/nodes/foreword.node.ts](file://server/src/modules/book-generator/nodes/foreword.node.ts) - [server/src/modules/book-generator/nodes/afterword.node.ts](file://server/src/modules/book-generator/nodes/afterword.node.ts) ### 提示词工程与内容模板 - 提示词构建器:根据书籍类型、目标受众、风格、规模等动态构建系统提示与章节提示 - 模板化:提供大纲、章节、前言、后记的模板接口,便于扩展与定制 - 质量控制:通过模板约束与解析器校验,确保输出结构化与一致性 章节来源 - [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [server/src/modules/book-generator/prompts/templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) ### 解析器与结构化输出 - 大纲解析器:解析章节与小节的层级结构 - 章节解析器:解析节内的要点与字数估算 - 子章节解析器:解析小节的具体内容与结构 章节来源 - [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) ### LangGraph控制器与索引 - LangGraph控制器:提供创建书籍并启动生成、对已有书籍再次生成的API - LangGraph索引:导出类型与生成器,供编排服务调用 章节来源 - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [deploy-package/server/modules/book-generator/langgraph/index.js](file://deploy-package/server/modules/book-generator/langgraph/index.js) ## 依赖关系分析 - 控制器依赖编排服务与WebSocket服务,编排服务依赖存储、视频与音频服务 - LangGraph控制器依赖LangGraph状态与存储,驱动生成流程 - 节点与策略相互协作,形成完整的生成链路 - 解析器与提示词工程为节点提供输入与输出保障 ```mermaid 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 ``` 图表来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [server/src/modules/book-generator/book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [server/src/services/websocket.service.ts](file://server/src/services/websocket.service.ts) - [server/src/modules/video-generator/video-generator.service.ts](file://server/src/modules/video-generator/video-generator.service.ts) - [server/src/modules/player/player.service.ts](file://server/src/modules/player/player.service.ts) - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [server/src/modules/book-generator/graph.ts](file://server/src/modules/book-generator/graph.ts) ## 性能考量 - 并行化:LangGraph工作流支持多节点并行生成,提升吞吐 - 轮询与异步:内容生成与音频/视频生成采用异步与轮询方式,避免阻塞 - 进度只增不减:通过reducer确保进度不会因回退而倒退,提升可观测性 - 超时与重试:编排器设置最大等待时间与步骤级重试策略,增强鲁棒性 - 存储与索引:数据库表对bookId、level、parentId建立索引,加速查询与更新 ## 故障排查指南 - 取消任务:通过取消API设置取消标志,编排器在检查点抛出异常并返回已执行步骤 - 失败定位:编排器记录失败步骤与错误信息,可通过状态查询接口查看 - 状态监控:通过WebSocket推送实时进度,前端可据此展示生成状态 - 常见问题: - 书籍不存在:创建/生成前需验证书籍ID - 步骤无效:仅允许指定的步骤集合 - 任务冲突:同一书籍同时只能有一个批量任务运行 - 超时:若超过最大等待时间,编排器会抛出超时错误 章节来源 - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [server/src/modules/book-generator/book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) ## 结论 该内容生成体系以LangGraph为核心,结合编排服务与节点策略,实现了从大纲到全文的自动化生成,并通过提示词工程与解析器保证输出质量。批量生成机制提供了完善的任务调度、进度同步与状态管理能力,适合在生产环境中稳定运行。建议持续完善质量评估与合规检查机制,进一步提升生成内容的可用性与安全性。 ## 附录 ### API参考与调用示例 - 创建书籍并启动LangGraph生成 - 方法与路径:POST /api/book-generator/langgraph/books - 请求体参数: - title: string(必填) - description: string(必填) - bookScale: string(可选,默认“标准教程”) - 返回:任务启动状态与bookId - 对已有书籍启动LangGraph生成 - 方法与路径:POST /api/book-generator/langgraph/books/:id/generate - 路径参数:id(书籍ID) - 返回:任务启动状态与taskId - 一键完整生成书籍 - 方法与路径:POST /api/book-generator/books/:id/batch-generate - 路径参数:id(书籍ID) - 请求体参数: - steps: GenerationStep[](可选,步骤集合,默认全部) - 返回:任务ID、书籍ID、状态与步骤列表 - 取消批量生成任务 - 方法与路径:POST /api/book-generator/books/:id/batch-generate/cancel - 返回:taskId与bookId - 查询批量生成任务状态 - 方法与路径:GET /api/book-generator/books/:id/batch-generate/status - 返回:是否运行中、taskId与bookId 章节来源 - [deploy-package/server/modules/book-generator/langgraph/controller.js](file://deploy-package/server/modules/book-generator/langgraph/controller.js) - [server/src/modules/book-generator/book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) ### 生成质量评估方法 - 内容审核:对生成的小节正文进行关键词过滤与敏感词检测 - 重复检测:对章节内容进行去重与相似度比对,避免AI生成重复段落 - 合规性检查:依据法律法规与平台规范,对前言、后记与正文进行合规性扫描 - 结构完整性:通过解析器校验大纲与章节结构,确保层级正确与字数估算合理 章节来源 - [server/src/modules/book-generator/prompts/builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [server/src/modules/book-generator/parsers/outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [server/src/modules/book-generator/parsers/section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [server/src/modules/book-generator/parsers/subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts)