跟AI打交道久了,我发现让它写代码这事,效果好不好,一大半取决于你怎么“问”。说白了,就是提示词(Prompt)写得到不到位。很多人觉得AI生成的代码没法用,问题常常就出在这里。今天就聊聊,怎么写提示词才能让AI听懂话,覆盖从前端到后端各种活儿。
核心原则:把AI当成一个有点笨的实习生
你不能指望一个实习生能一步到位,看懂你模糊的需求。你得把话说得特别明白,甚至有点啰嗦。这个原则贯穿始终。
一个好的代码提示词,基本都包含这几个要素:
- 角色扮演 (Persona):让AI先进入一个角色。这能帮它锁定知识范围和沟通风格。
- 明确任务 (Task):你要它干什么,直接说。
- 提供上下文 (Context):这是最关键的一步。把你现有的代码片段、技术栈、文件结构、甚至报错信息都给它。 AI知道的越多,猜错的可能性就越小。
- 指定格式 (Format):你想要代码以什么形式返回?比如,一个完整的函数、一个JSON对象,还是一个React组件。
- 约束和要求 (Constraints):有没有什么限制?比如,“不要用某个库”、“代码风格要遵循ESLint规则”、“要写注释”等等。
记住这个框架,接下来我们看具体场景怎么用。
前端领域的提示词
前端开发杂事多,从UI组件到逻辑处理,都可以让AI帮忙。
场景一:从零生成一个完整的UI组件
假设你要用React和TypeScript写一个登录表单组件。
一个不太行的提示词是这样的:
“帮我写个登录表单。”
AI可能会给你一段最基础的HTML表单,或者用了一个你项目里根本没有的UI库,拿过来还得大改。
一个好得多的提示词应该是这样:
角色: 你是一个经验丰富的React前端开发者,熟悉使用Ant Design和TypeScript。
任务: 创建一个登录表单组件。
上下文与要求:
1. 技术栈: 使用React(函数式组件)、TypeScript和Ant Design。
2. 组件结构: 表单包含两个输入框:用户名(username)和密码(password),以及一个“登录”按钮。
3. 校验规则: 用户名和密码都是必填项,如果为空,需要显示Ant Design自带的错误提示。
4. 交互逻辑: 点击登录按钮时,调用一个从props传入的onLogin回调函数,并把表单数据作为参数传过去。在数据提交期间,按钮应显示加载状态。
5. 代码风格: 请遵循函数式组件和Hooks的写法,并为组件props定义明确的TypeScript类型。输出格式: 请提供一个完整、可以直接复制运行的
.tsx文件代码。
这个提示词几乎把所有重要信息都给全了。AI拿到后,就能生成一个高度符合你项目需求的代码,你可能只需要改改变量名就能用。
场景二:代码转换或迁移
比如,你想把一个用Class写的旧React组件,改成用Hooks的函数式组件。
你可以这么写:
角色: 你是一位精通React Hooks的前端专家。
任务: 将下面这个基于Class的React组件重构为函数式组件。
上下文:
javascript
// 这里粘贴你的旧组件代码
class OldComponent extends React.Component {
// ...一堆生命周期和state
}要求:
1. 使用useState替代this.state。
2. 使用useEffect替代componentDidMount和componentDidUpdate。
3. 保留所有原有的功能逻辑不变。
4. 代码要更简洁、可读性更高。输出格式: 返回一个完整的、重构后的函数式组件代码。
这样,AI就能准确理解你的意图,而不是瞎猜你要做什么。
后端领域的提示词
后端开发逻辑性更强,经常和数据库、API打交道。提示词的关键在于把业务逻辑和数据结构描述清楚。
场景一:编写API接口
假设你要用Node.js的Express框架写一个获取用户信息的API。
一个模糊的提示词:
“用Express写个获取用户的API。”
这等于什么都没说。获取哪个用户?从哪里获取?返回什么格式?AI只能瞎编。
一个精准的提示词:
角色: 你是一名资深的Node.js后端工程师,擅长使用Express和MongoDB。
任务: 编写一个HTTP GET接口,用于根据用户ID获取用户信息。
上下文与要求:
1. 技术栈: Node.js, Express.js, Mongoose (MongoDB)。
2. API端点:GET /api/users/:id。
3. 数据模型: 用户数据存储在MongoDB的users集合中,Mongoose模型如下:
javascript
const userSchema = new mongoose.Schema({
name: String,
email: String,
createdAt: Date
});
4. 业务逻辑:
* 从URL参数中获取用户ID。
* 使用Mongoose的findById方法在数据库中查找用户。
* 如果找到用户,返回状态码200和用户信息JSON对象。
* 如果未找到用户,返回状态码404和一个错误信息。
* 如果查询数据库出错,返回状态码500和一个服务器错误信息。
5. 安全: 不要返回用户的敏感信息,比如密码(虽然这个模型里没有)。输出格式: 提供一个完整的Express路由处理函数代码。
这个提示词把API的路径、请求方法、数据结构、成功和失败的逻辑都定义得清清楚楚,AI生成的代码质量会高很多。
场景二:生成数据库查询
写复杂的SQL查询或者NoSQL查询语句,也很适合让AI代劳。
比如你需要一个PostgreSQL查询:
角色: 你是一个SQL专家,精通PostgreSQL。
任务: 编写一个SQL查询语句。
上下文:
我有两张表:students和courses。
students表结构:id (PK), name, email
courses表结构:id (PK), course_name, student_id (FK to students.id)要求:
找出所有报名课程数量超过3门的学生的姓名和他们报名的课程总数。输出格式: 只返回SQL查询语句。
这个提示词提供了清晰的表结构和查询目标,AI可以直接生成对应的SQL,几乎不会出错。
跨领域的通用提示词技巧
除了针对前后端的特定场景,还有一些技巧是通用的,能极大提升AI代码生成的质量。
-
代码优化和重构: 你可以把一段感觉“不太对劲”的代码扔给AI,然后让它帮你优化。
> 提示: “分析以下代码的性能瓶颈,并提供一个优化后的版本。解释你做了哪些改动以及为什么这么做。” -
代码解释: 遇到看不懂的祖传代码或者第三方库的源码,让AI给你解释一下。
> 提示: “请逐行解释下面这段代码的功能和工作原理。” -
编写测试用例: 写测试是件麻烦事,但对保证质量很重要。AI很擅长干这个。
> 提示: “为下面这个JavaScript函数编写单元测试用例,使用Jest框架。需要覆盖正常情况、边界情况和异常情况。” -
调试错误: 直接把报错信息和相关代码块一起发给AI,它通常能很快定位问题原因。
> 提示: “我运行下面的代码时,控制台报了这个错误:[粘贴错误信息]。请帮我分析原因并修复代码。” -
渐进式提问: 不要指望用一个提示词解决所有问题。可以先把一个大任务拆解成几个小步骤,一步一步引导AI完成。 比如,先让它生成基本结构,然后下一步再让它添加具体的功能或错误处理。这就像和人结对编程一样,不断地给反馈和新的指令。






评论前必须登录!
注册