本文档引用的文件
本文档深入分析了辅助节点实现,重点涵盖foreword.node.ts和plan.node.ts的设计原理与实现细节。辅助节点在整个生成流程中扮演关键角色,负责序言生成、创作计划制定以及前置处理流程。本文将详细解释辅助节点在整个生成流程中的作用、执行时机、依赖关系,以及与主流程的集成方式、数据传递机制和异常处理策略。
该项目采用模块化的架构设计,主要集中在server/src/modules/book-generator目录下,包含节点、策略、提示词模板等多个子模块。
graph TB
subgraph "生成器模块"
A[index.ts]
B[graph.ts]
C[book-generator.service.ts]
D[book-generator.store.ts]
end
subgraph "节点层"
E[foreword.node.ts]
F[plan.node.ts]
G[deep-plan.node.ts]
H[rich-outline.node.ts]
end
subgraph "策略层"
I[selector.ts]
J[deep-plan-parallel.strategy.ts]
end
subgraph "配置与模板"
K[book-type-config.ts]
L[templates.ts]
M[utils.ts]
end
A --> I
I --> J
J --> B
B --> E
B --> F
B --> G
B --> H
E --> D
F --> D
G --> D
H --> D
F --> K
G --> K
H --> K
E --> L
F --> L
G --> L
H --> L
D --> M
图表来源
章节来源
辅助节点实现主要包含两个核心组件:序言节点和创作计划节点。
序言节点负责生成书籍的前言和后记,采用简洁高效的实现方式:
创作计划节点负责AI驱动的深度规划分析:
章节来源
辅助节点在整个生成架构中处于关键位置,与策略层、节点层和存储层紧密协作。
sequenceDiagram
participant Client as "客户端"
participant Service as "生成服务"
participant Strategy as "策略选择器"
participant Graph as "LangGraph"
participant Nodes as "辅助节点"
participant Store as "存储层"
Client->>Service : 创建生成任务
Service->>Strategy : 选择生成策略
Strategy->>Graph : 初始化工作流
Graph->>Nodes : 执行辅助节点
Nodes->>Store : 更新进度状态
Store-->>Nodes : 返回状态数据
Nodes-->>Graph : 返回执行结果
Graph-->>Service : 完成节点执行
Service-->>Client : 返回生成进度
图表来源
前言生成节点采用简洁的实现模式,通过系统提示词和用户提示词的组合来生成高质量的前言内容。
flowchart TD
Start([开始前言生成]) --> GetBookInfo["获取书籍信息<br/>- 书名<br/>- 描述"]
GetBookInfo --> BuildPrompt["构建提示词<br/>- 系统提示词<br/>- 用户提示词"]
BuildPrompt --> CallLLM["调用LLM接口"]
CallLLM --> UpdateStore["更新存储<br/>- 保存前言内容<br/>- 更新进度"]
UpdateStore --> ReturnResult["返回执行结果"]
ReturnResult --> End([结束])
CallLLM --> |异常| HandleError["捕获异常<br/>记录错误日志"]
HandleError --> ReturnError["返回默认结果<br/>保持进度"]
ReturnError --> End
图表来源
后记生成节点与前言生成类似,但具有不同的质量要求和格式约束。
flowchart TD
Start([开始后记生成]) --> ValidateInput["验证输入参数<br/>- 书籍ID<br/>- 主题信息"]
ValidateInput --> PrepareMessages["准备消息数组<br/>- 系统消息<br/>- 用户消息"]
PrepareMessages --> CallLLM["调用LLM接口"]
CallLLM --> ProcessResult["处理生成结果<br/>- 清洗内容<br/>- 验证格式"]
ProcessResult --> SaveContent["保存后记内容"]
SaveContent --> UpdateProgress["更新完成状态"]
UpdateProgress --> Complete([生成完成])
CallLLM --> |异常| LogError["记录错误日志"]
LogError --> Continue["继续执行流程"]
Continue --> Complete
图表来源
章节来源
创作计划节点实现了复杂的AI规划逻辑,包括提示词构建、响应解析和配置映射。
classDiagram
class BookPlan {
+number genLevel
+string bookTypeAnalysis
+string writingStyle
+string structureLogic
+string contentDepth
+string targetAudienceAnalysis
+string reasoning
}
class PlanNode {
+buildPlanPrompt(title, description, bookScale) string
+parsePlanResponse(response) BookPlan
+planBookNode(state) Promise~Partial~State~~
}
class BookTypeConfig {
+getScaleConfig(key) Config
+calcChapters(totalWords) number
+calcAudioMinutes(totalWords) number
}
PlanNode --> BookPlan : "生成"
PlanNode --> BookTypeConfig : "使用"
PlanNode --> BookStore : "更新状态"
图表来源
创作计划节点的核心是智能的大纲层级决策算法,该算法基于多种因素进行综合判断。
flowchart TD
Input[输入参数] --> CheckUserLevel{"用户是否指定层级?"}
CheckUserLevel --> |是| ValidateUserLevel["验证用户层级<br/>1/2/3有效"]
CheckUserLevel --> |否| AnalyzeBookType["分析书籍类型"]
ValidateUserLevel --> ReturnUserLevel["返回用户指定层级"]
AnalyzeBookType --> CheckScale["检查书籍规模"]
CheckScale --> CheckTopic["检查话题关键词"]
CheckTopic --> Decision["决策算法"]
Decision --> Level1{"适合1层?"}
Level1 --> |是| ReturnLevel1["返回1层"]
Level1 --> |否| Level2{"适合2层?"}
Level2 --> |是| ReturnLevel2["返回2层"]
Level2 --> |否| ReturnLevel3["返回3层"]
ReturnUserLevel --> Output[输出结果]
ReturnLevel1 --> Output
ReturnLevel2 --> Output
ReturnLevel3 --> Output
图表来源
章节来源
辅助节点通过LangGraph框架实现状态管理和节点间的数据传递。
sequenceDiagram
participant Graph as "LangGraph"
participant PlanNode as "计划节点"
participant ForewordNode as "序言节点"
participant Store as "存储层"
Graph->>PlanNode : 执行计划节点
PlanNode->>Store : 读取书籍信息
PlanNode->>PlanNode : 构建提示词
PlanNode->>LLM : 调用AI接口
PlanNode->>Store : 保存规划结果
PlanNode-->>Graph : 返回状态更新
Graph->>ForewordNode : 执行序言节点
ForewordNode->>Store : 读取书籍信息
ForewordNode->>ForewordNode : 构建提示词
ForewordNode->>LLM : 调用AI接口
ForewordNode->>Store : 保存序言内容
ForewordNode-->>Graph : 返回完成状态
图表来源
章节来源
辅助节点实现涉及多个关键依赖模块,形成了清晰的层次结构。
graph TB
subgraph "核心依赖"
A[GraphState]
B[bookStore]
C[callLLMWithMessages]
D[PROGRESS]
end
subgraph "配置依赖"
E[book-type-config]
F[templates]
G[utils]
end
subgraph "策略依赖"
H[selector]
I[deep-plan-parallel.strategy]
end
subgraph "存储依赖"
J[book-generator.store]
K[prisma]
end
foreword_node --> A
foreword_node --> B
foreword_node --> C
foreword_node --> D
plan_node --> A
plan_node --> B
plan_node --> C
plan_node --> D
plan_node --> E
plan_node --> F
A --> J
B --> J
J --> K
图表来源
辅助节点通过GraphState实现状态传递,确保节点间的数据一致性。
erDiagram
GraphState {
string bookId
string userId
string topic
string bookScale
number genLevel
string description
string bookPlan
number currentChapter
number[] completedChapters
boolean finished
string error
number progress
number[] failedChapters
}
BookStore {
number id
string title
string description
string outlineJson
string foreword
string afterword
number progress
string genStage
}
BookPlan {
number genLevel
string bookTypeAnalysis
string writingStyle
string structureLogic
string contentDepth
string targetAudienceAnalysis
string reasoning
}
GraphState ||--|| BookStore : "状态同步"
GraphState ||--|| BookPlan : "规划数据"
图表来源
章节来源
辅助节点实现充分考虑了性能优化和资源管理。
辅助节点支持多种配置参数来优化执行效果:
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| bookScale | string | '130000' | 书籍规模配置 |
| genLevel | number | 2 | 大纲层级(1/2/3) |
| topic | string | '' | 书籍主题 |
| description | string | '' | 书籍描述 |
章节来源
章节来源
辅助节点实现展现了现代AI驱动内容生成系统的最佳实践。通过精心设计的节点架构、完善的错误处理机制和高效的性能优化策略,辅助节点能够稳定可靠地执行序言生成和创作计划制定等关键任务。
主要优势包括:
这些特性使得辅助节点成为整个生成系统中不可或缺的重要组成部分。