
一个真实案例 #
上周,团队里两个实习生用同一个 AI 工具写代码。
实习生 A 的 Prompt:
“帮我写一个 Python 函数,从 API 获取数据。”
AI 的回答:
def fetch_data():
import requests
response = requests.get("https://api.example.com")
return response.json()实习生 B 的 Prompt:
写一个 Python 函数,要求:
- 从指定 API 获取用户数据
- 处理错误(超时、404、500)
- 添加重试逻辑(最多 3 次,指数退避)
- 返回结构化数据(dict)
- 添加类型注解和文档字符串
API 端点:https://api.example.com/users/{user_id}
AI 的回答:
from typing import Dict, Optional
import requests
from requests.exceptions import RequestException, Timeout, HTTPError
import time
def fetch_user_data(user_id: int, timeout: int = 30, max_retries: int = 3) -> Optional[Dict]:
"""
从 API 获取用户数据,带错误处理和重试逻辑。
Args:
user_id: 用户 ID
timeout: 请求超时时间(秒)
max_retries: 最大重试次数
Returns:
用户数据字典,失败返回 None
"""
url = f"https://api.example.com/users/{user_id}"
for attempt in range(max_retries):
try:
response = requests.get(url, timeout=timeout)
response.raise_for_status()
return response.json()
except Timeout:
if attempt == max_retries - 1:
print(f"请求超时,已重试{max_retries}次")
return None
wait_time = 2 ** attempt # 指数退避
time.sleep(wait_time)
except HTTPError as e:
if e.response.status_code == 404:
print(f"用户{user_id}不存在")
return None
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt)
except RequestException as e:
print(f"请求失败:{e}")
return None
return None同样的 AI 工具,输出质量差了 10 倍。
问题不在 AI。问题在于:Prompt 的质量决定了 AI 输出的质量。
原则 1:明确角色(给 AI 一个身份) #
❌ 错误示范 #
“帮我写一篇文章。”
✅ 正确示范 #
你是一位有 10 年经验的技术博客作者,擅长用通俗易懂的语言解释复杂概念。
请写一篇关于"AI 自动化工作流"的文章,读者是初级开发者。
为什么有效:
- AI 知道自己是"技术博客作者"
- 知道读者是"初级开发者"
- 会自动调整语言风格(通俗、有例子)
常用角色:
| 场景 | 推荐角色 |
|---|---|
| 写代码 | 资深软件工程师 |
| 写文章 | 技术博客作者 |
| 做分析 | 数据分析师 |
| 写文案 | 营销专家 |
| 改 Bug | 调试专家 |
原则 2:提供上下文(让 AI 知道背景) #
❌ 错误示范 #
“这个函数有什么問題?”
✅ 正确示范 #
我在开发一个电商网站,这是用户登录函数:
def login(username, password): user = db.query("SELECT * FROM users WHERE username=?", username) if user and user.password == password: return True return False这个函数有什么安全问题?如何改进?
为什么有效:
- AI 知道是"电商网站"(敏感数据)
- 知道是"用户登录"(安全关键)
- 能针对性地指出问题(SQL 注入、明文密码)
原则 3:分步骤(把复杂任务拆解) #
❌ 错误示范 #
“帮我做一个数据分析。”
✅ 正确示范 #
请帮我分析这个销售数据,按以下步骤:
- 数据清洗:处理缺失值和异常值
- 描述统计:计算均值、中位数、标准差
- 趋势分析:按月绘制销售趋势图
- 异常检测:找出销售异常波动的月份
- 结论总结:用 3 句话总结关键发现
数据:[粘贴数据]
为什么有效:
- AI 知道具体要做什么
- 每一步都有明确要求
- 输出结构化,容易阅读
原则 4:给示例(让 AI 知道你想要什么格式) #
❌ 错误示范 #
“帮我生成一些测试数据。”
✅ 正确示范 #
生成 5 条用户测试数据,格式如下:
{ "id": 1, "name": "张三", "email": "zhangsan@example.com", "age": 25, "created_at": "2026-03-10" }
为什么有效:
- AI 知道 exact 格式(JSON)
- 知道字段名称和类型
- 输出可以直接使用
示例的力量:
一个示例胜过千言万语。—— AI 训练数据里的每一篇教程
原则 5:设约束(告诉 AI 什么不要做) #
❌ 错误示范 #
“解释一下什么是机器学习。”
✅ 正确示范 #
用 300 字以内解释什么是机器学习,要求:
- 不要使用专业术语
- 用生活中的例子说明
- 不要讲历史和发展
- 只讲核心概念
为什么有效:
- AI 知道长度限制(300 字)
- 知道避免什么(专业术语、历史)
- 知道聚焦什么(核心概念、例子)
常用约束:
- 不要超过 500 字
- 不要用专业术语
- 不要讲 XXX
- 只关注 XXX
- 用中文回答
- 用 Markdown 格式原则 6:指定输出格式(让 AI 按你的格式输出) #
❌ 错误示范 #
“比较一下 Python 和 JavaScript。”
✅ 正确示范 #
比较 Python 和 JavaScript,用表格格式:
维度 Python JavaScript 类型系统 主要用途 学习曲线 生态系统 薪资水平
为什么有效:
- AI 知道 exact 格式(表格)
- 知道比较维度
- 输出可以直接复制使用
常用格式:
- 表格
- 列表
- JSON
- Markdown
- 代码块
- 大纲
原则 7:迭代优化(好 Prompt 是改出来的) #
第一版 #
“帮我写一个网站。”
第二版 #
帮我用 HTML/CSS/JS 写一个个人博客网站,包含首页、文章列表、文章详情。
第三版 #
帮我用 HTML/CSS/JS 写一个极简风格的个人博客网站。
要求:
- 响应式设计(支持手机)
- 深色模式切换
- 文章列表按时间排序
- 代码注释清晰
参考网站:https://example.com
第四版(最终) #
你是一位前端专家,擅长极简设计。
帮我用 HTML/CSS/JS 写一个个人博客网站,读者是技术人员。
要求:
- 设计:极简风格,黑白配色,大字体
- 功能:
- 首页(个人介绍 + 最新文章)
- 文章列表(按时间排序)
- 文章详情(Markdown 渲染)
- 深色模式切换
- 技术:
- 纯 HTML/CSS/JS(不用框架)
- 响应式设计
- 代码注释清晰
- 性能:
- 首屏加载 < 1 秒
- 无外部依赖
参考网站:https://yu-wenhao.com
输出:
- 完整的 HTML/CSS/JS 代码
- 部署说明
每一次迭代,输出质量提升 20%。
Prompt 模板(可直接复制) #
写代码 #
你是一位资深 {语言} 工程师。
任务:{具体任务}
要求:
1. {要求 1}
2. {要求 2}
3. {要求 3}
约束:
- {约束 1}
- {约束 2}
示例:
{示例代码或期望输出}
输出格式:{代码块/文件结构/说明文档}写文章 #
你是一位有 {X} 年经验的 {领域} 专家。
主题:{文章主题}
读者:{目标读者}
字数:{字数范围}
大纲:
1. {章节 1}
2. {章节 2}
3. {章节 3}
风格:{正式/轻松/幽默/专业}
要求:
- {要求 1}
- {要求 2}做分析 #
你是一位 {领域} 分析师。
数据:{粘贴数据}
任务:
1. {分析步骤 1}
2. {分析步骤 2}
3. {分析步骤 3}
输出格式:
- 关键发现(3 条)
- 数据表格
- 可视化建议
- 行动建议常见错误及修正 #
错误 1:太模糊 #
❌ “帮我优化一下代码。”
✅ “帮我优化这段 Python 代码的性能,目标是减少 50% 的执行时间。使用 profiling 工具找出瓶颈,然后优化。”
错误 2:缺少上下文 #
❌ “这个报错怎么修?”
✅ “我在运行 Django 项目时遇到这个错误:[粘贴错误信息]。Python 3.10,Django 4.2,数据库是 PostgreSQL。我已经尝试了 [方法 1]、[方法 2],但没用。”
错误 3:一次问太多 #
❌ “帮我做个完整的电商网站,包括用户系统、商品管理、订单处理、支付集成…”
✅ 分多次问:
- “帮我设计用户系统的数据库表结构”
- “帮我写用户注册登录功能”
- “帮我设计商品管理模块” …
错误 4:不指定格式 #
❌ “给我一些学习资源。”
✅ “给我 5 个 Python 学习资源,用表格格式:| 资源名称 | 类型(视频/书籍/网站)| 难度 | 链接 |”
高级技巧 #
1. 思维链(Chain of Thought) #
让 AI 展示思考过程:
请逐步思考这个问题,展示你的推理过程:
- 首先…
- 然后…
- 最后…
效果:AI 的回答更准确、更可靠。
2. 角色扮演 #
你现在是面试官,我是求职者。请问我 5 个 Python 相关问题,然后评估我的回答。
效果:AI 进入角色,互动更真实。
3. 对比分析 #
对比方案 A 和方案 B 的优缺点,用表格格式,然后给出你的推荐。
效果:AI 提供全面分析,帮你做决策。
4. 反向提问 #
在开始之前,请问我 3 个问题,以便更好地理解我的需求。
效果:AI 主动获取信息,输出更精准。
总结 #
7 个核心原则:
| 原则 | 关键词 | 效果 |
|---|---|---|
| 明确角色 | “你是一位…” | 调整语言风格 |
| 提供上下文 | “我在开发…” | 针对性回答 |
| 分步骤 | “按以下步骤…” | 结构化输出 |
| 给示例 | “格式如下…” | 格式正确 |
| 设约束 | “不要超过…” | 符合要求 |
| 指定格式 | “用表格格式…” | 直接使用 |
| 迭代优化 | 多次改进 | 质量提升 |
一个好 Prompt 的公式:
好 Prompt = 角色 + 上下文 + 步骤 + 示例 + 约束 + 格式最后一句:
Prompt 工程不是"套路"AI,而是清晰地表达自己的需求。
你越清楚自己要什么,AI 越能帮你实现。
练习作业 #
选一个你最近用 AI 的任务,用 7 个原则重新写 Prompt,对比输出质量。
欢迎在评论区分享你的改进案例。