Learn
Dify/19-advanced-prompt

高级提示词工程

第 7 章讲了提示词的基本骨架。当应用要进生产、要对接下游系统、要应对复杂问题时,提示词工程(Prompt Engineering) 决定了输出的上限与稳定性。本章讲四件进阶要事。

1. 思维链与推理框架

让模型「先想再答」能显著降低逻辑错误。经典做法是 Chain-of-Thought:要求模型分步推理,再给结论。

请按以下步骤回答,不要跳步:
1. 先列出与问题相关的关键事实。
2. 指出其中存在的约束或矛盾。
3. 给出推理过程。
4. 输出最终结论(不超过 2 行)。
💡复杂任务拆步骤

涉及计算、排序、多条件判断的问题,强制「分步输出」比直接要答案更可靠。可以把中间步骤放到工作流的「变量」里,再喂给下一个节点。

2. 上下文压缩与成本控制

长对话会不断把历史塞进提示词,token 与延迟都涨。两种手段:

  • 摘要压缩:当上下文超过阈值,先用一个小模型把历史压缩成要点。
  • 关键字段外提:把用户资料、订单状态等结构化数据以变量形式注入,避免反复复述。
# 上下文管理示意(伪配置)
context_strategy:
  max_tokens: 4000
  compress_when_exceeds: true
  compress_prompt: "将以上对话压缩为不超过 200 字的关键信息"

3. 结构化输出约束

要让下游程序解析,必须约束输出格式(如 JSON)。在提示词里明确 schema,并给出解析失败的兜底说明。

只输出 JSON,不要任何解释,格式如下:
{
  "intent": "退款 | 咨询 | 投诉",
  "confidence": 0.0到1.0之间,
  "need_human": true或false
}
⚠️别相信模型永远守格式

即使写了「只输出 JSON」,模型偶尔仍会加一句前缀。生产解析前务必做容错:先剥离非 JSON 字符,再 json.loads,失败则走兜底分支。

4. 防幻觉与兜底策略

  • 给知识库场景加「无依据则说不知道」的硬约束
  • 用低温度(temperature 0.2–0.4)降低随机性
  • 关键结论要求模型标注「来源片段编号」,便于溯源
🎯动手做

取一个你关心的复杂问题,分别用「直接回答」和「思维链四步法」各跑一次,对比答案的完整度与逻辑性,观察分步输出带来的差异。

小结

  • 思维链(CoT)提升复杂任务准确率
  • 用压缩与变量外提控制上下文成本
  • 结构化输出需配解析兜底
  • 防幻觉靠硬约束 + 低温度 + 来源标注;下一步深入知识库索引 →