OpenAI Prompt Engineering Guide
官方最佳实践指南
一句话定义:Prompt Engineering 是设计和优化输入提示词的技术,目的是让大语言模型(LLM)产生更准确、更有用的输出。
简单说:你怎么问,AI 就怎么答。好的 Prompt 能把 GPT-3.5 用出 GPT-4 的效果。
对比不同 Prompt 技术的效果,理解为什么”怎么问”很重要。
| 你的 Prompt | AI 的表现 |
|---|---|
| ”给我做点吃的” | 随便炒个蛋(低质量、随机) |
| “给我做一份西红柿炒蛋” | 标准出品 |
| ”做一份西红柿炒蛋,少盐、多汤汁、配米饭” | 精准满足需求 |
| ”你是米其林三星主厨,请用创意方式重新演绎西红柿炒蛋” | 高级定制 |
越具体、越有上下文的指令,输出越好。
// Prompt 就像 API 请求的参数设计
// ❌ 差的 API 设计fetch('/api/do-something'); // 啥都没说,后端猜不到
// ✅ 好的 API 设计fetch('/api/users', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: '张三', role: 'admin', format: 'json' })});
// Prompt 也是一样:// - 明确任务(method)// - 提供上下文(headers)// - 给出具体参数(body)// - 指定输出格式(format)直接描述任务,不给示例。
【Prompt】将以下英文翻译成中文:"The quick brown fox jumps over the lazy dog."
【输出】敏捷的棕色狐狸跳过了懒惰的狗。适用场景:简单任务、模型能力足够时。
提供几个示例,让模型”学习”模式。
【Prompt】将英文翻译成中文,保持口语化风格:
English: "What's up?"中文: "最近咋样?"
English: "No worries!"中文: "没事儿!"
English: "Let's grab a coffee."中文:
【输出】走,喝杯咖啡去。技巧:
让模型”一步一步思考”,显著提升推理能力。
【Prompt】小明有 5 个苹果,给了小红 2 个,小红又给了小明 3 个香蕉。现在小明有几个水果?
【输出】6 个 ❌(错误,没考虑清楚)【Prompt】小明有 5 个苹果,给了小红 2 个,小红又给了小明 3 个香蕉。现在小明有几个水果?
请一步一步思考:
【输出】让我一步步分析:1. 小明最初有 5 个苹果2. 给小红 2 个苹果后:5 - 2 = 3 个苹果3. 收到 3 个香蕉后:3 + 3 = 6 个水果答案:小明现在有 6 个水果 ✅魔法咒语:
给 AI 设定角色/身份。
【Prompt】你是一位有 20 年经验的 Node.js 架构师。请审查以下代码,指出潜在的性能问题和安全隐患:
```javascriptapp.get('/user/:id', async (req, res) => { const user = await db.query(`SELECT * FROM users WHERE id = ${req.params.id}`); res.json(user);});【输出】 作为资深 Node.js 架构师,我发现以下问题:
SQL 注入漏洞(严重) 直接拼接参数进 SQL 语句,攻击者可以…
没有错误处理 …
**常用角色**:- "你是 XX 领域专家"- "你是一位耐心的老师,正在教初学者"- "你是代码审查员,专注于安全问题"
---
### 5. 输出格式控制
明确告诉 AI 你想要什么格式。
```text【Prompt】分析以下文本的情感,输出 JSON 格式:
文本:"这家餐厅的菜太难吃了,再也不来了!"
要求输出格式:{ "sentiment": "positive/negative/neutral", "confidence": 0.0-1.0, "keywords": ["关键词1", "关键词2"]}
【输出】{ "sentiment": "negative", "confidence": 0.95, "keywords": ["难吃", "再也不来"]}System Prompt 是对话开始时的”底层设定”,影响 AI 的整体行为。
# Role(角色)你是一个专业的 [角色描述]。
# Background(背景)[用户背景/场景描述]
# Goals(目标)[主要任务目标]
# Constraints(约束)- 约束 1- 约束 2
# Output Format(输出格式)[期望的输出格式说明]
# Examples(示例)[可选:给出输入输出示例]# Role你是一个资深全栈开发工程师,精通 JavaScript、TypeScript、Node.js、React。
# Background用户是有 2 年经验的前端开发者,正在学习后端。
# Goals1. 回答编程问题2. 审查和优化代码3. 解释技术概念(用类比,避免术语堆砌)
# Constraints- 回答要简洁,代码要有注释- 如果问题不清楚,先确认需求- 不要生成不安全的代码
# Output Format- 先用 1-2 句话总结答案- 然后给出代码示例- 最后解释关键点请用 [语言] 实现 [功能描述]。
要求:- 使用 [框架/库]- 代码要有注释- 包含错误处理- 给出使用示例请审查以下代码,从以下角度分析:1. 潜在 Bug2. 性能问题3. 安全隐患4. 代码风格
[代码]
输出格式:- 问题描述- 严重程度(高/中/低)- 改进建议请用简单的语言解释 [概念]。
要求:- 先给出一句话定义- 然后用生活中的类比解释- 最后给出一个代码示例- 我的背景:[前端开发 / CS 学生 / 完全小白]我遇到了以下错误:
错误信息:[粘贴错误]
相关代码:[粘贴代码]
我的环境:- Node.js 版本:- 操作系统:
请分析可能的原因并给出解决方案。OpenAI Prompt Engineering Guide
官方最佳实践指南
Prompt Engineering Guide
社区整理的完整教程
Learn Prompting
交互式学习网站