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

提示词结构

提示词结构 · 阅读后完成下方实验与检查题,再用「标记完成」记录进度。

学习目标

把一个含糊的请求改写成结构化提示词:目标、背景、输入、约束、结果格式五要素写清楚;并用同一组样例对比改写前后的行为,代替凭感觉调提示词。

问题场景

「帮我总结这段话」——每次输出的条数、格式、侧重点都不一样,没法接程序处理,也没法比较两次结果。你补一句「简洁点」,结果变短了但重点也丢了。凭感觉调提示词,永远在碰运气。

核心解释

把提示词当接口设计,五要素各司其职:

要素 回答的问题 示例写法
目标 要模型做什么 「从下面的介绍中提取 3 个学习要点」
背景 谁在用、用在哪 「读者是在校学习者,用于课程页摘要」
输入 处理哪一段内容 「【输入内容】……」明确标出边界
约束 不要做什么 「只提取原文要点,不要扩展,每条不超过 20 字」
格式 结果长什么样 「每行一条,以 - 开头」或「输出 JSON 数组」

改写前后对比:

改写前:帮我总结这段话

改写后:
目标:从下面的课程介绍中提取 3 个学习要点。
背景:读者是在校学习者,介绍来自 React 入门课程。
输入:【输入内容】本课带你从零认识组件与状态……
约束:只提取原文出现过的要点,不要扩展,每条不超过 20 字。
格式:每行一条,以 - 开头。

三条原则:

  1. 写清楚 ≠ 啰嗦:五要素各管一段,多余的形容词一个都不要。「认真、专业、高质量」对模型没有可执行的含义。
  2. 约束要可判定:「简洁点」因人而异,「每条不超过 20 字」才能被稳定执行。
  3. 格式跟消费方走:给程序消费就用 JSON(A09 课讲怎么校验),给人看就用列表;格式错误是最常见也最好防的失败。

示例拆解

把五要素工程化成模板函数,让提示词可测试:

function buildPrompt(
  input: string,
  opts: { goal: string; background: string; constraints: string[]; format: string }
) {
  return [
    `目标:${opts.goal}`,
    `背景:${opts.background}`,
    `输入:【输入内容】\n${input}`,
    `约束:${opts.constraints.join(";")}。`,
    `格式:${opts.format}`,
  ].join("\n");
}

关键点:

  • 换输入不换结构:模板固定后,不同输入的行为差异才可归因于输入本身。
  • 输入用【输入内容】标注边界,防止正文里的指令被当成要求(A04 课来源边界在提示词层的落实)。
  • 验证方式:固定 3 个样例输入(典型、边界、异常各一),改写前后各跑一遍并排对比。一次只改一个要素,否则说不清是哪个改动起了作用。

动手任务

  1. 在实验区把含糊提示词补到五要素齐全,观察模拟响应如何从「自由发挥」变成「受控」。
  2. 给「把课程简介改写成一句话推荐语」写五要素提示词,交给同学看能否找出歧义。
  3. 本机固定 3 个样例,把你某个真实提示词改写前后各跑一遍,记录格式错误次数与遗漏要点的对比。

常见错误

  • 堆形容词代替约束:「认真专业地总结」不可执行,等于没写。
  • 输入不标边界:正文里的句子被当成指令,或要求被当成正文处理。
  • 一次改五处:行为变了没法归因,回到碰运气。一次一个要素,同一组样例对比。
  • 格式与消费方脱节:给程序输出散文,给人看输出 JSON 字符串,两边都不好用。

检查与复盘

自查清单:

  • 能默写五要素及各自回答的问题
  • 能把一段含糊请求改写成五要素齐全的版本
  • 验证提示词改动时用固定样例组对比,不凭单次感觉

参考资料

动手实验
动手实验
预览
点击「运行」在隔离沙箱中预览
检查题共 3 题,提交后立即显示解析
答案由服务端判定;答错的题会自动进入复习计划。
Q1单选简单

把「帮我总结这段话」改写成结构化提示词(目标/背景/输入/约束/格式五要素),下列哪条违反了「约束要可判定」原则?

Q2读代码中等

阅读提示词模板函数。设计者坚持让待处理的正文必须包在【输入内容】标注里传入,主要原因是?

function buildPrompt(input, opts) {
  return [
    `目标:${opts.goal}`,
    `背景:${opts.background}`,
    `输入:【输入内容】\n${input}`,
    `约束:${opts.constraints.join(";")}。`,
    `格式:${opts.format}`,
  ].join("\n");
}
Q3故障定位较难

bug 现场:团队对提示词做了一轮优化,同时改了五处——目标加了限定、约束换成形容词、格式从列表改成 JSON、输入换了标注方式、背景补了两句。上线后输出确实变了,但没人说得清是哪个改动起了作用,也无法稳定回到之前的好结果。问题出在哪、该怎么改工作方法?

读完这一课了?

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

Command Palette

Search for a command to run...