# 提示词工程与模板 **本文引用的文件** - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) - [one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [types.ts](file://server/src/modules/book-generator/strategies/types.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [ai-generate-controller.ts](file://server/src/modules/book-generator/ai-generate-controller.ts) - [README.md](file://server/src/modules/book-generator/README.md) - [book-generator-optimizations.ts](file://server/src/modules/book-generator/book-generator-optimizations.ts) - [test_import.ts](file://server/src/modules/book-generator/test_import.ts) - [strategy-compare.ts](file://server/src/modules/book-generator/test/strategy-compare.ts) - [book-generator.types.ts](file://server/src/modules/book-generator/book-generator.types.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [graph.ts](file://server/src/modules/book-generator/graph.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [utils.ts](file://server/src/modules/book-generator/utils.ts) - [langgraph-controller.ts](file://server/src/modules/book-generator/langgraph-controller.ts) - [langgraph-types.ts](file://server/src/modules/book-generator/langgraph-types.ts) - [book-type-config.ts](file://server/src/modules/book-generator/book-type-config.ts) - [book-tools.ts](file://server/src/modules/services/llm/book-tools.ts) - [index.ts](file://server/src/modules/services/llm/index.ts) - [index.ts](file://server/src/config/index.ts) - [models.json](file://server/src/config/models.json) - [models-validator.ts](file://server/src/config/models-validator.ts) - [index.js](file://deploy-package/server/config/index.js) - [models.json](file://deploy-package/server/config/models.json) - [models-validator.js](file://deploy-package/server/config/models-validator.js) - [templates.controller.js](file://deploy-package/server/modules/templates/templates.controller.js) - [templates.service.js](file://deploy-package/server/modules/templates/templates.service.js) ## 目录 1. [引言](#引言) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考量](#性能考量) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 引言 本文件面向“提示词工程与模板系统”的技术文档,聚焦于提示词设计原则、模板构建方法、上下文管理策略,并深入解析以下关键模块: - 提示词构建器:builder.ts 中的提示词构建逻辑 - 模板系统:templates.ts 中的模板定义与复用机制 - 解析器体系:outline.parser.ts、section.parser.ts、subsection.parser.ts 的解析策略 - 策略与执行:多种生成策略(一次性大纲、逐章、顺序)及选择器 - 上下文与优化:上下文压缩、阶段化处理、LangGraph 集成与工具链 本文件同时提供提示词优化技巧、多轮对话管理、上下文压缩方法、实际提示词示例与效果对比分析,以及最佳实践指导。 ## 项目结构 提示词工程与模板系统位于服务端模块 book-generator 下,围绕“提示词构建 → 解析与分层 → 策略执行 → 结果产出”的主干流程展开;前端通过模板控制器与服务进行交互,后端通过 LLM 服务与配置中心协同。 ```mermaid graph TB subgraph "提示词与模板" B["builder.ts
提示词构建器"] T["templates.ts
模板系统"] end subgraph "解析器" OP["outline.parser.ts
大纲解析"] SP["section.parser.ts
章节解析"] SUBP["subsection.parser.ts
小节解析"] end subgraph "策略与执行" SEL["selector.ts
策略选择器"] OS["one-step-outline.strategy.ts"] PCS["per-chapter.strategy.ts"] SEQ["sequential.strategy.ts"] SVC["book-generator.service.ts"] CTRL["book-generator.controller.ts"] AICTRL["ai-generate-controller.ts"] end subgraph "上下文与优化" STAGE["stage-manager.ts"] STORE["book-generator.store.ts"] GRAPH["graph.ts"] OPT["book-generator-optimizations.ts"] end subgraph "LLM与配置" LLMIDX["services/llm/index.ts"] CFG["config/index.ts
models.json"] end B --> T T --> OP OP --> SP SP --> SUBP SUBP --> SEL SEL --> OS SEL --> PCS SEL --> SEQ OS --> SVC PCS --> SVC SEQ --> SVC SVC --> STAGE STAGE --> STORE STAGE --> GRAPH SVC --> LLMIDX LLMIDX --> CFG ``` 图示来源 - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) - [one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [ai-generate-controller.ts](file://server/src/modules/book-generator/ai-generate-controller.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [graph.ts](file://server/src/modules/book-generator/graph.ts) - [book-generator-optimizations.ts](file://server/src/modules/book-generator/book-generator-optimizations.ts) - [index.ts](file://server/src/modules/services/llm/index.ts) - [index.ts](file://server/src/config/index.ts) 章节来源 - [README.md](file://server/src/modules/book-generator/README.md) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [ai-generate-controller.ts](file://server/src/modules/book-generator/ai-generate-controller.ts) ## 核心组件 - 提示词构建器(builder.ts) - 职责:基于模板与上下文动态拼装提示词,支持变量注入、格式化与校验 - 关键点:提示词片段组合、占位符替换、安全校验、可读性与可维护性 - 模板系统(templates.ts) - 职责:集中管理提示词模板,提供模板检索、参数化与复用 - 关键点:模板分类、参数约束、版本化与回滚策略 - 解析器(outline/section/subsection.parser.ts) - 职责:将原始输入拆解为大纲、章节、小节等层级结构,支撑后续策略执行 - 关键点:层级判定、边界识别、容错与回退 - 策略与选择器(selector.ts 及各 strategy) - 职责:根据输入特征与业务目标选择最优生成策略(一次性/逐章/顺序),并驱动执行 - 关键点:策略评估指标、切换条件、降级与补偿 - 执行与上下文(service/controller/阶段管理) - 职责:编排提示词构建、调用 LLM、管理上下文与中间态、持久化与可视化 - 关键点:阶段化推进、上下文压缩、错误恢复、可观测性 章节来源 - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [ai-generate-controller.ts](file://server/src/modules/book-generator/ai-generate-controller.ts) ## 架构总览 提示词工程与模板系统的整体流程如下: ```mermaid sequenceDiagram participant FE as "前端" participant CTRL as "book-generator.controller.ts" participant SVC as "book-generator.service.ts" participant B as "builder.ts" participant T as "templates.ts" participant P as "解析器(大纲/章节/小节)" participant STR as "策略选择器(selector.ts)" participant LLM as "LLM服务(index.ts)" participant STAGE as "stage-manager.ts/store.ts" FE->>CTRL : 发起生成请求(含输入/参数) CTRL->>SVC : 触发生成流程 SVC->>B : 请求构建提示词(模板+上下文) B->>T : 加载模板并注入参数 T-->>B : 返回模板实例 B-->>SVC : 返回最终提示词 SVC->>P : 解析输入为层级结构 P-->>SVC : 返回结构化大纲/章节/小节 SVC->>STR : 依据输入特征选择策略 STR-->>SVC : 返回选定策略 SVC->>LLM : 调用模型生成内容 LLM-->>SVC : 返回生成结果 SVC->>STAGE : 写入阶段状态/上下文 SVC-->>CTRL : 返回阶段性结果 CTRL-->>FE : 返回进度/结果 ``` 图示来源 - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [index.ts](file://server/src/modules/services/llm/index.ts) ## 详细组件分析 ### 提示词构建器(builder.ts) - 设计原则 - 可组合性:将提示词拆分为多个片段,按需拼接 - 参数化:通过占位符与上下文映射实现模板复用 - 安全性:对注入参数进行白名单与长度限制,避免越界与注入风险 - 可观测性:保留原始模板与最终提示词,便于调试与审计 - 关键流程 - 加载模板:从 templates.ts 获取模板定义 - 注入上下文:将输入参数、历史上下文、结构化数据注入模板 - 格式化与校验:统一换行、截断与长度校验 - 输出最终提示词:返回可用于 LLM 调用的字符串 - 优化要点 - 模板缓存:热点模板预热,减少重复加载 - 分块策略:超长提示词分块处理,结合上下文压缩 - 回退机制:模板缺失或参数异常时的默认兜底 章节来源 - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) ### 模板系统(templates.ts) - 组织方式 - 模板分类:按用途(大纲、章节、小节、提示词片段)划分 - 参数约束:定义必填/可选参数与默认值,确保模板一致性 - 版本化:支持模板版本与回滚,保障稳定性 - 使用模式 - 单模板调用:直接传入参数渲染 - 组合模板:将多个模板片段拼接,形成复合提示词 - 最佳实践 - 明确模板职责边界,避免过度耦合 - 为模板编写单元测试与回归用例 - 对高频模板进行性能监控与优化 章节来源 - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) ### 解析器体系(outline/section/subsection.parser.ts) - 大纲解析(outline.parser.ts) - 目标:从输入中提取顶层结构与主题 - 方法:基于标题层级、关键词识别与段落切分 - 输出:结构化大纲节点(含标题、摘要、目标字数等) - 章节解析(section.parser.ts) - 目标:将大纲细化为章节 - 方法:识别章节标识、统计字数、估算子节点数量 - 输出:章节节点集合(含子节点、预期字数) - 小节解析(subsection.parser.ts) - 目标:进一步拆分子章节为小节 - 方法:基于段落、标点与语义边界 - 输出:小节节点集合(含正文、要点、示例等) - 容错与回退 - 当解析失败时,采用默认策略或降级方案 - 对异常输入进行清洗与标准化 ```mermaid flowchart TD Start(["开始"]) --> Detect["识别输入类型
主题/关键词/结构化"] Detect --> Outline["大纲解析
outline.parser.ts"] Outline --> Sections["章节解析
section.parser.ts"] Sections --> Subsections["小节解析
subsection.parser.ts"] Subsections --> Validate{"是否满足字数/层级要求?"} Validate --> |是| Output["输出结构化节点"] Validate --> |否| Fallback["回退/重试/人工干预"] Fallback --> Output ``` 图示来源 - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) 章节来源 - [outline.parser.ts](file://server/src/modules/book-generator/parsers/outline.parser.ts) - [section.parser.ts](file://server/src/modules/book-generator/parsers/section.parser.ts) - [subsection.parser.ts](file://server/src/modules/book-generator/parsers/subsection.parser.ts) ### 策略与选择器(selector.ts 与各 strategy) - 策略类型 - 一次性生成(one-step-outline.strategy.ts):适用于短文本或明确结构 - 逐章生成(per-chapter.strategy.ts):按章节独立生成,便于并行与质量控制 - 顺序生成(sequential.strategy.ts):严格顺序,保证上下文连贯性 - 选择器(selector.ts) - 输入:输入规模、结构复杂度、目标字数、历史上下文长度 - 输出:最优策略与参数组合 - 执行流程 - 选择策略 → 初始化阶段 → 逐步生成 → 上下文更新 → 结果汇总 ```mermaid classDiagram class 策略选择器 { +评估输入特征 +计算策略权重 +返回最优策略 } class 一次性策略 { +一次性生成大纲 } class 逐章策略 { +按章节生成 +并行/串行控制 } class 顺序策略 { +严格顺序 +上下文传递 } 策略选择器 --> 一次性策略 策略选择器 --> 逐章策略 策略选择器 --> 顺序策略 ``` 图示来源 - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) 章节来源 - [selector.ts](file://server/src/modules/book-generator/strategies/selector.ts) - [one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - [per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - [sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) ### 执行与上下文管理(service/controller/stage-manager/store) - 服务编排(book-generator.service.ts) - 负责提示词构建、调用 LLM、解析结果、写入阶段状态 - 管理上下文窗口与压缩策略 - 控制器(book-generator.controller.ts / ai-generate-controller.ts) - 接收前端请求,校验参数,调度服务层 - 提供进度查询与结果返回 - 阶段管理(stage-manager.ts / store.ts) - 将生成过程拆分为多个阶段,便于断点续跑与可视化 - 存储中间态,支持回溯与重试 - 图谱与工具(graph.ts / book-tools.ts) - 通过 LangGraph 构建生成图谱,串联节点与工具 - 工具链用于外部能力扩展(如查询、校验) 章节来源 - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [book-generator.controller.ts](file://server/src/modules/book-generator/book-generator.controller.ts) - [ai-generate-controller.ts](file://server/src/modules/book-generator/ai-generate-controller.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) - [graph.ts](file://server/src/modules/book-generator/graph.ts) - [book-tools.ts](file://server/src/modules/services/llm/book-tools.ts) ## 依赖关系分析 - 模块内聚与耦合 - builder.ts 与 templates.ts 高内聚,通过接口解耦 - 解析器与策略层通过统一的数据结构衔接,降低耦合 - 服务层作为编排中枢,向上承接控制器,向下连接 LLM 与存储 - 外部依赖 - LLM 服务:统一入口与模型配置 - 配置中心:模型清单与验证规则 - 前端模板控制器与服务:模板检索与应用 ```mermaid graph LR TPL["templates.ts"] --> BLD["builder.ts"] BLD --> SVC["book-generator.service.ts"] PARSER["解析器层"] --> SVC STRAT["策略层"] --> SVC SVC --> LLM["services/llm/index.ts"] LLM --> CFG["config/index.ts"] FE_CTRL["templates.controller.js"] --> FE_SRV["templates.service.js"] FE_SRV --> TPL ``` 图示来源 - [templates.ts](file://server/src/modules/book-generator/prompts/templates.ts) - [builder.ts](file://server/src/modules/book-generator/prompts/builder.ts) - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [index.ts](file://server/src/modules/services/llm/index.ts) - [index.ts](file://server/src/config/index.ts) - [templates.controller.js](file://deploy-package/server/modules/templates/templates.controller.js) - [templates.service.js](file://deploy-package/server/modules/templates/templates.service.js) 章节来源 - [book-generator.service.ts](file://server/src/modules/book-generator/book-generator.service.ts) - [index.ts](file://server/src/modules/services/llm/index.ts) - [index.ts](file://server/src/config/index.ts) - [templates.controller.js](file://deploy-package/server/modules/templates/templates.controller.js) - [templates.service.js](file://deploy-package/server/modules/templates/templates.service.js) ## 性能考量 - 提示词长度控制 - 通过模板参数化与上下文压缩,避免超过模型上下文上限 - 对超长输入采用分块与摘要策略 - 并行与顺序权衡 - 逐章策略支持并行生成,提升吞吐 - 顺序策略保证一致性,适用于强依赖场景 - 缓存与预热 - 热门模板与提示词片段缓存 - 预热常用模型与工具链 - 监控与告警 - 关键指标:提示词长度、生成耗时、错误率、上下文命中率 - 异常快速回退与降级策略 ## 故障排查指南 - 常见问题 - 提示词过长导致截断:检查模板参数与上下文长度,启用压缩 - 解析失败:核对输入格式与解析器边界规则,必要时人工干预 - 策略选择不当:调整评估权重与阈值,增加策略对比测试 - LLM 调用失败:检查模型配置与限流策略,启用重试与熔断 - 调试手段 - 启用详细日志与追踪 ID,定位具体环节 - 使用阶段管理器查看中间态,复现问题 - 对比不同策略与模板的输出差异,定位根因 章节来源 - [book-generator-optimizations.ts](file://server/src/modules/book-generator/book-generator-optimizations.ts) - [stage-manager.ts](file://server/src/modules/book-generator/stage-manager.ts) - [book-generator.store.ts](file://server/src/modules/book-generator/book-generator.store.ts) ## 结论 提示词工程与模板系统以“可组合、可复用、可演进”为核心目标,通过模板化与策略化实现高效稳定的生成流程。结合解析器的层级化处理、阶段化的上下文管理与 LangGraph 的图谱化编排,系统在复杂内容生成场景下具备良好的扩展性与鲁棒性。建议持续完善模板库、优化策略选择算法、加强监控与回退机制,以应对更广泛的业务需求。 ## 附录 ### 提示词设计原则与优化技巧 - 明确角色与目标:限定角色、设定目标、给出约束 - 分层提示:先总体后细节,先结构后内容 - 参数化与最小化:仅注入必要参数,避免冗余 - 可观测性:保留原始模板与最终提示词,便于审计与复现 - 多轮对话管理 - 通过上下文窗口与摘要机制控制历史长度 - 使用“总结上一轮要点”“请基于以上信息回答”等指令引导模型 - 上下文压缩方法 - 关键句抽取、摘要生成、层级化裁剪 - 基于重要度评分的动态截断 ### 实际提示词示例与效果对比(示例路径) - 示例A:一次性生成(适合短文本) - 路径参考:[one-step-outline.strategy.ts](file://server/src/modules/book-generator/strategies/one-step-outline.strategy.ts) - 示例B:逐章生成(适合长文) - 路径参考:[per-chapter.strategy.ts](file://server/src/modules/book-generator/strategies/per-chapter.strategy.ts) - 示例C:顺序生成(适合强连贯内容) - 路径参考:[sequential.strategy.ts](file://server/src/modules/book-generator/strategies/sequential.strategy.ts) ### 最佳实践清单 - 模板命名规范:清晰表达用途与适用范围 - 参数校验:必填项、取值范围、默认值 - 版本管理:变更记录与回滚预案 - 测试覆盖:单元测试、回归测试、策略对比测试 - 文档与知识沉淀:模板使用手册、常见问题解答