结构化 Prompt 的基本框架
一个稳定可复用的 Prompt 通常包含以下几个部分:
[角色设定] 你是一名资深的后端工程师
[任务描述] 请审查以下代码是否存在安全隐患
[输出约束] 以 JSON 格式输出,字段包括 issue、severity、suggestion
[输入内容] {code}
将角色、任务、约束与输入明确分区,可以显著降低模型输出格式不稳定的概率。
强制结构化输出
对接下游程序时,建议明确要求 JSON 并给出 schema 示例:
请仅输出如下格式的 JSON,不要包含任何多余文字:
{
"summary": "string",
"risk_level": "low | medium | high",
"actions": ["string"]
}
如果使用支持 function calling 或 structured output 的模型/框架,优先使用原生能力而非纯文本约束,稳定性更高。
思维链(CoT)引导
对于推理类任务,显式要求模型分步思考能提升准确率:
请先列出解决该问题需要的关键步骤,再逐步推导,最后给出结论。
需要注意的是,面向最终用户展示的产品通常应隐藏推理过程,只暴露结论,避免冗长输出影响体验。
Few-shot 示例的选择
- 示例数量并非越多越好,2~4 个高质量示例通常优于大量低质量示例
- 示例应覆盖边界情况(如空输入、异常格式),而不仅是“标准”场景
- 示例格式必须与期望输出格式完全一致,包括缩进和标点
常见反模式
- 在 Prompt 中堆砌矛盾指令(如同时要求“详细”又要求“简洁”)
- 过度依赖否定式指令(“不要做 X”),效果通常弱于正向描述期望行为
- 忽略模型的上下文长度限制,导致关键指令被截断
小结
Prompt 工程的本质是通过清晰的结构和约束,降低模型输出的不确定性,使其更适配工程化的下游调用。