Skip to content

Prompt Engineering

基本原则

1. 明确指令

清晰描述你希望模型做什么,而不是不希望做什么。

text
❌ 不要写太长
✅ 用 3 句话总结以下文章

2. 提供上下文

给模型足够的背景信息来理解任务:

text
你是一位有 10 年经验的 Python 后端工程师。
请审查以下代码的性能问题,重点关注数据库查询优化。

3. 指定输出格式

明确告诉模型你期望的输出结构:

text
请以 JSON 格式返回结果,包含以下字段:
- name: 产品名称
- price: 价格(数字)
- description: 一句话描述

常用技巧

Few-shot Learning(少样本学习)

提供几个示例,让模型学习你期望的模式:

text
将以下英文翻译为中文,保持技术术语不翻译:

输入:The API returns a JSON response with pagination support.
输出:该 API 返回一个支持 pagination 的 JSON response。

输入:Use middleware to handle authentication.
输出:

Chain of Thought(思维链)

引导模型逐步推理,而不是直接给出结论:

text
请一步一步分析这个 bug 的原因:
1. 首先,描述代码的预期行为
2. 然后,指出实际行为与预期的差异
3. 分析可能的原因
4. 给出修复建议

Role Playing(角色扮演)

设定特定角色来约束模型的行为风格:

text
你是一位严格的代码审查者。对于每一处问题,请指出:
- 问题类型(bug / 性能 / 可读性 / 安全)
- 严重程度(高 / 中 / 低)
- 具体修改建议

分隔符

使用分隔符清晰标记输入的不同部分:

text
请总结以下文章的要点:

---
(文章内容)
---

要求:
- 不超过 5 个要点
- 每个要点一句话

System Prompt 设计

System Prompt 用于设定模型的行为边界和人格,在整个对话中持续生效。

结构模板

text
# 角色
你是 [角色描述]

# 能力
- 能力 1
- 能力 2

# 限制
- 不做什么
- 不回答什么

# 输出格式
[格式要求]

设计要点

  • 角色设定要具体("资深 React 开发者"比"程序员"更好)
  • 限制条件要明确(避免模型越界)
  • 输出格式要统一(保证下游系统能解析)

常见反模式

反模式问题改进
指令模糊"帮我改改这段代码"明确改什么、改成什么样
上下文过载一次塞入太多信息分步骤提供,逐步深入
期望读心不说清楚输出格式明确格式、长度、风格要求
负面指令"不要用 for 循环""使用 map/filter 等函数式方法"
忽略迭代一次就要完美结果先生成初稿,再迭代优化

高级模式

Self-Consistency(自一致性)

对同一个问题生成多个回答,取最一致的结果。适用于推理类任务。

Tree of Thought(思维树)

让模型探索多个推理路径,评估每条路径的可行性,选择最优方案。适用于复杂规划任务。

ReAct(推理 + 行动)

结合推理和工具调用的框架:

思考:我需要查找用户最近的订单
行动:调用 getOrders(userId) API
观察:返回了 3 条订单记录
思考:最近的订单是 3 月 15 日的
回答:您最近的订单是 3 月 15 日下单的...