【可执行状态】现在就能做
【本讲对应资产】doc-filler 引擎(5 个工具),本讲主讲填制的通用原理,第 10—13 讲分场景实操
【本讲原理来源】L3 第 20 课《Function Calling 深度解析》(工具的描述与参数)、L3 第 19 课(能力的封装)
每个学期开学前,总有那么几天,教务办公室的灯亮到很晚。
桌上摊着一叠学校发下来的表格:《课程教学大纲(2026版)》《教学进度表》《教案》《结课作业封面》。
表格长得一模一样,只有里面的字不一样——课程名不一样、教师名不一样、学时不一样、学生姓名不一样。
老师们做的事,说穿了只有一件:把已经知道的信息,一格一格搬到固定的位置上。
这件事,看上去简单,做起来费时,而且极易出错——错一个学时,退回来重填;
漏一个学生,整份名单对不上。它不产生任何新知识,却吃掉了教师最宝贵的整块时间。
有意思的是,这件事的形式,三百年来几乎没变过。
十七世纪欧洲的抄写员,把同一封信的内容誊抄到不同的呈文模板上;
二十世纪八十年代的机关文书,用刻好格式的蜡纸油印;
九十年代有了电脑,财务人员学会了邮件合并——一份名单加一个模板,批量生成邀请函。
到了今天,学校发的仍然是 Word 模板,教师做的仍然是“复制、粘贴、改一改”。
形式没变,但今天这件事可以有另一种做法:
把“这一格填什么”讲清楚一次,之后所有的格子都由机器去填。
这一讲的公式,就是讲清楚“怎么把这件事讲清楚”。
先说两位老师的同一个下午。
王老师(化名)的做法,是绝大多数老师的做法。
下午两点,她打开教务处发来的大纲模板,另存为“我的大纲”。
接着打开去年的那份,把年份改掉;再打开教务系统,查这学期的学分和学时;
再翻到教师信息表,把自己的工号和职称抄过来。
一门课改了十几处,花了四十分钟。
第二门课如法炮制——又是四十分钟。第三门课改到一半,隔壁同事来问事,回来接着改,
把“48 学时”错抄成了“42 学时”。这份大纲在教研室检查时被打回,重做一遍,又一个下午。
晚上八点,她带着两大杯咖啡离开办公室,心里想的是:“这种活,什么时候能不用人干?”
李老师(化名)的做法不一样。
她把两条课程信息写成一个清单(课程名、课程代码、学分、学时、课程性质、适用专业),
再把自己这门课通用的信息写在一起(学期、日期、学院),然后在入口里说了一句话。
三分钟后,返回来两份文件:数智分析与应用-教学大纲-任渝.docx、
跨境电商大数据统计与分析-教学大纲-任渝.docx。
她做的是同一件事——只是把“抄哪一格”这件事,从手上搬到了配置里。
下午剩下的时间,她去听了两节课,回来改了一份学生的竞赛方案。
同一件事,一个下午,一个三分钟。差别不在打字快慢,也不在谁更用电脑,
而在有没有把这件事拆成三样可以交给机器的东西。
先把概念说清楚。本书说的填制,指的是这样一件事:
把一份已经知道的数据,按照一套固定规则,填进一份固定格式的文件里,得到一份成品文件——
数据可以换,格式和规则通常不变。
举两个例子就明白了。例如,期末要给全班发结课作业,学生的姓名学号在教务系统里(信息早就有),
作业封面的版式教务处已经定好(位置早定好);再比如,每学期要报的课程教学大纲,
课程名、学分、学时都是现成的,只有格式要求每学期重发一遍。
它有两个特点,决定了它天生适合交给机器:
一是信息早就有了(学分、学时、学生姓名都不是新知识,只是散落在各处);
二是位置早就定好了(模板上哪一格填什么,教务处已经规定死了)。
举个日常的例子:就像搬家。累的不是把东西放进箱子,而是决定“这个东西该放哪个箱子”、
放完还要检查一遍有没有落下的。——找到那个信息在哪、
找到它该填在哪一格、填完之后再核对一遍。而这三次“找”,恰好都可以变成机器做的事。
把上面的“填、找、核对”翻译成工程语言,就是这一讲的标题,它是一条可以背下来的公式:
填制 = 数据 × 模板 × 映射规则
三样东西各司其职,缺一不可:
| 三样 | 通俗说法 | 在教学填制里的具体是什么 | 谁负责提供 |
|---|---|---|---|
| 数据 | 要填的内容 | 例如:课程名「数智分析与应用」、学分「3」、学时「48」、学生姓名「王振杰」 | 你(或教务系统导出) |
| 模板 | 要填的那张表 | 教务处发的《课程教学大纲(2026版)》docx | 教务处 |
| 映射 | 哪一格填哪一项 | 一张对应表:{{courseName}} ← 课程名、{{credits}} ← 学分 | 引擎里已经配好 |
用生活里的例子打比方:这三样,就像食堂打饭的三件事——
打什么菜(数据)、用哪个餐盘(模板)、每样菜打在哪一格(映射)。
你想换菜单,不用换餐盘;换了新餐盘,也不用重学打菜的手艺。
三样分开,是为了换一样的时候,别的两样不用动。
现在关键的一点来了。这三样里,只有“数据”是每学期都在变的:
模板教务处三年才换一次版式;映射规则一旦配好,可以一直用。
所以这道公式真正的含义是:
一次配置,长期使用——每学期你只动数据那一项。
“把一件事拆成若干可重复的标准动作,然后交给不同的人(或机器)去做”——
这个道理,经济学里讲过两百多年了。
一七七六年,亚当·斯密在《国富论》里写过一个制针工厂的例子:
一个工人独自做针,一天做不出二十枚;但把做针分成抽丝、拉直、切断、削尖、打磨等十八道工序,
十个人分工协作,一天能做出四万八千枚——每人平均四千八百枚[1]。
他没有多雇人、没有换材料,只是换了一种组织方式,产量提升了两百多倍。
再比如今天的医院:不是一位医生从头到尾包办检查到开药,而是挂号、化验、看诊、取药各管一段——
每一段的动作都标准化,整条流水线的效率就上去了。
一九一三年,福特把同样的道理搬到了汽车厂:
不是让每个工人造一辆车,而是让车在流水线上移动,每个工位只做一个标准动作。
T 型车的装配时间从十二小时缩短到九十三分钟。
这两个例子,说明的是同一件事:效率的提升,主要不来自人干得更快,而来自事情被拆得更清楚。
填制这件事的拆分方式,就是上面那三样——数据、模板、映射。
把它们分开之后,数据可以由教务系统导出、模板由教务处统一维护、映射由技术上一次配好,
教师本人只做她唯一不可替代的那一件事:确认数据对不对。
第一次用填制引擎的人,几乎都会在同一个地方停一下:
生成四十份结课作业,学生姓名和学号当然是一人一份,
可是“学期”“学院”“任课教师”这些信息,四十份里完全不重复,难道要写四十遍?
这个疑问非常关键,因为它正好指出了数据其实有两层:
例如:四十份结课作业里,学号和姓名各不相同(一层),而“2026学年春季学期”“智能金融学院”
“财经公文写作”“任渝”这四项,四十份一字不差(另一层)。
用打比方讲清楚这两层的区别:这两种信息,就像一份班级名册和一枚公章。
名册上每个人的名字都不一样(记录级),公章却只有一个,盖在每一份上都是同一个(班级级)。
你不会因为要盖四十份,就刻四十个一模一样的章。
填制引擎把这两层分开处理,正是为了让你不必重复劳动。
在我们的引擎里,这两层各有各的位置:一人一份的放进“数据”里(列表,一条一个学生),
大家共用的放进“公共信息”里(一份,所有记录共享)。
这也是新手最容易漏的一步——漏了公共信息,交出来的四十份文件里,
“学期”“任课教师”这些位置就会空着(第 13 讲专门讲怎么发现这种漏)。
讲到这里,一定有人要问这个问题:既然有大模型了,为什么不干脆把数据“喂”给它,
让它把整份大纲写出来?还要模板、还要映射,这不是多此一举吗?
这个问题问得很对,值得认真回答,因为它划出了本书反复要讲的一条界线。
先看一个数字。吴恩达在 2024 年 3 月梳理过多个研究团队的结果,给出这样一组对照:
在同一个编程基准测试上,让模型直接生成答案,正确率是 48.1%(早期模型)到 67.0%(新模型);
而把这同一个稍早的模型包在一套迭代流程里(先写、再查、再改),最好成绩达到 95.1%[2]。
也就是说:流程带来的提升,压过了换一个更强模型的提升。
把这个结论搬到填制上,道理是相通的:
让大模型“直接写一份大纲”,它写的是一份像大纲的东西——
平均而言很合理,偶尔会发挥,你没法保证它每一格都对。
而“数据 × 模板 × 映射”的引擎,它做的是把已经确认过的数据,搬到确认过的位置——
不发挥,也不会发挥失常。就像打印机套打——它不会因为打了一百份就“发挥创意”换个位置,
每一份都和第一份一模一样。
一句话概括两者的分工:
大模型擅长“像”,引擎擅长“对”。
凡是要求“每一格都对、每一次都一样、改一处到处都对”的活,用它;凡是要求“想个新点子”的活,才交给它。
这不是说大模型不重要——恰恰相反,本书第 6 讲(课件)、第 17 讲(研究报告)里,
它承担的是“理解需求、组织内容”的部分。填制和生成,是两种活,各找各的工具。
(顺带说一句技术上的话,只讲到能听懂为止:引擎在系统里是以“工具”的形式存在的,
而大模型要调用工具,靠的是一份工具说明书——它先读说明书,判断该不该用这个工具,
再照着说明书准备参数。所以“说明书”写得好不好,直接决定它调得准不准。
这也是为什么本书每一讲都要告诉读者工具的真名:有了名字,才有说明书可言。
更细的机制见参考资料。[3])
最后把这道公式的价值讲透。它看起来只是“填表”,实际上规定了三样东西各自的稳定程度:
| 会变吗 | 多久变一次 | 变了之后要做什么 | |
|---|---|---|---|
| 数据 | 会变 | 每学期、每个班、每次课 | 换数据文件,重跑一次 |
| 模板 | 偶尔变 | 教务处换版式时(几年一次) | 换模板文件,映射微调 |
| 映射 | 基本不变 | 配置一次 | 不动 |
打个比方:这就像办了一张图书馆借书证,以后每次借书只报书名就行,不用重新办证。
也就是说:第一次用要多花二十分钟把数据整理清楚,之后每个学期只需要换数据那一层。
第一门课两门课如此,第十门课第二十门课还是如此——因为变的是数据,不是流程。
那么模板从哪来? 这恰恰是老师最先问的问题——
“你们这个模板跟我们学校发的不一样吧?”。
下一讲(第 9 讲)专门回答它:学校发的那份表,交出来就能用,
不需要老师自己标任何记号。这里只要先记住一句:模板可以是别人给的,
也可以是你手上那份现成的。
这就是这一讲要带走的东西:不是“学会了用某个按钮”,而是手里有了一道公式,
以后遇到任何“把已有信息填进固定格式”的活,你都先问一句:
数据是哪一层?模板在哪?映射怎么定?三个问题一答完,这件事就该交给引擎了。
先看引擎里有哪几类活可以填(这一步叫“选场景”):
教学资料能自动填哪几类?用 filler_scenarios 列给我。再看你选的那一类,需要准备什么数据(这一步叫“看契约”):
「课程教学资料」这类要准备什么数据?用 filler_help 给我骨架。然后出件:
按这个模板出【2】门课的教学大纲,用 filler_batch。数据是这两条课程记录,公共信息是学期【2026-2027学年第一学期】、日期【2026年9月17日】。以实测为例:两条课程记录 + 一份公共信息,得到两份 docx:
数智分析与应用-教学大纲-任渝.docx
跨境电商大数据统计与分析-教学大纲-任渝.docx文件名就是识别符——课程名和教师名进了文件名,所以不用打开就能核对是哪一份。
出件之后必须核三件事(这一条是本书的纪律,不是可选项):
verdict 必须显示「校验通过(未替换 0 / 缺失 0)」。不是这个结论,就不算交付。
比如上次就有一位老师把“48 学时”填成了“42 学时”,文件生成得漂漂亮亮,
数字却是错的——引擎不会替你发现这类错误,但它会如实告诉你哪些格没填上。
这四项是容易被换错的(尤其“48 学时”写成“42 学时”这种)。
错误一:只给记录,不给公共信息。
表现是文件出来了,但“学期”“任课教师”那几格空着。
原因:公共信息没传进去(就是 2.4 节讲的两层信息)。
排错:把班级级的几项写进公共信息里,重跑。
错误二:让引擎“自己想”数据。
表现是希望用一句话就生成完整大纲,包括课程目标、学时分配这些内容。
原因:把“填制”和“生成”混在了一起。填制只负责搬运已经确认的信息;
课程目标这一类需要判断的内容,得你自己先写好(或者由第 6 讲、
第 16 讲讲的生成类工具先产出,再交填制)。
排错:先把内容定下来,再交给填制——填制是最后一公里,不是第一步。
错误三:模板换了版式,映射没跟上。
表现是教务处换了新版大纲模板,填出来的文件里出现奇怪的空白,或者内容挤在一处。
原因:映射是按占位符配的,新模板的占位符变了。
排错:让引擎先读一遍新模板(filler_help 会列出模板里的占位符与映射关系),
对不上的补进映射,再重跑。
错误四:把“份数多”当成“工作量大”。
表现是四十几份作业,觉得必须要人工核对很久。
原因:没做名单对账。正确做法是拿产物文件名与名单对一遍:
应交几份、实交几份、缺谁——这件事让机器做,比人眼快得多,且不会漏。
(第 12 讲有完整做法。)
错误五:改完了不回看。
表现是看到“生成完成”就交上去。
原因:把“引擎说做完了”当成了“做完了”。
排错:见第 13 讲。校验是交付的一部分,不是额外工作。
做名单类填制时,只带这次任务需要的最小字段(姓名、学号足够,不要带身份证号、
家庭住址、成绩)。用完的产物及时归档,不要散放在公共目录里。
考核比例是否合理——这些是教师的专业判断,工具的活是把格式和重复劳动干掉。
引擎这一侧只接受“换模板文件”,不擅自修改模板。
(如“使用 doc-filler 引擎的 filler_batch 批量填制”),不要只写“用了 AI”。
电子商务专业可以填选品报告、财务管理专业可以填预算说明与对账表、
国际经济与贸易专业可以填报关单据与合同封面——引擎不变,三样里的两样换掉。
“材料归档封面”(同一批材料 × 同一个封面格式)、“迎检台账”(同一套指标 × 同一张表),
都是同一类问题(已有信息 + 固定格式),同样用这道公式解决。
可复核的教学过程材料——这比“事后补材料”省力得多,也更经得起检查。
填制不是让 AI 替你写,是让规则替你跑;你只负责一件事——把数据确认对。
| 你要做的事 | 工具全名 | 一句话作用 |
|---|---|---|
| 看有哪几类活能填 | mcp__doc-filler__filler_scenarios | 列出四类场景 |
| 看这一类要准备什么数据 | mcp__doc-filler__filler_help | 给你数据骨架与映射 |
| 出一份(先试通) | mcp__doc-filler__filler_run | 一条数据出一份文件 |
| 出一批(课程/学生粒度) | mcp__doc-filler__filler_batch | 一批记录出多份文件 |
| 核对到底填完没有 | mcp__doc-filler__filler_check | 给出校验结论 |
[1] 亚当·斯密. 国民财富的性质和原因的研究(上卷)[M]. 郭大力, 王亚南, 译. 北京: 商务印书馆, 1972.(原著初版 1776 年;制针工厂分工实例见第一卷第一章)
[2] Ng A. Agentic AI(智能体式人工智能)[EB/OL]. DeepLearning.AI, 2024.(该数据为作者梳理多个研究团队结果所得,非单一官方基准;本书引用时按“梳理”表述)
[3] OpenAI. Function calling[EB/OL]. https://platform.openai.com/docs/guides/function-calling.
数据与平台:本章实测数据来自 zhenyuonline.cn 的 doc-filler 引擎(2026-09-17 实跑):
teaching 场景 13 个占位符,两条课程记录出件 2 份,校验结果「未替换 0 / 缺失 0」。