长文档拆解成结构化大纲的提示词工程实操教程

👁 68 次阅读

配图
配图

先把目标说清:大纲不是目录,而是可执行的结构

很多团队把长文档拆解理解成让模型生成一份目录,结果得到的是漂亮但不可用的标题列表。真正可执行的结构化大纲,至少应包含六类信息:章节层级、主题句、支撑要点、关键术语、证据位置、块间关联。章节层级决定阅读顺序,主题句说明这一节解决什么问题,支撑要点让后续写作或问答有素材,关键术语避免同义混用,证据位置保证每个结论都能回到原文,块间关联则处理交叉引用和前后照应。
在写提示词之前,先把字段定下来。字段一旦确定,提示词就有了验收标准;字段不固定,模型就会在每次调用时自由发挥,后续归并会非常痛苦。建议用一张字段表约束输出,例如块编号、章节路径、候选主题、支撑要点、关键术语、证据片段、关联块编号。字段不必多,但每个都要能被人工复核。
还要区分抽取与生成。抽取式任务要求模型从原文找信息,允许留空或标注需回看原文;生成式任务才允许概括和改写。长文档大纲更适合先抽取、后归并、再少量改写。这个顺序能显著降低编造和遗漏。

配图
配图

拆解流程总览:分块抽取、块间归并、全局校验

一个可复用的流程是:清洗文档、按结构分块、块级抽取、分批归并、全局校验、格式化输出。每一步都产生可检查的中间产物,不要把全部工作压进一次提示词。清洗阶段保留标题层级和段落边界;分块阶段给每块编号并记录章节路径;抽取阶段只输出块级要点;归并阶段把相似主题合并成树;校验阶段专门找缺口和冲突;输出阶段再转换成 Markdown、YAML 或表格。
这样做的好处是可控。模型一次只处理有限上下文,注意力更集中;中间结果可以抽样检查;出错时能定位到某个块或某次归并,而不是面对一份无法追溯的大纲。对于很长的文档,可以先把章节标题和首段抽出来做一级骨架,再对每章内部做二级展开。骨架负责稳定层级,块级抽取负责填充细节。
建议给中间文件统一命名,例如 chunks/part_001.txt、extract/part_001.yaml、merge/round_01.yaml、outline/final.md。命名稳定后,脚本和人工复核都能复用。下面给出一组分块命令和最小脚本,参数只是示例,实际按文档长度和模型上下文调整。

步骤一:清洗与分块,给每块留锚点

清洗时优先做四件事:统一换行符,去掉重复页眉页脚,保留标题标记,保留表格标题与注释。不要把表格直接删掉,表格往往承载关键约束。分块时优先按标题切,其次按段落边界切,最后才按长度硬切。硬切容易切断条款和论证,必须保留前后重叠段落,或者在块首写明上一块结尾主题。每块都要带块编号和章节路径,这是后续追溯的锚点。
可以用一个简单的 Python 脚本先跑通分块。下面的示例按空行分段,再按长度上限合并,输出到 chunks 目录。生产环境可以再加入标题识别和重叠窗口。

from pathlib import Path

def split_text(text, max_chars=3500):
    paras = [p for p in text.split(chr(10) + chr(10)) if p.strip()]
    chunks = []
    buf = ''
    for p in paras:
        if len(buf) + len(p) + 2 > max_chars:
            if buf:
                chunks.append(buf)
            buf = p
        else:
            buf = buf + chr(10) + chr(10) + p if buf else p
    if buf:
        chunks.append(buf)
    return chunks

raw = Path('long.md').read_text(encoding='utf-8')
parts = split_text(raw)
out = Path('chunks')
out.mkdir(exist_ok=True)
for i, part in enumerate(parts, 1):
    (out / f'part_{i:03d}.txt').write_text(part, encoding='utf-8')

运行方式可以写成:

python split_doc.py --input long.md --max-chars 3500 --out chunks

注意脚本示例没有实现命令行参数解析,实际使用时可以把参数接到 argparse,或先用固定路径跑通。分块后人工抽查几块,确认标题、条款编号、表格说明没有被切断,再进入抽取。

步骤二:写块级抽取提示词,只抽不编

块级抽取的目标不是写漂亮标题,而是把这一块里可用的结构信息提取出来。提示词建议写成五段:角色、输入、任务、约束、输出格式。角色要限定为结构分析助手;输入要带块编号和章节路径;任务要明确列出字段;约束要强调只抽取原文、不扩写、信息不足时留空;输出格式要固定,方便后续脚本解析。
下面是一个可复制的模板。方括号内容按实际替换,输出字段可以按文档类型增删。

你是一名长文档结构分析助手。请只做抽取,不做扩写。
输入:
块编号:{chunk_id}
章节路径:{section_path}
正文:
{chunk_text}
任务:
1. 提取该块候选主题,最多三条。
2. 提取支撑要点,每条不超过一行。
3. 标记关键术语和定义。
4. 给出可回查的证据片段,保留原文关键词。
5. 如果发现与其他块的关联线索,写入关联线索。
约束:
- 所有要点必须来自输入正文。
- 信息不足时写『需回看原文』,不要补全。
- 不要生成最终目录,不要改写原文标题。
输出字段:
chunk_id
section_path
candidate_topics
supporting_points
terms
evidence
links

配置侧建议把温度调低,输出长度设上限,避免模型在一小块里写成长篇摘要。一个 YAML 配置示例如下,参数按实际模型调整。

task: chunk_extract
temperature: 0.2
max_output_tokens: 1200
instruction: 只抽取原文信息,不扩写,不补全
output_fields:
  - chunk_id
  - section_path
  - candidate_topics
  - supporting_points
  - terms
  - evidence

抽取完成后不要急着合并。先抽查若干块,看是否出现三类问题:把例子当主题、把背景当结论、证据片段与要点对不上。发现后改提示词,而不是逐条手工修。提示词里可以加一句『优先保留原文中的名词短语和编号』,对制度、手册类文档很有用。

步骤三:归并块级结果,生成可追溯的树状大纲

归并阶段处理的是块级结果,不是原文全文。先把块按章节路径排序,再把候选主题聚类。归并提示词要模型做四件事:合并同义主题、保留来源块编号、标出冲突、控制层级深度。不要一次把所有块塞进一个提示词,可以按章节分批归并,再对章节结果做一级归并。分批的边界尽量与原文结构一致,减少跨章误合。
归并提示词可以这样写:

你是一名大纲编辑。请把下列块级抽取结果合并成树状大纲。
输入:{batch_id} 的块级结果列表。
任务:
1. 按章节路径建立父子关系。
2. 合并同义或高度重叠的主题。
3. 每个主题保留来源块编号。
4. 发现同一主题下要点冲突时,单列冲突说明。
5. 层级不超过四级,标题使用名词短语。
约束:
- 不新增原文没有的主题。
- 无法判断归属的要点放入待定区。
- 每个二级主题至少有一个来源块编号。
输出格式:
一级主题
  二级主题
    支撑要点
    来源块:part_001、part_004

归并结果建议保存为中间文件,不要直接当最终稿。可以要求模型同时输出一个待定区,把无法归类的要点放进去。待定区往往暴露分块问题或原文结构不清,后续人工处理比强行归类更可靠。对于跨章节重复出现的概念,可以建一个术语表,在大纲中用统一名称,并在来源块里保留不同表述。

步骤四:校验提示词,检查覆盖、层级与证据

校验是独立步骤,不要让归并模型顺便自查。校验提示词只做检查,不直接重写。检查三件事:覆盖、层级、证据。覆盖看每个块是否至少被一个主题吸收,或是否进入待定区;层级看父子关系是否合理,有没有把并列要点塞进子节点;证据看每个支撑要点能否回到来源块。还可以检查标题是否空泛、术语是否统一、表格内容是否遗漏。
校验提示词示例:

你是一名大纲质检员。请检查给定大纲与块级结果的一致性。
输入:大纲、块级结果列表、块编号清单。
任务:
1. 列出未被任何主题覆盖的块编号。
2. 列出层级关系可疑的节点,并说明原因。
3. 列出缺少证据或证据不匹配的要点。
4. 列出标题空泛、同义重复、术语不一致的节点。
5. 输出修正建议,不要直接重写全文。
约束:
- 只依据输入材料判断。
- 建议要指向具体节点或块编号。
- 无法判断时标注『需人工复核』。

人工复核时优先看三类节点:一级主题是否覆盖主要章节,二级主题是否回答该章核心问题,支撑要点是否可执行。对于制度、合同类文档,还要检查适用范围、例外条款、生效条件是否被遗漏。校验结果可以回流到归并提示词,形成一轮修正,但不要无限循环。通常一轮校验加一轮人工修订就能达到可用状态。

步骤五:输出为可用的结构化格式

最终输出格式取决于下游用途。给人读,用 Markdown;给表格工具,用 CSV;给程序消费,用 YAML 或 JSON。无论哪种格式,都保留块编号和证据字段。Markdown 适合快速评审,YAML 适合后续脚本处理。下面是一个 YAML 片段示例,字段可按需增减。

outline:
  - id: sec_01
    title: 适用范围与基本原则
    level: 1
    summary: 说明文档适用对象与总体原则
    evidence: part_001
    children:
      - id: sec_01_01
        title: 适用对象
        level: 2
        points:
          - 明确适用主体
          - 明确排除情形
        evidence: part_001、part_002

如果输出 Markdown,可以用标题层级加来源块标注:

# 一级主题
## 二级主题
- 支撑要点一
- 支撑要点二
来源块:part_001、part_004

输出后做一次机械检查:每个二级主题是否有来源块,每个来源块是否真实存在,层级是否连续,标题是否重复。机械检查能拦住大部分低级错误,剩下的再交给人工判断。

提示词模板:把角色、任务、约束拆开写

提示词工程不是堆形容词,而是把任务边界写清楚。一个稳定的长文档大纲提示词通常包含:角色限定、输入说明、任务步骤、字段定义、禁止事项、输出格式。角色限定让模型进入结构分析模式;输入说明告诉它块编号和章节路径的意义;任务步骤把复杂动作拆成顺序;字段定义让输出可解析;禁止事项拦住扩写和编造;输出格式降低后处理成本。
可以准备一套三层模板:块级抽取模板、章节归并模板、全局校验模板。三层模板分开维护,不要混成一个巨型提示词。每次修改只改一层,便于比较效果。变量用花括号占位,例如 {chunk_id}、{section_path}、{chunk_text},替换时确保不把提示词指令混进正文。对于重要项目,把模板和输出样例放在版本库里,记录每次修改的原因和抽查结果。
还有一个小技巧:在提示词中要求模型先输出『本块结构判断』,再输出字段。结构判断只需一两句,说明这块是定义、流程、条件还是例子。这样后续归并时更容易判断要点权重。不要让模型输出长篇推理,短判断即可。

不同文档类型的策略对比

不同长文档的结构差异很大,分块和提示词不能一套打天下。下面表格给出定性对比,实际使用时按文档特点调整。

文档类型 主要难点 分块策略 提示词重点 验收要点
制度规范 条款交叉引用多,例外条件多 按章节和条款编号切分,保留上下条 抽取适用主体、动作、条件、例外 条款编号可回查,例外不遗漏
研究报告 论证链长,图表与结论分离 按研究问题和章节切分,图表单独成块 抽取问题、方法、发现、限制 结论有证据,限制条件保留
技术手册 步骤依赖强,前置条件多 按任务和步骤切分,保留命令上下文 抽取前置条件、步骤、结果、故障处理 步骤顺序正确,命令不截断
会议纪要 发言分散,决议与讨论混杂 按议题切分,保留发言人与时间线 抽取议题、决议、待办、责任人 决议与讨论分开,待办可执行
书籍章节 概念递进,例子多 按小节切分,概念定义单独成块 抽取概念、论证、例子、前后关联 概念不重复,层级不过深
合同条款 定义与义务交织,引用密集 按条款和定义切分,保留引用关系 抽取主体、义务、权利、违约、例外 定义一致,义务主体明确

表格里的策略不是固定规则,而是起点。制度规范更怕漏例外,技术手册更怕步骤断裂,研究报告更怕结论脱离证据。写提示词时把对应风险写进禁止事项,比泛泛要求『准确』有效得多。

常见失败模式与修正方法

第一种失败是大纲过细。模型把每个例子都提升为二级主题,导致层级膨胀。修正方法是限制层级深度,要求二级主题必须能回答一个章节问题,例子只能作为支撑要点。第二种失败是标题空泛,例如『相关内容』『其他说明』。修正方法是要求标题使用名词短语,并优先保留原文中的小标题和编号。
第三种失败是跨块重复。同一概念在多个块出现,归并时没有合并。修正方法是先建术语表,再在归并提示词中要求同义合并并保留来源块。第四种失败是证据丢失。大纲看起来合理,但要点找不到原文依据。修正方法是把证据字段设为必填,校验阶段专门列缺少证据的节点。第五种失败是表格和注释被遗漏。修正方法是在清洗阶段保留表格标题,在分块时让表格单独成块,并在校验清单中加入表格覆盖检查。
还有一种隐蔽失败是提示词把抽取和改写混在一起。模型一边找信息一边润色,最后很难判断哪句来自原文。修正方法是拆成两轮:第一轮只抽取,第二轮只做有限改写,且改写必须保留来源块编号。对于高要求场景,可以让第二轮只改标题,不改支撑要点。

可执行建议:今天就能跑起来的最小闭环

先选一篇结构清楚、长度适中的文档,不要一上来处理全部资料。按本文流程跑一个最小闭环:清洗并分块,抽取前三个块,归并成一个小树,做一次校验,人工抽查来源块。重点观察三件事:块编号是否贯穿始终,证据是否能回查,标题是否比原文更清楚。跑通后,再把分块脚本参数化,把三层提示词模板固化到版本库,并为不同文档类型各留一份配置。
建议把每次输出都保留中间文件,不要只存最终大纲。中间文件是调试提示词的依据,也是团队协作的接口。每周抽一份文档做回归测试,比较修改前后的覆盖率和人工修订量。最后提醒一句:提示词负责约束模型,流程负责兜底。先把字段、分块、归并、校验四件事做扎实,再追求更漂亮的标题和更复杂的自动化。

订阅 AI 百事知

每周精选 AI 工具评测、行业资讯与使用教程,第一时间送达。

🔗 相关阅读(你可能还想看)

📄 Perplexity Pro 学生免费一年怎么领:验证流程、失败排查与免费版区别全解
📄 AI效率工具提升办公效率的实战方法
📄 Notion AI 数据库自动化实战教程:从零搭建智能工作流到自动化闭环
📄 2026年AI生成PPT工具实战教程:从选型到精修的完整工作流指南
📄 ChatGPT Projects 实战教程:从零建立持续工作流,告别重复上传与提示词
📄 Notion AI 完整使用教程:从零开始掌握 AI 写作、数据库自动化与团队知识库构建(2026 最新版)
📄 NotebookLM 使用教程:从入门到精通的完整指南(2026年最新版)
📄 ChatGPT Slides 实战教程:6 步把一次对话变成团队可协作的演示稿,导出 PPTX 前先验这三样(2026 官方指南)
OpenAI 10 月中旬上线的 ChatGPT Slides,把演示稿从单人文件搬进 Space:从对话、文件、大纲或
📄 用 AI 做竞品调研:从抓取到对比表的完整流程
从调研问题、合规抓取、字段设计到 AI 抽取与人工校验,给出可照做的竞品对比表流程,并附清洗、补全和行动建议。
🤖 想直接和 AI 对话?
免费体验 DeepSeek V4 等顶级模型,无需注册,随问随答
🎯 立即体验 AI 工具

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

🤖 嘟嘟客服
滚动至顶部
🤖 嘟嘟客服
🤖 嘟嘟客服
';i.value='';m.innerHTML+='
...
';fetch('/dify-chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({query:q,user:'w'+Date.now()})}).then(function(r){return r.json()}).then(function(d){var a=d.answer||'暂时无法回复';m.removeChild(m.lastChild);m.innerHTML+='
'+a+'
'}).catch(function(){m.removeChild(m.lastChild);m.innerHTML+='
网络异常
'})">发送