返回文章列表
程序员必会的 Prompt 工程:让 AI 生成更好的代码
掌握 Prompt 编写技巧,让 Claude、GPT 等 AI 工具生成更准确、更高质量的代码。
AIProgHub
2024年12月09日
5 min read
Prompt工程AI编程最佳实践
为什么 Prompt 很重要?
同样的 AI 工具,不同的 Prompt 会产生截然不同的结果。一个好的 Prompt 可以让 AI 生成的代码从"勉强能用"变成"生产就绪"。
Prompt 编写黄金法则
1. 具体 > 模糊
❌ 差的 Prompt:
写一个验证函数
✅ 好的 Prompt:
写一个 TypeScript 函数 validateEmail,要求:
- 参数:email: string
- 返回:{ valid: boolean; error?: string }
- 验证规则:
1. 必须包含 @ 符号
2. @ 前后都必须有字符
3. 域名部分必须包含 .
- 使用正则表达式实现
- 添加 JSDoc 注释
2. 提供上下文
告诉 AI 你的技术栈和约束:
在我的 Next.js 14 项目中(使用 App Router),
创建一个用户登录 API 路由,要求:
- 使用 zod 进行请求体验证
- 使用 bcrypt 比对密码
- 返回 JWT token
- 处理所有可能的错误情况
3. 给出示例
根据以下代码风格,创建一个获取订单详情的函数:
// 示例:获取用户信息
export async function getUserById(id: string) {
const user = await prisma.user.findUnique({
where: { id },
select: {
id: true,
name: true,
email: true,
}
});
if (!user) {
throw new NotFoundError('User not found');
}
return user;
}
// 请创建:获取订单详情,包含订单项和用户信息
4. 分步骤请求
复杂任务拆分成多步:
步骤 1:先帮我设计数据库 schema,
我需要一个博客系统,包含文章、分类、标签、评论
步骤 2:(拿到 schema 后)
基于这个 schema,创建 Prisma 模型
步骤 3:(拿到模型后)
为文章模块创建 CRUD API
实战 Prompt 模板
模板 1:代码重构
重构以下代码,要求:
1. 遵循 SOLID 原则
2. 提取重复逻辑
3. 添加适当的错误处理
4. 保持原有功能不变
5. 添加类型注解
原代码:
[粘贴代码]
模板 2:Bug 修复
这段代码有 bug,表现为 [描述症状]。
预期行为:[描述预期]
实际行为:[描述实际]
请:
1. 分析可能的原因
2. 提供修复方案
3. 解释为什么这样修复
代码:
[粘贴代码]
模板 3:代码审查
请审查以下代码,从这些方面给出建议:
- 安全漏洞
- 性能问题
- 代码可读性
- 潜在 bug
- 最佳实践
代码:
[粘贴代码]
模板 4:学习新技术
我是一个有 3 年经验的 React 开发者,
现在需要学习 [新技术名称]。
请:
1. 用 React 的概念类比解释核心概念
2. 给出一个简单的入门示例
3. 列出 3 个常见陷阱
4. 推荐学习路径
高级技巧
角色设定
你是一个有 10 年经验的后端架构师,
专注于高并发系统设计。
请评估以下 API 设计的可扩展性...
约束条件
在以下约束下完成任务:
- 不使用任何第三方库
- 代码行数控制在 50 行以内
- 时间复杂度必须是 O(n)
思考链
一步步思考这个问题:
1. 首先分析需求
2. 考虑可能的方案
3. 评估每个方案的优缺点
4. 选择最佳方案并实现
常见错误
- 太模糊:没有具体需求
- 太啰嗦:无关信息太多
- 缺乏上下文:不说技术栈和约束
- 一次问太多:复杂任务不拆分
总结
好的 Prompt = 具体需求 + 足够上下文 + 清晰约束 + 期望输出格式
花 2 分钟写好 Prompt,能节省 20 分钟调试 AI 生成的代码。
实践建议:创建一个 Prompt 模板库,把常用的 Prompt 保存下来,每次使用时只需微调。