Chenyj Space
返回博客
·17 分钟

Prompt Engineering 完全指南:让 AI 听懂你的话

Prompt Engineering提示词工程LLM最佳实践AI

什么是 Prompt Engineering?

Prompt Engineering(提示词工程)是设计和优化提示词(prompt)的技术,目的是让大语言模型(LLM)更好地理解你的需求,生成更准确、更有用的回答。

为什么重要?

code
差的提示词: "写一首诗"
好的提示词: "写一首七言绝句,主题是春天的雨,意境要优美,用词要典雅"

结果: 从随机生成 → 高质量定制化输出

基础原则

1. 明确具体

❌ 模糊的提示词:

code
帮我写个邮件

✅ 明确的提示词:

code
写一封工作邮件,主题是项目进度汇报,收件人是项目经理张总,
内容包括:本周完成的任务、遇到的问题、下周计划。
语气要正式专业。

2. 提供上下文

❌ 缺乏上下文:

code
解释这个函数

✅ 提供上下文:

code
我正在开发一个电商网站,这是购物车的计算函数。
请解释它的功能,并指出可能的优化点。

def calculate_total(items):
    total = 0
    for item in items:
        total += item['price'] * item['quantity']
    return total

3. 指定输出格式

❌ 没指定格式:

code
列出 Python 的数据类型

✅ 指定格式:

code
以表格形式列出 Python 的主要数据类型,包含以下列:
1. 类型名称
2. 示例
3. 主要用途
4. 可变性(可变/不可变)

常用技巧

1. 角色设定(Role Prompting)

让模型扮演特定角色:

code
你是一位有 10 年经验的 Python 高级工程师。
请审查以下代码,指出潜在的性能问题和改进建议。

def process_data(data):
    result = []
    for item in data:
        if item > 0:
            result.append(item * 2)
    return result

常见角色

  • 代码审查专家
  • 技术文档写手
  • 产品经理
  • UI/UX 设计师
  • 安全专家

2. 少样本提示(Few-shot Prompting)

通过示例教模型:

code
将以下文本分类为正面、负面或中性情感。

文本: "这个产品太棒了!"
情感: 正面

文本: "服务态度很差"
情感: 负面

文本: "今天天气还行"
情感: 中性

文本: "餐厅的菜很好吃,但是上菜太慢了"
情感: ?

3. 思维链(Chain of Thought)

引导模型逐步推理:

code
问题: 一个水池有两个水管,A管每小时注入3吨水,B管每小时排出1吨水。
      水池容量是20吨,从空开始,多久能装满?

请逐步思考:
1. 首先,计算净注入速率
2. 然后,计算装满所需时间
3. 最后,给出答案

模型回答

code
1. 净注入速率 = A管速率 - B管速率 = 3 - 1 = 2吨/小时
2. 装满时间 = 水池容量 / 净注入速率 = 20 / 2 = 10小时
3. 答案: 需要10小时装满

4. 结构化输出

要求模型按特定结构输出:

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

## 功能描述
[简要描述代码功能]

## 潜在问题
1. [问题1]
2. [问题2]

## 改进建议
1. [建议1]
2. [建议2]

## 优化后的代码
[优化后的代码]

代码:
def find_max(arr):
    max_val = arr[0]
    for i in range(len(arr)):
        if arr[i] > max_val:
            max_val = arr[i]
    return max_val

高级技巧

1. 自我一致性(Self-Consistency)

让模型多次回答,选择最一致的答案:

code
请用三种不同的方法解决这个问题,然后选择最可靠的方法:

问题: 如何判断一个数是否是质数?

方法1: [模型的解答1]
方法2: [模型的解答2]
方法3: [模型的解答3]

最可靠的方法: [模型的选择和理由]

2. 思维树(Tree of Thoughts)

让模型探索多个推理路径:

code
问题: 设计一个短链接服务

请从以下三个角度思考设计方案:

角度1 - 数据存储:
[模型的思考]

角度2 - 生成算法:
[模型的思考]

角度3 - 高可用性:
[模型的思考]

综合方案:
[模型的综合设计]

3. 反思与修正(Reflection)

让模型自我检查和修正:

code
请完成以下任务,并在完成后自我检查:

任务: 写一个函数,计算列表中所有偶数的和

第一版代码:
[模型的代码]

自我检查:
1. 是否正确处理了空列表?
2. 是否正确识别了偶数?
3. 是否有边界情况遗漏?

修正后的代码:
[模型修正后的代码]

实战案例

案例1:代码生成

code
你是一位资深 Python 开发者。请根据以下需求编写代码:

需求:
1. 创建一个简单的待办事项管理器
2. 支持添加、删除、标记完成、查看所有待办
3. 使用命令行交互
4. 数据保存到本地文件

技术要求:
- 使用 Python 3.10+
- 使用 dataclass 存储待办项
- 使用 JSON 格式保存数据
- 添加适当的错误处理

请先设计类结构,然后实现完整代码。

案例2:文档生成

code
请为以下 API 生成技术文档:

API: POST /api/users
功能: 创建新用户

请求参数:
- name (string, 必填): 用户名
- email (string, 必填): 邮箱
- age (int, 可选): 年龄

请按以下格式生成文档:

## 接口说明
[简要描述]

## 请求参数
[表格形式]

## 请求示例
[JSON 格式]

## 响应示例
[成功和失败的示例]

## 错误码说明
[表格形式]

## 注意事项
[列表形式]

案例3:数据分析

code
请分析以下销售数据,提供业务洞察:

数据:
月份 | 销售额 | 同比增长
1月  | 100万  | 10%
2月  | 80万   | -5%
3月  | 120万  | 15%
4月  | 90万   | -10%
5月  | 150万  | 20%

请从以下角度分析:
1. 整体趋势
2. 季节性规律
3. 异常点分析
4. 业务建议

输出格式: Markdown 报告

常见错误与避免

❌ 错误1:提示词太短

code
错误: "写代码"
正确: "用 Python 写一个快速排序算法,要求:
      1. 支持自定义比较函数
      2. 处理空列表情况
      3. 添加类型注解"

❌ 错误2:缺乏约束

code
错误: "写一篇文章"
正确: "写一篇 800 字左右的技术博客,主题是'Python 异步编程',
      目标读者是有 Python 基础的开发者,
      要求包含代码示例,语言要通俗易懂"

❌ 错误3:假设模型理解上下文

code
错误: "修复这个 bug"
正确: "这段代码的目的是计算两个日期之间的天数差,
      但是当结束日期早于开始日期时会返回负数。
      请修复这个问题,确保总是返回正数。"

❌ 错误4:不验证输出

code
错误: 直接使用模型输出
正确: 检查输出是否符合要求,必要时要求修正

工具与资源

1. 在线 Playground

2. 提示词库

3. 学习资源

最佳实践清单

✅ 提示词设计

  • 明确任务目标
  • 提供足够上下文
  • 指定输出格式
  • 设置角色身份
  • 给出示例(如需要)

✅ 迭代优化

  • 测试不同变体
  • 收集反馈
  • 记录有效模式
  • 持续改进

✅ 质量控制

  • 验证输出准确性
  • 检查是否符合要求
  • 评估一致性
  • 监控异常情况

总结

Prompt Engineering 是与 AI 高效沟通的关键技能:

  1. 明确具体: 清晰表达你的需求
  2. 提供上下文: 让模型理解背景
  3. 结构化输出: 指定期望的格式
  4. 迭代优化: 不断改进提示词

掌握这些技巧,你将能够:

  • 提高 AI 输出质量
  • 减少沟通成本
  • 获得更一致的结果
  • 解锁 AI 的更多能力

记住:好的提示词 = 好的结果。投入时间优化提示词,将带来指数级的回报。


延伸阅读