人人都会AI编程

27.3 提示词设计规范:指令清晰、约束明确、格式统一

更新时间:2026-07-12

在 RAG 系统中,检索到的文档片段最终要和大模型“对话”,而决定这段对话质量的,往往不是模型本身,而是提示词(prompt)。一个设计良好的提示词,能让模型准确理解任务、严格依据提供的资料作答、输出结构统一的回答;而一个模糊的提示词,则可能让模型放飞自我,把辛苦检索来的事实依据抛在一边,重新回到“即兴创作”的状态。

本节将从实战角度出发,提炼三条最核心的提示词设计规范:指令清晰、约束明确、格式统一。遵循这些规范,可以显著提升 RAG 系统回答的稳定性与可用性。

27.3.1 指令清晰:让模型一次性理解“要做什么”

很多开发者容易在这里犯错,要么指令过于笼统,要么加了一堆冗余的礼貌用语和背景铺垫,反而冲淡了核心要求。清晰的指令应当具备三个特征:

  • 任务目标单一:一次只让模型干一件事,比如“回答问题”或“总结材料”,不要将多项任务混在同一个提示中。
  • 动作动词明确:使用“回答”“列出”“总结”“判断”“提取”等无歧义的动词。
  • 去掉多余内容:所有对完成任务没有直接帮助的文字都是噪音,会增加模型错误理解的概率。

反面示例(过于模糊):

用户有一些问题想咨询,你看看下面的内容,然后适当给出一些有参考价值的意见。

正面示例(清晰明确):

根据下面提供的参考资料,回答用户的问题。如果资料不足以回答,请直接回复“根据现有资料无法给出确切答案”。

只有在任务指令足够精确时,模型才能稳定地按照预期行为执行。

27.3.2 约束明确:将“框”画清楚

在 RAG 场景下,最关键的两条约束是:仅基于提供的资料回答信息不足时的行为定义。此外,还应根据业务需求,明确输出长度、语言风格、知识截止日期等限制条件。

必备约束清单:

  1. 资料依赖声明
  • “仅根据下方【参考资料】中的内容回答问题,不要引入任何外部知识或个人推测。”
  • 这是 RAG 提示词中最重要的一条约束,直接决定了能否有效缓解幻觉。
  1. 缺信息处理规则
  • “如果参考资料中不包含足够信息,请回复:'抱歉,当前资料无法回答该问题。'”
  • 如果没有这条规则,模型很可能会调用自己的通用知识强行作答,使 RAG 的检索逻辑形同虚设。
  1. 输出范围控制
  • 长度限制:“请将回答控制在 150 字以内。”
  • 语言风格:“请使用正式、礼貌的商务口吻。”
  • 禁止项:“不要在回答中提及任何公司内部代号或机密信息。”

推荐的约束写法(可复用模板片段):

约束条件:
- 你必须严格基于【参考资料】提供的信息作答,切勿使用你的预训练知识。
- 如果【参考资料】中未提及相关内容,或不足以形成完整回答,请直接告知用户“该问题在当前资料中暂无明确答案”。
- 回答应简洁,不超过三段,每段不超过三句话。
- 回答中不得出现任何推测性表述,如“可能”“或许”。

清晰的约束像一套“护栏”,既保护了回答的准确性,也保护了产品在合规和用户体验上的底线。

27.3.3 格式统一:为结构化输出提供模板

RAG 经常作为后端服务,为前端或下游系统提供数据。如果每次生成的格式都不一样,解析成本会非常高。即使是对终端用户直接展示,统一的结构也能带来稳定的阅读体验。

格式统一的核心手段是在提示词中直接给出输出模板,并要求模型严格按照模板填写。

典型模板设计原则:

  • 使用模型容易理解的占位符(如 {答案}{来源});
  • 结构简单,层次分明,避免过度嵌套;
  • 与约束条件合并,确保模型既按内容约束作答,也按格式约束输出。

综合示例:一个生产级 RAG 提示词模板

角色:你是一个专业的企业内部知识问答助手。

任务:根据用户的问题和提供的参考资料,生成准确、有帮助的回答。

约束条件:
1. 只能基于【参考资料】中的内容回答,不要加入任何外部知识或个人推测。
2. 如果【参考资料】中没有足够信息,请在你的回答中明确告知用户“当前资料无法回答此问题”。
3. 回答应简洁,控制在200字以内。

输出格式:
请严格按照以下JSON结构输出,不要添加任何其他内容:
{
  "answer": "这里填写你的回答",
  "references": ["如果引用了资料,请在此列出引用的文档标题或片段ID"]
}

用户问题:{user_question}

参考资料:
{retrieved_chunks}

这个模板同时做到了指令清晰(任务和角色明确)、约束明确(严格取材、缺信息不硬编)、格式统一(要求输出 JSON,列出 answer 和 references)。在实际部署中,基于这个模板衍生,可以覆盖绝大多数企业问答场景。

27.3.4 真实场景调试技巧

即使遵循了上述规范,提示词在实践中仍需要不断迭代打磨。以下是几条“摸了石头过河”后总结出的经验:

  • 先过“边界案例”测试:故意用资料中完全不存在的提问来测试,看模型是否会触发“无法回答”的逻辑,而不是胡编。
  • 检查引用幻觉:即使在格式中要求了引用,有时模型仍会编造看似合理的文档标题。需要结合检索返回的实际片段 ID,在生成后做一次后验校验。
  • 控制上下文长度:当检索的片段过多时,提示词中的参考材料部分会非常长,模型可能忽略中间的片段,或者输出被截断。务必给每条片段编号,并在生成引用时要求给出编号,以便核对。
  • 微调语气词:哪怕是一个“请”字、一句“注意”的强调方式,都会影响模型输出的一致性。用版本管理保存每一次有效迭代的提示词。

提示词设计没有永恒的银弹,但它有一套成熟的“套路”。只要坚持指令只讲任务、约束划定边界、格式给出样板,就能让大模型在 RAG 这个“开卷考场”里,交出一份稳定、可靠、可翻阅原始材料核查的答卷。