← 返回目录

第 9 讲 模板从哪来:用你自己的 Word

【可执行状态】现在就能做

【本讲对应资产】doc-filler 引擎的模板库能力(filler_template_upload / filler_templates)

【本讲原理来源】L3 第 20 课《Function Calling 深度解析》(工具的描述与参数)、L3 第 19 课(把能力封装成可复用的东西)


引子:一句最常被问到的话

教了十几年的老师,第一次看到“自动填制”这件事,多半会问同一句话:

“你们这个模板,跟我们学校发的那个不一样吧?”

问得对。教务处发的表格,每所学校长得都不一样:有的把课程信息放页首、一栏一项;

有的塞进一张大表,一格一格排得密密麻麻;有的连“课程目标”都要填三行字。

任何一套“预置好的模板”,只能覆盖一小部分人的需求。

所以真正要解决的问题不是“我们做一套万能模板”,而是:

老师手上的那份表,能不能直接拿来用?

这一讲讲的就是这件事——模板从哪来。答案有三条路,最省事的那条,

不需要老师改一个字、也不需要标任何记号。

一、场景:同一张表,两种命运

办公室主任把两份表格发到两位老师手上。

第一份是学校统一的教学大纲模板,格式规整,一栏一项:

课程名称、课程代码、课程类别、适用专业、课程学时、课程学分……

第二份是某学院自己用的教案格式,是一张大表——横着好几栏,竖着十几行,

“授课内容”“教学目标”“重点难点”“教学内容与过程”全在格子里,

还有一行写着“课堂导入(5分钟)”。

按老办法,两份表都得一个字一个字敲。

王老师(化名)的处理方式是:把去年的表翻出来,另存成“新版”,

然后逐格改——改到第 8 格的时候,接了个电话,回来接着改,

把去年的班级名“2023级1班”留在了表里,交上去被打回。

她自嘲说:“这种表,我一年要填四五十份,每份都要重复劳动一遍。”

李老师(化名)的做法不一样:她把学校发的那份空白表格原样上传,

入口问她“我要填哪些内容”,她照着提示把课的信息给了一遍,

几分钟后拿到的是一份版式完全没变、内容换成本学期的成品。

第二份学院表格她也上传了一次,同样不用改格式。

同一张表,一个下午 vs 几分钟。差别只有一处:表格是不是被“看懂”过一遍。

二、原理:机器怎么“看懂”一张表

2.1 先定义清楚:什么是“模板”

这一讲反复要用这个词,先给它一个说得清的定义:

模板,就是那份“格式已经定好、只有部分内容要换”的文件。
换成你的课、你的班、你的学期,格式不许变。

一份教师手上的 Word,按“能不能被机器直接填”分,有三种形态。

这三条路,本书都支持,而且走的是同一个入口:

形态长什么样老师要做什么
A 空白表格学校发的新表,格子里是空的或写着提示原样上传即可
B 已填样例去年填过的、或者别人的(如院里给的样本)原样上传即可
C 已带占位符有人已经标好了 {{课程名称}} 这类记号原样上传即可

三条路都不需要老师自己动手标记号——这是这一讲最重要的一句话。

为什么要有 C 这条路? 因为有一部分老师(尤其是跟着本书做过一遍的)

会自己先把模板标好再存起来,标好之后每年直接复用;

这种情况机器只要把记号读出来就行,一个字段都不用猜,最准。

2.2 难在哪:人一眼看出的事,机器要判断

先说清难点的位置,后面的做法才好理解。

人看一张表,一眼就知道“课程名称”后面那个位置要填课名、“学分”旁边那格要填数字。

这是因为人懂“填表”这件事本身:知道表是干什么用的、知道哪些格子是“要你填的”、

哪些是“印上去不许动的”。

机器没有这种常识。对它来说,一张表格从头到尾就是一堆文字盒子,

“课程目标1”和“课程名称”看上去没什么区别——都是几个汉字,都在格子里。

所以机器要做的判断,其实是三个:

  1. 这一格是“标签”还是“内容”——“课程名称”是标签(说明这格填什么),

“网络营销”是内容(真正填进去的)。

  1. 这一格是“每次要变的”还是“永远不变的”——“课程名称”要变,

“桂林学院”通常不变,“(中文)”这种格式提示不变。

  1. 这一格是“单值”还是“一条一条”——“课程名称”一条就够;

“课程内容”那张表要一行一行填(一个项目一行、一个学时一行)。

这三问,恰好对应一台机器要干的三件事:找位置、分类别、定结构。

2.3 这道工序,其实是“文书工作”的老规矩

“从格式化的文书里把要填的位置找出来”,这件事在办公自动化里做了几十年,

只是做法一代一代在变:

打个比方:这就像给一屋子人量体裁衣——每一件都得重新量;

而模板的做法是先做一套通用尺码,谁来了按尺码挑。

第一代是“刻板”——八十年代的公文套打,位置是人量出来的:

哪一行第几格,用尺子量好,刻在蜡纸或者套打模板上。位置一变,全部重来。

第二代是“邮件合并”——九十年代 Word 里出来的功能:

在文档里插入“合并域”(就是今天的占位符),然后拿一张表往里喂数据。

它的前提是“得有人先把域插好”——这一步只能手工,所以它一直没有真正普及到教师手里。

第三代是“填制引擎”——也就是第 8 讲讲的那道公式:

数据 × 模板 × 映射规则,三个要素抽出来放到配置里,换场景不用改程序。

第四代就是这一讲讲的:让机器自己把“要填的位置”找出来,

不用人先插域,也不用量尺子。

回头看这四代,有一条清晰的线:每往前走一步,都是把“人必须先做的准备”再砍掉一层。

刻板时代要人量尺寸,邮件合并要人插域,到了今天,老师只需要把表交出来。

顺带说一个更早的例子,能帮我们记住这件事的价值:

十七世纪以前,欧洲的文书靠抄写员手抄,一份公文抄一遍,抄错一个数就要重来。

十五世纪活字印刷出现后,“内容”和“格式”第一次被分开——排版排一次,内容换多少遍都行。

我们今天讲的“模板”与“数据”分家,本质上还是这条老路[1]:

把重复的格式固化下来,把变化的内容留出来。

2.4 机器认表:先找候选,再判字段

讲清做法。整个过程分两步,很像出版社的校对流程:

第一步,把“像位置的地方”全找出来(这一步快、宁可多找)。

规则很简单,都是表格里最明显的几种信号:

冒号左边是要填什么的说明,右边是内容。

再比如教案大表里“课程名称 | 网络营销”这一对,左边是标签、右边是内容。

判断标准是“这一格字数很少、而且含关键词(名称/代码/学时/教师/班级…)”。

第二步会用到这一步的结果。这一步只管“撒网”,不管“是不是”——

多找出来一些没关系,漏掉才麻烦。

比如,候选里会冒出“课程目标1”“项目一”“34学时”这些,看着都像内容,

其实全是编号和数据行,该被剔掉——这一步就是干这个的。

第二步,把网络上来的候选,逐条判断“是不是要填的”(这一步慢、但要准)。

判断工作交给模型来做,因为它恰好擅长读语义。

给它的任务就是前面那三问:

用打比方讲清这两步的分工:第一步像“征集线索”,第二步像“甄别证据”。

只做第一步,会把一大堆格式性文字混进来(表里“课程目标1、课程目标2”都会被抓出来);

只做第二步,又容易漏(模型读一万字的表格很贵,而且会看花眼)。

两步合起来,才既不漏、又够准。

这一步也顺带解释了第 8 讲留下的那个问题——题目为什么要给字段起名字。

因为字段有名字,才能写出 {{课程名称}} 这样的记号;

有了记号,机器填的时候才知道“这一格该放哪个数据”。

起名这件事,是从“看得懂”到“填得进”的桥。

2.5 认出来之后:把记号写回你的表

判断完,机器要把结果写回模板——在每一个“内容位置”上放一枚记号,

例如把 课程名称:(中文):网络营销 变成 课程名称:(中文):{{课程名称}}。

这里有两条纪律,都是从真实使用中总结出来的:

打个比方:这就像修理钟表——只换掉那个坏齿轮,别的零件一颗不动。

第一条:只动该动的地方,格式一个字节都不改。

学校表格的字体、字号、表格线、页边距,都是教务处定的,机器不许碰。

所以注入记号时采取的做法是“原地替换”:在原来那个位置把内容换成记号,

周围的文字、格式、行距全部原样保留。

这也是为什么成品打开后,和学校原表看起来一模一样——因为它本来就是同一份表。

第二条:位置找得准不准,最终要人过一眼。

识别是概率性的判断(模型看语义),不是查表——所以本书的规矩是:

识别结果必须读给老师核对,字段齐不齐、名字顺不顺口,由老师一句话确认。

这不是在推卸责任,而是这条路的正确分工:机器擅长找和填,人负责确认“要填的是不是这些”。

2.6 一个诚实的问题:哪些表它认不好

讲到这儿应该主动交代边界,免得读者踩坑。

它认得好的:学校发的常规表格。含“标签:内容”结构的、表格里“标签格 + 内容格”结构的、

文字型模板(大纲、教案、总结、申报表、检查表……)。

它认不好的:

而是一堆像素,机器读不出位置。遇到这种,先用 Word 重打一份格式再上传——

这份辛苦是值得的,因为以后每学期都能用。

这种机器只能猜,识别结果会偏少。核对时发现漏了字段,手工把名字补给它即可。

机器目前只能认出第一个位置(中文名),英文名那一段要老师在核对时补上。

这种情况下建议改用简化版——毕竟填制要的是“把信息放对位置”,不是还原设计。

说清这些,不是自我贬低,而是让读者把期望放对:

这一讲的能力解决的是“常规教学管理表格的批量填制”,

不是“任何一张纸都能自动处理”。知道边界在哪,才知道什么时候该动手补一步。

图 9-1 模板从哪来:三条路(空白表格 / 已填样例 / 已带占位符)→ 同一入口 → 出件
图 9-1 模板从哪来:三条路(空白表格 / 已填样例 / 已带占位符)→ 同一入口 → 出件

三、动手三件套

一句话指令

先看模板库里有什么(内置范例 + 自己上传过的):

教学资料填制有哪些模板可选?用 filler_templates 列给我。

库里没有合用的,就把学校发的那份传上来:

上传这个模板,用 filler_template_upload,模板名就叫【本校课程教学大纲】。

拿到识别结果后(这一步要人过一眼):

用 filler_template_info 看看【本校课程教学大纲】这个模板要准备哪些数据。

然后出件:

按【本校课程教学大纲】这个模板出教学大纲,用 filler_run。数据是:课程名称【数智分析与应用】、课程代码【DI2026】、学分【3】、学时【48】……

预期产物

两样东西,缺一不可:

  1. 一份「可填模板」——你的原表加上占位符后的样子。

打开它,你会看到 课程名称:(中文):{{课程名称}} 这样的记号。

这份要留着,以后每学期都用它。

  1. 一份成品 docx——数据填进去之后的结果,版式与学校原表一致。

以实测为例(用某学院真实的教学大纲模板跑的):

识别出 9 个变量字段 + 1 张课程内容表,注入 12 处记号;

给数据后出件 1 份,校验结果「未替换 0 / 缺失 0」,

读回确认“课程名称”从原来的“网络营销”换成了“数智分析与应用”,表格逐行填入 3 行。

校验点

四问,逐条对:

  1. 字段认全了没有? 把识别出的字段清单和你的原表对一遍:

该填的地方有没有漏掉的?(漏了就在核对时手工补上。)

  1. 版式变了没有? 打开成品,和学校原表并排看:字体、字号、行距、表格线应当完全一致。
  2. 校验报告过没过? verdict 必须是「校验通过(未替换 0 / 缺失 0)」。
  3. 固定文案改对了没有? 模板里“印上去不动”的部分(校名、课程名标题、

固定说明),如果属本学期要改的,要在模板里改一次——

这是老师自己的活,机器不管。

四、常见错误与排错

错误一:上传的是 PDF 或扫描件。

表现是识别出零个字段,或者提示“没在模板里找到可填位置”。

原因:PDF 里的文字常常不是文字(尤其扫描件),机器无从判断位置。

排错:用 Word 重打一份格式再上传;重打一次,以后每学期都省事。

错误二:把“识别结果”当成“最终答案”。

表现是上传后直接出件,成品里少了几个字段。

原因:识别是判断,可能漏(尤其“一行里填两个值”的排版)。

排错:读一遍字段清单再出件。这一步花一分钟,省半小时返工。

错误三:指望机器改“固定文案”。

表现是成品里课程名称换了,但标题还写着《网络营销》。

原因:标题在模板里是固定文字,不属变量字段。

排错:固定文案在模板里改一次,之后长期不动——这正是第 8 讲“三变三不变”里“模板偶尔变”那一条。

错误四:一个老师传一堆模板,名字起得像谜语。

表现是过两个月自己都分不清哪个是哪个。

排错:模板名照实际叫——“本校课程教学大纲(2026版)”“学院教案(商学院格式)”,

不要叫“新模板2”“最终版”。

错误五:拿别人学校的模板当自己的用。

表现是直接把同事或外校的表传上来出件。

排错:模板里含学校名、学院名、公章位这类信息,

换成自己的再上传;涉及第三方版式的,先问一句能不能用。

五、边界与红线

校名、课程标题、固定说明这些属于模板本身的一部分,改动由老师决定。

用完的产物及时归档,不要散放在公共目录(详见第 13 讲)。

外校/企业的版式涉及权利,不要随手传播。

而是本书第 13 讲那条纪律在这里的具体形式:校验通过 + 人核对过,才算交付。

六、拓展与学科迁移

一位老师上传好,其他老师直接在同一个库里选它就行——这就是模板的复用价值:

一次识别,全教研室受益。

国际经济与贸易专业可以传合同封面与报关单据——换的是表,走的是同一条路。

检查表),新老师入职第一天就能用;老教师退休,格式也不丢。

这件事的价值,等于给学院建了一个“文档格式档案”。


带走一句话

模板不必是我们预置的——老师手上的那份表,交出来就能用;机器负责认位置,老师负责确认。

背后的引擎(本讲速查)

你要做的事工具全名一句话作用
看模板库有哪些模板mcp__doc-filler__filler_templates内置范例 + 我上传的,一张清单
看某个模板要准备哪些数据mcp__doc-filler__filler_template_info单值字段 + 列表区 + 样例
上传自己的模板mcp__doc-filler__filler_template_upload自动识别字段 + 注入占位符
按选中的模板出件mcp__doc-filler__filler_run一份 / 一批
核对是否真填完mcp__doc-filler__filler_check给出校验结论

本讲要点(速记)

参考文献

[1] 关于“内容与格式分离”这一脉络,活字印刷(约 1450 年)使排版与内容可分离、进而使批量出版成为可能,相关论述见:Eisenstein E L. The Printing Press as an Agent of Change[M]. Cambridge: Cambridge University Press, 1979.

[2] OpenAI. Function calling[EB/OL]. https://platform.openai.com/docs/guides/function-calling.(工具的描述与参数如何决定模型能否正确调用)

数据与平台:本讲实测数据来自 zhenyuonline.cn 的 doc-filler 引擎模板库能力(2026-09-17 实跑):

以某学院真实教学大纲模板(无占位符)为输入,识别出 9 个变量字段与 1 张动态表,注入 12 处占位符;

给数据后出件 1 份,校验结果「未替换 0 / 缺失 0」。所用模板已作脱敏处理。