提示工程的核心原则
在与AI代码助手协作时,有效的沟通策略至关重要。想象你正在指导一位技术能力很强但对你项目背景一无所知的同事,你需要提供足够的信息让他理解并解决问题。
关键原则
提供充分的上下文信息
- 使用的编程语言和框架版本
- 具体的错误信息和堆栈跟踪
- 代码的预期功能和实际表现
- 相关的项目约束和技术栈
明确具体的目标 避免模糊描述,清楚说明你要解决什么问题:
❌ “让我的代码更好” ✅ “重构这个函数以提高可读性,减少代码重复,并使用ES6语法”
分步骤处理复杂任务 将大任务拆解为小步骤:
PHP
1. 首先生成React组件的基本结构
2. 然后添加状态管理逻辑
3. 最后集成API调用和错误处理
提供输入输出示例 通过具体例子说明期望的行为:
PHP
// 期望: formatPrice(2.5) 返回 "$2.50"
// 期望: formatPrice(100) 返回 "$100.00"
调试场景的高效提示
实战案例:React Hook 依赖问题
问题代码:
PHP
const UserProfile = ({ userId }) => {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchUser(userId).then(setUser).finally(() => setLoading(false));
}, [userId, setUser, setLoading]); // 问题在这里
return loading ? <div>Loading...</div> : <div>{user?.name}</div>;
};
❌ 低效提示:
PHP
我的useEffect有问题,组件一直重新渲染
✅ 高效提示:
PHP
我有一个React组件出现无限重新渲染问题:
预期行为:当userId变化时获取一次用户数据
实际行为:组件无限循环重新渲染
错误信息:Warning: Maximum update depth exceeded
代码如上,问题在useEffect的依赖数组中。setUser和setLoading是否应该加入依赖?为什么会导致无限循环?请解释React Hook依赖的最佳实践。
调试提示模板
PHP
问题描述:[简要说明问题]
预期行为:[代码应该做什么]
实际行为:[现在发生了什么]
错误信息:[完整的错误消息]
相关代码:[提供代码片段]
技术环境:[语言版本、框架版本]
重构场景的系统化方法
明确重构目标
重构时要明确改进方向:
重构目标 | 提示模板 | 示例 |
---|---|---|
性能优化 | “优化这个函数的[具体性能指标]” | “优化这个函数,消除O(n²)复杂度” |
代码清理 | “重构以提高[可读性/可维护性]” | “重构这个函数,减少嵌套并改善命名” |
技术升级 | “将[旧技术]改写为[新技术]” | “将类组件改写为使用Hooks的函数组件” |
实战案例:性能优化重构
原始代码(存在O(n²)问题):
PHP
function processUserData(users, orders) {
const result = [];
for (let user of users) {
const userOrders = [];
for (let order of orders) {
if (order.userId === user.id) {
userOrders.push(order);
}
}
const totalSpent = userOrders.reduce((sum, order) => sum + order.amount, 0);
result.push({ ...user, orders: userOrders, totalSpent });
}
return result;
}
✅ 性能优化提示:
PHP
以下函数存在O(n²)时间复杂度问题,需要优化为O(n):
[代码]
优化要求:
1. 消除嵌套循环,使用Map进行O(1)查找
2. 减少重复计算,一次遍历完成数据聚合
3. 保持代码可读性,添加性能注释
4. 处理边缘情况:用户无订单的情况
请提供重构后的代码并解释优化思路。
功能开发的渐进式提示
从架构到实现的分层开发
第一步:架构设计
PHP
设计一个多步骤表单的状态管理架构:
功能需求:
- 支持3个步骤的表单流程
- 实时验证和数据持久化
- 前进/后退导航
技术栈:React + TypeScript + React Hook Form
请提供:
- 状态结构设计
- 主要Hook接口设计
- 状态转换逻辑
第二步:核心实现
PHP
基于前面的架构设计,实现核心的useMultiStepForm Hook:
要求:
1. 管理当前步骤和表单数据
2. 提供nextStep、prevStep、updateStepData方法
3. 集成表单验证逻辑
4. 自动保存到localStorage
请提供完整的Hook实现代码。
功能开发模板
PHP
## 任务描述
[你要解决的问题]
## 技术环境
- 语言/框架:
- 版本信息:
- 相关库:
## 具体要求
- 功能需求:
- 性能要求:
- 代码风格:
## 约束条件
- 不能使用:
- 必须遵循:
## 期望输出
[描述期望的结果格式]
高级提示技巧与常见误区
十大高效提示技巧
技巧 | 模板 | 应用场景 |
---|---|---|
角色设定 | “你是一名资深[语言]开发者,请[任务]” | 代码审查、架构建议 |
问题诊断 | “这是问题:[描述],代码如下,原因是什么?” | Bug定位 |
示例驱动 | “函数输入[X]应输出[Y],请实现” | 功能开发 |
分步执行 | “逐行分析这个函数,变量值如何变化?” | 逻辑调试 |
约束限定 | “请避免[X],使用[Y],优化[Z]” | 符合项目规范 |
常见误区与解决方案
1. 信息过载 ❌ 一次性要求解决多个复杂问题 ✅ 分步骤逐个解决
2. 信息不足 ❌ “修复我的代码” ✅ 提供错误信息、预期行为、相关代码
3. 目标模糊 ❌ “让代码更好” ✅ “提高可读性并减少内存使用”
代码审查提示模式
PHP
扮演资深技术架构师,对以下代码进行深度审查:
[代码内容]
审查维度:
1. 架构设计:是否符合SOLID原则?
2. 性能考量:有无性能瓶颈?
3. 安全性:是否存在安全漏洞?
4. 可维护性:代码是否易于理解和修改?
请提供具体问题、建议和改进示例。
最佳实践建议
持续迭代改进
PHP
第一轮:获得基本解决方案
第二轮:优化和改进
第三轮:添加错误处理和测试
验证和学习
- 总是验证AI生成的代码
- 运行测试确保功能正确
- 分析AI的解决思路
- 记录有效的提示模式
结语
提示工程是一门实用技能,需要在实践中不断磨练。通过清晰的沟通、具体的要求和耐心的迭代,你能够显著提升编程效率。记住,AI助手就像一位聪明但需要明确指导的合作伙伴,良好的提示能让它成为你编程路上的得力助手。