内容生成步骤.md 23 KB

内容生成步骤

本文引用的文件

  • server/src/modules/book-generator/README.md
  • server/src/modules/book-generator/book-generator.controller.ts
  • server/src/modules/book-generator/book-generator.service.ts
  • server/src/modules/book-generator/graph.ts
  • server/src/modules/book-generator/book-generator.types.ts
  • deploy-package/server/modules/book-generator/langgraph/controller.js
  • deploy-package/server/modules/book-generator/langgraph/index.js
  • server/src/modules/book-generator/stage-manager.ts
  • server/src/modules/book-generator/book-generator.store.ts
  • server/src/services/websocket.service.ts
  • server/src/modules/video-generator/video-generator.service.ts
  • server/src/modules/player/player.service.ts
  • server/src/modules/book-generator/strategies/sequential.strategy.ts
  • server/src/modules/book-generator/strategies/per-chapter.strategy.ts
  • server/src/modules/book-generator/strategies/one-step-outline.strategy.ts
  • server/src/modules/book-generator/strategies/selector.ts
  • server/src/modules/book-generator/strategies/types.ts
  • server/src/modules/book-generator/nodes/content.node.ts
  • server/src/modules/book-generator/nodes/outline.node.ts
  • server/src/modules/book-generator/nodes/full-outline.node.ts
  • server/src/modules/book-generator/nodes/foreword.node.ts
  • server/src/modules/book-generator/nodes/afterword.node.ts
  • server/src/modules/book-generator/nodes/per-chapter.node.ts
  • server/src/modules/book-generator/nodes/plan.node.ts
  • server/src/modules/book-generator/nodes/sections.node.ts
  • server/src/modules/book-generator/parsers/outline.parser.ts
  • server/src/modules/book-generator/parsers/section.parser.ts
  • server/src/modules/book-generator/parsers/subsection.parser.ts
  • server/src/modules/book-generator/prompts/builder.ts
  • server/src/modules/book-generator/prompts/templates.ts

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本技术文档围绕“内容生成步骤”展开,系统性阐述书籍生成的全流程:从大纲生成、章节内容创作到全文整合;深入解析各生成节点的功能与实现、提示词工程、内容模板与质量控制策略;明确生成步骤的依赖关系与执行顺序、前置条件检查与错误处理机制;说明批量生成的协调机制(任务调度、进度同步与状态管理);并提供生成质量评估方法(内容审核、重复检测与合规性检查),以及具体的API调用示例与参数说明。

项目结构

书籍生成模块采用“LangGraph工作流 + 编排服务 + 节点与策略 + 提示词与解析器”的分层设计:

  • 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
    

图表来源

  • server/src/modules/book-generator/book-generator.controller.ts
  • server/src/modules/book-generator/book-generator.service.ts
  • server/src/modules/book-generator/book-generator.store.ts
  • server/src/services/websocket.service.ts
  • server/src/modules/video-generator/video-generator.service.ts
  • server/src/modules/player/player.service.ts
  • deploy-package/server/modules/book-generator/langgraph/controller.js
  • server/src/modules/book-generator/graph.ts

章节来源

  • server/src/modules/book-generator/README.md
  • server/src/modules/book-generator/book-generator.controller.ts
  • server/src/modules/book-generator/book-generator.service.ts

核心组件

  • LangGraph状态与工作流:定义生成过程中的状态字段、进度计算与节点连接
  • 批量生成编排器:顺序执行内容生成、音频生成、音频合并、视频生成、视频合并,并推送进度
  • 书籍生成控制器:提供LangGraph创建与生成、批量生成、取消与状态查询API
  • 书籍生成类型定义:统一书籍、章节、任务、配置与提示词模板的类型
  • 节点与策略:实现大纲生成、章节内容生成、前言/后记生成等具体步骤
  • 提示词工程与解析器:支撑提示词构建、模板化与输出解析

章节来源

  • server/src/modules/book-generator/graph.ts
  • server/src/modules/book-generator/book-generator.service.ts
  • server/src/modules/book-generator/book-generator.controller.ts
  • server/src/modules/book-generator/book-generator.types.ts

架构总览

整体架构分为三层:

  • API层:控制器暴露REST接口,接收用户请求并触发生成流程
  • 编排层:编排服务按步骤顺序执行,监控状态与进度,处理取消与异常
  • 执行层: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 : 执行后续步骤音频/视频/合并
    

图表来源

  • server/src/modules/book-generator/book-generator.controller.ts
  • server/src/modules/book-generator/book-generator.service.ts
  • deploy-package/server/modules/book-generator/langgraph/controller.js
  • server/src/modules/book-generator/graph.ts
  • server/src/modules/book-generator/book-generator.store.ts

详细组件分析

LangGraph状态与节点

  • 状态字段:包含书籍ID、主题、生成层级、描述、规划结果、当前处理章节、已完成章节列表、完成标志、错误信息、进度、失败章节列表等
  • 节点职责:

    • 大纲生成节点:生成章级大纲
    • 全量大纲节点:生成节与小节,并入库
    • 章节内容写入节点:逐小节生成正文并入库
    • 前言/后记节点:生成并写入元数据

      flowchart TD
      Start(["开始"]) --> Outline["生成章大纲"]
      Outline --> FullOutline["为每章生成节与小节"]
      FullOutline --> WriteChapters["逐小节生成正文"]
      WriteChapters --> Foreword["生成前言"]
      Foreword --> Afterword["生成后记"]
      Afterword --> End(["结束"])
      

图表来源

  • server/src/modules/book-generator/README.md
  • server/src/modules/book-generator/graph.ts

章节来源

  • server/src/modules/book-generator/README.md
  • server/src/modules/book-generator/graph.ts

批量生成编排器

  • 步骤类型:内容生成、音频生成、音频合并、视频生成、视频合并
  • 执行流程:
    • 初始化书籍信息与步骤列表
    • 顺序执行每个步骤,推送进度与状态
    • 步骤间检查取消标志,异常捕获并返回失败步骤
    • 完成后更新书籍进度至100
  • 进度计算:步骤级进度与节点级进度结合,确保只增不减
  • 取消机制:通过任务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
    }
    

图表来源

  • server/src/modules/book-generator/book-generator.service.ts

章节来源

  • server/src/modules/book-generator/book-generator.service.ts

书籍生成控制器

  • LangGraph创建与生成API:支持新建书籍并启动LangGraph生成,或对已有书籍再次生成
  • 批量生成API:启动内容、音频、合并、视频、合并的完整流程,支持步骤选择
  • 取消与状态查询:为每个书籍维护运行中的批量任务,支持取消与状态查询

    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
  • server/src/modules/book-generator/book-generator.service.ts
  • server/src/services/websocket.service.ts

章节来源

  • server/src/modules/book-generator/book-generator.controller.ts

节点与策略

  • 节点实现:大纲节点、全量大纲节点、章节内容节点、前言节点、后记节点、按章节点、规划节点、章节节点等
  • 策略实现:顺序策略、按章策略、一步大纲策略、策略选择器与类型定义
  • 解析器实现:大纲解析器、章节解析器、子章节解析器,用于结构化解析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 : "生成后记"
    

图表来源

  • server/src/modules/book-generator/nodes/outline.node.ts
  • server/src/modules/book-generator/nodes/full-outline.node.ts
  • server/src/modules/book-generator/nodes/per-chapter.node.ts
  • server/src/modules/book-generator/nodes/content.node.ts
  • server/src/modules/book-generator/nodes/foreword.node.ts
  • server/src/modules/book-generator/nodes/afterword.node.ts

章节来源

  • server/src/modules/book-generator/nodes/outline.node.ts
  • server/src/modules/book-generator/nodes/full-outline.node.ts
  • server/src/modules/book-generator/nodes/per-chapter.node.ts
  • server/src/modules/book-generator/nodes/content.node.ts
  • server/src/modules/book-generator/nodes/foreword.node.ts
  • server/src/modules/book-generator/nodes/afterword.node.ts

提示词工程与内容模板

  • 提示词构建器:根据书籍类型、目标受众、风格、规模等动态构建系统提示与章节提示
  • 模板化:提供大纲、章节、前言、后记的模板接口,便于扩展与定制
  • 质量控制:通过模板约束与解析器校验,确保输出结构化与一致性

章节来源

  • server/src/modules/book-generator/prompts/builder.ts
  • server/src/modules/book-generator/prompts/templates.ts

解析器与结构化输出

  • 大纲解析器:解析章节与小节的层级结构
  • 章节解析器:解析节内的要点与字数估算
  • 子章节解析器:解析小节的具体内容与结构

章节来源

  • server/src/modules/book-generator/parsers/outline.parser.ts
  • server/src/modules/book-generator/parsers/section.parser.ts
  • server/src/modules/book-generator/parsers/subsection.parser.ts

LangGraph控制器与索引

  • LangGraph控制器:提供创建书籍并启动生成、对已有书籍再次生成的API
  • LangGraph索引:导出类型与生成器,供编排服务调用

章节来源

  • deploy-package/server/modules/book-generator/langgraph/controller.js
  • deploy-package/server/modules/book-generator/langgraph/index.js

依赖关系分析

  • 控制器依赖编排服务与WebSocket服务,编排服务依赖存储、视频与音频服务
  • LangGraph控制器依赖LangGraph状态与存储,驱动生成流程
  • 节点与策略相互协作,形成完整的生成链路
  • 解析器与提示词工程为节点提供输入与输出保障

    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
  • server/src/modules/book-generator/book-generator.service.ts
  • server/src/modules/book-generator/book-generator.store.ts
  • server/src/services/websocket.service.ts
  • server/src/modules/video-generator/video-generator.service.ts
  • server/src/modules/player/player.service.ts
  • deploy-package/server/modules/book-generator/langgraph/controller.js
  • server/src/modules/book-generator/graph.ts

性能考量

  • 并行化:LangGraph工作流支持多节点并行生成,提升吞吐
  • 轮询与异步:内容生成与音频/视频生成采用异步与轮询方式,避免阻塞
  • 进度只增不减:通过reducer确保进度不会因回退而倒退,提升可观测性
  • 超时与重试:编排器设置最大等待时间与步骤级重试策略,增强鲁棒性
  • 存储与索引:数据库表对bookId、level、parentId建立索引,加速查询与更新

故障排查指南

  • 取消任务:通过取消API设置取消标志,编排器在检查点抛出异常并返回已执行步骤
  • 失败定位:编排器记录失败步骤与错误信息,可通过状态查询接口查看
  • 状态监控:通过WebSocket推送实时进度,前端可据此展示生成状态
  • 常见问题:
    • 书籍不存在:创建/生成前需验证书籍ID
    • 步骤无效:仅允许指定的步骤集合
    • 任务冲突:同一书籍同时只能有一个批量任务运行
    • 超时:若超过最大等待时间,编排器会抛出超时错误

章节来源

  • server/src/modules/book-generator/book-generator.controller.ts
  • 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
  • server/src/modules/book-generator/book-generator.controller.ts

生成质量评估方法

  • 内容审核:对生成的小节正文进行关键词过滤与敏感词检测
  • 重复检测:对章节内容进行去重与相似度比对,避免AI生成重复段落
  • 合规性检查:依据法律法规与平台规范,对前言、后记与正文进行合规性扫描
  • 结构完整性:通过解析器校验大纲与章节结构,确保层级正确与字数估算合理

章节来源

  • server/src/modules/book-generator/prompts/builder.ts
  • server/src/modules/book-generator/parsers/outline.parser.ts
  • server/src/modules/book-generator/parsers/section.parser.ts
  • server/src/modules/book-generator/parsers/subsection.parser.ts