同样问大模型,有人得到杂乱无章的回答,有人得到结构清晰、可直接用的结果。差别往往不在模型,而在提示词。这篇教程带你把”随口一问”升级成一套可复用的结构化提示词模板,每一步都给出可直接套用的写法。

为什么要结构化

零散的提示词有三个问题:模型猜不准你的意图、输出格式不稳定、换个任务又要重头想。结构化模板把要求拆成固定的几块,让模型每次都清楚”我是谁、要做什么、有什么限制、输出成什么样”。一个完整的结构化提示词由这几部分组成:

步骤一:设定角色

用 system 消息告诉模型它扮演谁,角色决定了语气和专业度:

你是一位有 10 年经验的资深技术编辑,擅长把复杂概念讲得通俗易懂。

角色越具体,回答越贴合场景。”你是助手”远不如”你是资深技术编辑”。

步骤二:明确任务

一句话说清要模型做什么,用动词开头,避免歧义:

请把下面这段技术文档改写成面向初学者的科普短文。

不要写”处理一下这段文字”——“处理”太模糊,模型只能靠猜。

步骤三:列出约束

把边界条件逐条列出,模型会严格遵守:

约束:
1. 字数控制在 300 字以内
2. 不使用专业术语,必须出现时用括号解释
3. 保持客观,不添加原文没有的信息

步骤四:给示例(Few-shot)

给一到两个”输入→输出”的例子,比一大段描述更有效:

示例:
输入:TCP 是一种面向连接的协议。
输出:TCP 就像打电话,双方要先接通、确认对方在,才能开始交流。

示例让模型”照葫芦画瓢”,风格和格式立刻对齐。

步骤五:规定输出格式

明确要什么结构,方便后续用程序处理:

请按以下 JSON 格式输出:
{
"title": "标题",
"summary": "一句话摘要",
"tags": ["标签1", "标签2"]
}

步骤六:组装成可复用模板

把上面几块拼成一个带占位符的模板,用代码填充变量:

TEMPLATE = """你是{role}。

任务:{task}

约束:
{constraints}

示例:
{examples}

请按{output_format}输出。

待处理内容:
{content}
"""

prompt = TEMPLATE.format(
role="资深技术编辑",
task="把技术文档改写成科普短文",
constraints="1. 300字以内\n2. 不用术语",
examples="输入:... 输出:...",
output_format="JSON",
content="这里放你的原文",
)

组装与使用的流程是:

步骤七:迭代优化

第一版很少完美,按结果反推调整:

  • 回答跑题 → 强化任务描述和约束
  • 格式不对 → 补充更明确的示例
  • 太啰嗦 → 加字数限制
  • 每次只改一处,方便定位是哪部分起了作用

常见问题

  • 提示词越长越好吗?不一定,无关内容会稀释重点,够用即可
  • 一定要写满所有部分吗?简单任务可省略示例,但角色 + 任务 + 格式建议保留
  • 用中文还是英文?看模型和场景,中文模型用中文通常更自然

小结

结构化提示词的本质,是把”我希望模型怎么做”拆成角色、任务、约束、示例、格式五块,再用模板固化下来。掌握这套方法,你就能把一次性的提问,变成可复用、可迭代的生产力工具。