A08第 1 / 1 课时未开始内容版本 1.0.0 · 核验于 2026-10-26

示例与任务拆解

示例与任务拆解 · 阅读后完成下方实验与检查题,再用「标记完成」记录进度。

学习目标

读完本课你会用两个手段驯服复杂请求:给少量代表样例定义行为,把大请求拆解成有序子任务;并知道怎么验证这两个手段真的减少了格式错误和遗漏。

问题场景

你让模型「给一批课程打标签」,要求「标签要专业」。结果:第一次输出逗号分隔的词,第二次输出 JSON,第三次冒出「前端利器」这种自造词。你补了一句「输出要规范」,好了一点,但还是不齐——形容词管不住行为,示例才管得住。

核心解释

两个工具,解决两类问题:

工具一:示例(few-shot)。 与其描述行为,不如直接演示行为。模型对「照着例子输出」的服从度远高于「照着形容词输出」。示例放在消息序列里,就是一对 user/assistant:

const messages = [
  { role: "system", content: "你是课程标签员。只输出 JSON 数组,每项 {label},标签从给定集合中选。" },
  { role: "user", content: "课程:useState 与状态快照。标签集合:[基础, 状态, 进阶]" },
  { role: "assistant", content: '[{"label":"状态"}]' }, // 示例 1:演示格式与取舍
  { role: "user", content: "课程:HTTP、Fetch 与取消请求。标签集合:[基础, 状态, 进阶]" },
  { role: "assistant", content: '[{"label":"基础"}]' }, // 示例 2:演示边界情况
  { role: "user", content: "课程:流式协议与事件。标签集合:[基础, 状态, 进阶]" }, // 真实请求
];

示例设计的讲究:

  • 代表性:覆盖典型情况和容易出错的边界情况,2-3 个就够;每个示例都要「值得模仿」——示例里有自造词,模型就学会自造词。
  • 数量克制:示例也占上下文(A02 课),多了挤掉正题还抬成本。
  • 示例即格式定义:输出长什么样,例子说了算,比文字描述可靠。

工具二:任务拆解。 一步到位的大请求(「读这篇文章,提取要点,分类,再生成练习题」)每一步都容易打折。拆成有序小步骤,每步可单独验证:

// 步骤 1:提取要点(输出固定格式,方便校验)
const points = await ask(buildPrompt(article, { goal: "提取 5 个要点", format: "JSON 数组" }));
// 步骤 2:基于要点出题(输入是上一步的结构化结果,不再碰长文)
const quiz = await ask(buildPrompt(JSON.stringify(points), { goal: "为每个要点出 1 道判断题", format: "JSON 数组" }));

拆解的收益:每步输出小而可校验;出错能定位到步;中间结果可以复用。代价:多次调用更慢更贵——先拆再合,别为了拆而拆。

示例拆解

设计一个对照实验,验证两个工具的效果(用固定样例组,A07 的方法):

任务:给 5 门课程打标签,标签集合固定,输出 JSON。

组 A(基线):只有要求,无示例,不拆解。
组 B:加 2 个示例。
组 C:拆成两步(先逐门打标签,再汇总去重)。

关键点:

  • 每组跑同一组样例各 3 次,统计两类指标:格式错误次数(能被 JSON.parse 吗)、遗漏次数(5 门都打了吗)。
  • 通常能观察到:B 显著降低格式错误,C 显著降低遗漏。数字落到纸上,比「感觉变好了」可靠。
  • 如果某组没改善,先检查示例本身是否合格(有没有自造词、格式是否统一),再考虑加码。

动手任务

  1. 给「从课程介绍里提取关键词」任务写 2 个示例:一个典型样例、一个正文很短的边界样例,跑一遍对比无示例版本。
  2. 把「读课程并生成 3 道练习题」拆成两步,写出每步的输入、输出与验证点。
  3. 用上面的 A/B 对照法测你的示例是否有效:统计 3 次运行的格式错误次数,记录在注释里。

常见错误

  • 示例自相矛盾:两个示例格式不一样,模型学会的是「随意」。示例之间必须严格一致。
  • 示例过多:十几个示例挤占上下文,模型反而「背错重点」。2-3 个代表样例是经验起点。
  • 拆得太碎:五个子任务变成五次调用,延迟和成本翻倍,中间格式还要互相适配。拆到每步可验证即可。
  • 拆解后不给上下文:第二步只拿到第一步的结果却不知道原始任务,输出断链。每步提示词要自带必要背景。

检查与复盘

自查清单:

  • 能说出示例和形容词在控制行为上的区别
  • 能为一个新任务挑选 2-3 个有代表性的示例并说明理由
  • 能设计 A/B 对照实验验证改进是否真实存在

参考资料

检查题共 2 题,提交后立即显示解析
答案由服务端判定;答错的题会自动进入复习计划。
Q1单选简单

用 few-shot 示例控制「给课程打标签、输出 JSON 数组」任务的输出行为,下列设计符合课程口径的是?

Q2多选中等(多选,全部选对才算正确)

把「读这篇文章,提取要点,分类,再生成练习题」这类大请求拆成有序子任务,下列说法正确的有?(多选)

读完这一课了?

标记完成后,工作台会安排接下来的学习。

Command Palette

Search for a command to run...