提示词工程入门-03

23 阅读5分钟

前言

"写个代码" "帮我写个快速排序函数,用 Python 实现,要求时间复杂度 O(n log n),添加详细注释"

同样是让 AI 写代码,为什么第一个指令得到的是模糊的回复,而第二个能得到精确满足需求的代码?

这就是提示词工程(Prompt Engineering)的魔力。

好的 Prompt = 好的输出。今天我们来学习如何写出让 AI "秒懂"的提示词。


1. 什么是提示词工程

提示词(Prompt):你给大模型的输入指令

提示词工程(Prompt Engineering):设计和优化 Prompt 的艺术和科学

Prompt 的黄金结构

┌─────────────────────────────────────────┐
│           Prompt 结构模板                 │
├─────────────────────────────────────────┤
│                                         │
│  1. 角色(Role)                         │
│     "你是一个经验丰富的程序员..."        │
│                                         │
│  2. 任务(Task)                         │
│     "请写一个快速排序函数..."           │
│                                         │
│  3. 上下文(Context)                    │
│     "用于处理整数数组..."               │
│                                         │
│  4. 约束(Constraints)                  │
│     "要求O(n log n)时间复杂度..."       │
│                                         │
│  5. 格式(Format)                       │
│     "返回JSON格式,包含code和说明..."    │
│                                         │
│  6. 示例(Examples)                     │
│     "输入:[3,1,2] 输出:[1,2,3]"         │
│                                         │
└─────────────────────────────────────────┘

2. 案例

案例 1:明确角色的力量

❌ 没有角色

"怎么提高编程能力?"

✅ 有角色

"你是一位有10年经验的编程导师,
曾经指导过数百名初学者成为资深工程师。
请给我提供提高编程能力的建议。"

效果差异:有角色的 Prompt 能得到更有针对性、更有深度的回答。

案例 2:具体明确的任务

❌ 模糊的任务

"帮我写个文章"

✅ 明确的任务

"请写一篇关于人工智能发展历史的文章,
要求:
1. 字数800-1000字
2. 包含三个主要发展阶段
3. 提到GPT、Llama等关键模型
4. 语言风格通俗易懂"

SMART 原则

  • Specific(具体明确):写 Python 代码而非"写代码"
  • Measurable(可衡量):100字以内
  • Achievable(可达成):不要求超出模型能力
  • Relevant(相关性):任务与上下文相关
  • Time-bound(有时限):30秒内能读完的介绍

案例 3:提供充足上下文

❌ 缺少上下文

"这个代码有什么问题?"
[粘贴一段代码]

✅ 充足上下文

"我正在开发一个电商网站的用户认证功能。
这段Python代码用于验证用户密码,
但总是返回False,帮我找出问题:

[粘贴代码]

预期行为:正确密码返回True,错误密码返回False
实际行为:所有密码都返回False"

上下文要素清单

  • 背景:这是什么项目/场景?
  • 目标:想要达到什么效果?
  • 现状:当前是什么情况?
  • 问题:遇到了什么具体问题?

案例 4:使用示例的魔力

少样本学习示例

例子1:
输入:苹果
分类:水果

例子2:
胡萝卜
分类:蔬菜

例子3:
香蕉
分类:?

思维链示例

问题:小明有5个苹果,吃了2个,又买了3个,现在有几个?

思考过程:
1. 初始:小明有5个苹果
2. 吃了2个:5 - 2 = 3个
3. 买了3个:3 + 3 = 6个
答案:6个

现在请解决:
小红有10颗糖,给了妹妹3颗,妈妈又给了她5颗,现在有几颗?

效果:示例能让 AI 快速理解你想要的输出模式。

案例 5:格式化输出

❌ 不好的 Prompt

"分析这段代码"

✅ 好的 Prompt

"请分析以下代码,并按以下格式输出:

## 代码功能
[简要说明代码的功能]

## 时间复杂度
[分析时间复杂度]

## 改进建议
[列出3条具体改进建议]

## 重构代码
\`\`\`python
[重构后的代码]
\`\`\`"

案例 6:常用 Prompt 模板

代码生成模板

你是一个{语言}专家。
请写一个{功能描述}的{语言}函数,
要求:
1. {要求1}
2. {要求2}
3. {要求3}

请包含:
- 详细的注释
- 错误处理
- 使用示例

Bug 调试模板

我在开发一个{项目类型}项目,
这段{语言}代码出现了{问题描述}:

\`\`\`{语言}
{代码}
\`\`\`

预期行为:{预期}
实际行为:{实际}

请帮我:
1. 找出问题所在
2. 解释问题原因
3. 提供修复方案

总结

核心技巧速记

技巧说明示例
明确角色给 AI 分配身份"你是一位经验丰富的程序员"
具体任务清楚说明要做什么"写一个快速排序,O(n log n)"
充足上下文提供背景信息"这是电商网站的推荐功能"
使用示例展示期望格式"输入A输出B,输入C输出?"
明确格式说明输出形式"以 JSON 格式返回"

Prompt 检查清单

发送 Prompt 前,问自己:

  • 角色清晰:是否告诉 AI 它的角色?
  • 任务明确:是否清楚说明了要做什么?
  • 上下文充足:是否提供了足够的背景信息?
  • 约束具体:是否说明了限制和要求?
  • 格式明确:是否说明了输出格式?
  • 示例充分:是否提供了参考示例?

常见陷阱

陷阱问题解决方案
过于简短"帮我优化代码"说明具体优化目标
矛盾要求"性能最好但代码简洁"明确优先级
一次太多"写完整电商系统"分解为小任务
缺少验证"计算复杂数学"要求给出计算步骤

高级技巧

1. 迭代优化

第一次尝试 → 评估结果 → 修改 Prompt → 再次尝试

2. 温度参数调整

  • 低温度(0.1-0.3):更确定、一致的输出
  • 中等温度(0.4-0.7):平衡创造性和准确性
  • 高温度(0.8-1.0):更创造性、多样化的输出

3. 分解复杂任务

"设计一个博客系统"
↓ 分解为
"1. 设计数据库结构"
"2. 设计用户认证 API"
"3. 设计文章发布 API"
  1. 不要期望一次完美:迭代优化是常态
  2. 从简单开始:先验证基本方向,再添加细节
  3. 保存好用的 Prompt:建立自己的模板库
  4. 对比实验:用不同版本测试效果差异
  5. 学习他人经验:参考优秀的 Prompt 示例