Prompt 工程的本质

很多人以为 Prompt 工程就是「写个好提示词」。错了。

Prompt 工程的本质是人机沟通工程——你是指挥官,AI 是执行者。一个好的 Prompt 应该像一份工作指令:目标明确、约束清晰、上下文充分。

❌ 差的 Prompt: "帮我写篇文章关于 AI"
✅ 好的 Prompt: "写一篇 2000 字的技术博客,主题是 MCP 协议,
   面向有 1-3 年经验的开发者,风格是实战教程,包含代码示例"

五层 Prompt 框架

第一层:角色设定(Who)

SYSTEM = """
你是一位资深 AI Agent 架构师,拥有 10 年分布式系统经验。
你擅长将复杂技术概念用简洁的语言解释清楚。
你的回答风格:
- 先给结论,再给理由
- 用代码示例而非纯文字描述
- 主动指出常见误区
"""

第二层:任务定义(What)

TASK = """
任务:审查以下 Python 代码的安全性和性能问题

输入:一段 Python 代码
输出格式:
1. 安全性问题(严重/中等/低)
2. 性能问题(严重/中等/低)
3. 改进建议(附修改后的代码)
"""

第三层:约束条件(How)

CONSTRAINTS = """
约束:
- 只分析给出的代码,不要假设外部依赖
- 每个问题必须附上具体代码行号
- 安全问题优先级高于性能问题
- 如果代码没有问题,直接说"代码检查通过"
- 不要输出无关的解释
"""

第四层:上下文注入(Context)

CONTEXT = """
项目背景:这是一个金融数据处理管道,每天处理 1000 万条交易记录。
技术栈:Python 3.11 + Pandas + PostgreSQL
安全要求:符合 PCI DSS 标准
历史问题:上个月曾因 SQL 注入导致数据泄露
"""

第五层:输出格式(Format)

FORMAT = """
输出 JSON 格式:
{
  "security_issues": [
    {"severity": "high", "line": 42, "issue": "...", "fix": "..."}
  ],
  "performance_issues": [
    {"severity": "medium", "line": 87, "issue": "...", "fix": "..."}
  ],
  "overall_score": 85,
  "summary": "..."
}
"""

核心技巧

1. Few-Shot 示例

给 AI 看几个正确答案,比解释规则更有效:

FEW_SHOT = """
示例 1:
输入: "订一张明天去上海的机票"
输出: {"intent": "book_flight", "date": "明天", "destination": "上海"}

示例 2:
输入: "上海明天天气怎么样"
输出: {"intent": "query_weather", "date": "明天", "city": "上海"}

示例 3:
输入: "帮我查一下银行卡余额"
输出: {"intent": "query_balance", "account": "银行卡"}
"""

经验法则:3-5 个示例最佳。太少不够,太多干扰。

2. Chain-of-Thought 引导

不要让 AI 直接给答案,让它先思考:

请按以下步骤分析:
1. 首先,识别问题类型(数学/逻辑/事实)
2. 其次,列出已知信息和需要推导的信息
3. 然后,制定求解计划
4. 执行计划,每步验证
5. 最后,给出答案并解释

问题:如果 A 比 B 大 5,B 是 C 的 2 倍,C 等于 3,A 是多少?

3. 负面示例

告诉 AI 「不要做什么」同样重要:

规则:
- 不要使用 try-except 吞掉异常
- 不要在循环中创建数据库连接
- 不要使用 print() 调试,使用 logging
- 不要硬编码密码,使用环境变量

4. 分步指令 vs 单步指令

❌ 单步: "帮我做一个网站"

✅ 分步: "
Step 1: 确定网站类型(博客/电商/企业站)
Step 2: 选择技术栈(前端/后端/数据库)
Step 3: 设计页面结构(首页/列表页/详情页)
Step 4: 编写代码
Step 5: 部署上线
请从 Step 1 开始,每步等我确认后再继续。
"

5. 上下文窗口管理

策略:
┌─────────────────────────────┐
│ System Prompt (固定不变)     │  ← 角色设定、规则
├─────────────────────────────┤
│ Few-Shot Examples (固定不变) │  ← 示例
├─────────────────────────────┤
│ Task Context (每轮更新)      │  ← 当前任务上下文
├─────────────────────────────┤
│ Recent History (滚动窗口)    │  ← 最近 5 轮对话
├─────────────────────────────┤
│ User Input (每轮变化)        │  ← 用户当前输入
└─────────────────────────────┘

高级技巧

Self-Consistency(自洽性)

让 AI 生成多个答案,取多数一致的结果:

answers = []
for _ in range(5):
    answer = llm.generate(prompt, temperature=0.7)
    answers.append(answer)

# 取多数投票
final_answer = majority_vote(answers)

ReAct + Prompt

将 Prompt 工程与 ReAct 模式结合:

System: 你是一个代码审查专家。审查代码时遵循以下规则:
1. 先理解代码意图
2. 检查安全性
3. 检查性能
4. 检查可读性

User: 审查这段代码: [code]

AI Thought: 先理解这段代码的意图。看起来是一个用户认证函数...
AI Action: search("OWASP 认证最佳实践")
AI Observation: 建议使用 bcrypt 而非 MD5...
AI Thought: 代码第 15 行使用了 MD5,这是安全漏洞...

反模式:不要这样做

反模式问题正确做法
过长 Prompt超过 2000 字 AI 会忽略细节精简到 500 字以内
矛盾指令“详细但简洁”明确优先级:“简洁优先”
模糊形容“写得专业一点”给具体标准:“使用被动语态,避免口语”
过多约束20 条规则5 条核心规则
频繁切换角色一轮是专家,一轮是新手全程保持同一角色

结语

Prompt 工程不是「玄学」,而是一门有规律可循的工程学科。掌握五层框架 + 核心技巧,你已经超过了 90% 的 AI 用户。

在硅基 AGI 的探索中,Prompt 工程是最容易上手、回报率最高的技能。开始练习吧。


硅基 AGI · Prompt 工程 | guijiagi.com

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。