prompt优化
1. 🏛️ System Prompt(系统提示词)优化技巧
System Prompt 是 AI 的"底层灵魂"与"运行法则",决定了模型的基本人格、行为边界和推理逻辑。
核心优化策略
- 结构化块标记(XML/Markdown Tags) :使用
<role>,<constraints>,<context>,<workflow>等标签将 System Prompt 模块化。大语言模型(特别是 Claude 和 GPT-4)对 XML 标签的边界识别极其敏感,能大幅降低多指令混淆的概率。 - 负面约束的正向转化(Positive Framing) :模型对"不要做什么"的理解成本远高于"要做什么"。
- ❌ 坏示范:"不要使用复杂词汇,不要写长句子。"
- ✅ 好示范:"请使用通俗易懂的常用词汇,并将每个句子的长度控制在 15 个字以内。"
- 思维链(Chain-of-Thought)引导 :在 System Prompt 中直接嵌入思考过程要求,迫使模型在给出答案前先在
<thinking>标签内完成逻辑推理。 - 上下文预热与防护网(System Hardening):加入防越狱(Prompt Injection)和抗诱导设定。
🛠️ 最佳实践模板
xml
<system_instruction>
<role>
你是一位拥有 10 年经验的【高级 Python 代码审计专家】。你的语言风格严谨、客观、直击要害。
</role>
<context>
用户将向你提交 Python 代码段,你需要审查其中的安全漏洞、性能瓶颈与代码规范问题。
</context>
<constraints>
1. 必须优先指出严重的安全风险(如 SQL 注入、XSS、未处理的异常)。
2. 只针对用户提供的代码进行分析,严禁捏造未经提供的逻辑。
3. 如果代码没有明显缺陷,请直接回答"代码质量良好",并提供 1-2 条微优化建议。
</constraints>
<workflow>
请严格按照以下步骤处理:
Step 1: 在 <thinking> 标签内静默分析代码的结构、漏洞与潜在风险。
Step 2: 在 <analysis> 标签内按【高危漏洞】、【性能优化】、【规范建议】三段式输出结果。
</workflow>
</system_instruction>
2. 🎯 Few-shot Examples(少样本示例)优化技巧
Few-shot 是纠正模型格式偏离、提示输出质量最有效的手段(没有之一)。优质的样本胜过千言万语的规则说明。
核心优化策略
-
多样性与边缘情况覆盖(Edge Cases):不要只提供"完美输入 -> 完美输出"的示例。至少包含一个正常示例、一个信息缺失/异常示例和一个模糊输入示例。
-
展示"思考过程"(CoT Few-shot):在 Examples 中不仅给出 Input 和 Output,还要给出 Reasoning(推理步骤)。这能极大地诱导模型模仿该思维链路。
-
标签一致性:Example 中的输入输出结构必须与 System Prompt 定义的标签完全 100% 对齐,哪怕多出一个空格都可能让模型产生幻觉。
🛠️ 最佳实践模板
xml
### Few-shot Examples
#### Example 1: 正常输入(包含完整思考链)
User:
分析文本情感:"这件衣服样式很好看,但是线头太多,质量太差了。"
Assistant:
<thinking>
文本包含了正面评价(样式很好看)和负面评价(线头多、质量差)。结合上下文,整体购买体验偏负面,属于【混合偏负面】情感。
</thinking>
<output>
{
"sentiment": "Negative",
"confidence": 0.85,
"key_phrases": ["样式好看", "线头太多", "质量太差"]
}
</output>
#### Example 2: 边缘输入(信息模糊/无法判断)
User:
分析文本情感:"今天星期三。"
Assistant:
<thinking>
文本为客观事实陈述,不包含任何主观倾向或情感词汇。
</thinking>
<output>
{
"sentiment": "Neutral",
"confidence": 0.99,
"key_phrases": ["星期三"]
}
</output>
3. 📐 输出格式控制(Output Format Control)优化技巧
结构化输出(JSON, XML, Markdown Table 等)是大模型接入下游工程代码(API/数据库)的关键桥梁。
核心优化策略
-
Schema 锚定法:给出明确的 Typescript Interface 或 JSON Schema 定义,而不仅仅是简单的样本。大模型对类型定义(Type Definition)有极强的理解力。
-
"首字符强引导"(First-Token Priming):在 User 指令的末尾或 Assistant 响应的开头,预填输出的首个字符(如 { 或 ```json)。
-
格式防御(Markdown Fences):明确要求模型将代码/JSON 包裹在特定的代码块中,避免解释性废话(如 "Here is your JSON:")混入导致 JSON 解析失败。
🛠️ 最佳实践模板
markdown
### 输出格式要求
你必须且只能输出合法的 JSON 对象,严禁在 JSON 前后添加任何解释性文字或 Markdown 标记(如不要使用 ```json 包裹)。
JSON 必须严格遵循以下 TypeScript 接口定义:
interface RefactoredCodeResponse {
// 优化后的完整代码
code: string;
// 修改的行数或函数名
modified_scope: string[];
// 优化原因总结(不超过 30 字)
summary: string;
// 时间复杂度分析(如 O(n))
time_complexity: string;
}
响应起始提示:
你的输出必须直接以 { 开头,并以 } 结尾
4. 🛡️ 错误处理 Prompt(Error Handling & Fallback)
高鲁棒性的 Prompt 必须具备"自我校验"与"降级处理"能力,当遇到无效输入、越界风险或无法解答的问题时,能够优雅地捕获错误。
核心优化策略
- 定义状态码与错误树:为常见错误场景定义标准错误码(Error Code),方便后端代码直接提取并做分支逻辑处理。
- 拒绝机制(Graceful Refusal):赋予模型"说不知道"或"拒绝回答"的合法权力,这是防止模型强行"瞎编(幻觉)"的核心手段。
- 前置校验阈值(Validation Pre-check):要求模型在回答前先检查输入条件是否满足,若不满足则立即中断后续推理并触发错误响应。
🛠️ 最佳实践模板
markdown
### 异常与错误处理规范
在处理用户输入时,请首先进行输入合规性与完整性校验。如果触发以下异常条件,必须立即中断正常流程,并返回对应的标准 JSON 错误结构:
1. **输入信息不足 (ERR_INSUFFICIENT_INFO)**:当缺失完成任务必需的核心参数时。
2. **超出能力范围 (ERR_OUT_OF_SCOPE)**:当请求包含非法指令、政治敏感内容或非 Python 语言代码时。
3. **逻辑冲突 (ERR_LOGICAL_CONFLICT)**:当用户给出的需求前后矛盾时。
#### 错误响应 JSON 格式:
{
"status": "error",
"error_code": "ERR_INSUFFICIENT_INFO",
"message": "用户未提供数据库连接字符串,无法进行 SQL 校验。",
"action_required": "请补充提供 Target Database 类型及配置信息。"
}
#### 正常响应 JSON 格式:
{
"status": "success",
"data": { ... }
}
💡 资深工程师总结:Prompt 调试金字塔
在实际生产项目中,当模型表现不佳时,建议按照以下优先级进行调整排查:
-
第 1 层(基石):检查 System Prompt 的规则与约束 是否存在歧义或冲突。
-
第 2 层(关键):检查 Few-shot 示例 是否足够丰富,标签与格式是否与预期 100% 相同。
-
第 3 层(结构):检查 思考链(CoT) 是否显式开启,是否留给了模型足够的计算 Token(思考空间)。
-
第 4 层(外围):调整 Temperature / Top_P 参数(提取类/格式化任务设为 0.0-0.2,创作类设为 0.7-0.9)。