花了点时间研究 Prompt Engineering,整理一些写提示词的套路

ChatGPT 用了几个月,发现同样一个问题,问法不一样结果差距特别大。有时候给它一句话描述需求,出来的东西驴唇不对马嘴;换个方式把上下文说清楚,生成的代码直接就能跑。后来去看了些提示词工程(Prompt Engineering)的资料,发现确实有些套路可以用。记一下我觉得比较实用的几个。

1. 最基本的:把需求说清楚

这个看起来像废话,但真的是最重要的。不要假设 AI 知道你的背景和上下文。

1
2
3
4
5
6
7
8
9
10
11
❌ 差的提问:
"写一个登录功能"

✅ 好的提问:
"用 Vue 3 + Composition API 写一个登录页面组件。
要求:
1. 有用户名和密码两个输入框
2. 提交前做表单校验(用户名不能为空,密码至少6位)
3. 点击登录调用 /api/login 接口,用 axios
4. 登录成功后跳转到 /dashboard
5. 用 Element Plus 的组件"

越具体,生成的结果越接近你要的。

2. 给它一个角色

告诉 AI “你是谁”,能让输出的风格和深度更符合预期。

1
2
3
"你是一个有 5 年经验的前端开发工程师,熟悉 Vue 和 React。
请帮我 review 以下代码,指出潜在的 bug 和可以优化的地方,
用中文回复,语气像同事之间讨论那样。"

我试过不加角色描述和加了角色描述的对比,区别确实明显。加了角色后它不会给你讲一堆初学者级别的废话,直接挑重点说。

3. Few-shot:给几个例子

当你需要 AI 按照特定的格式输出时,直接给它看例子比描述格式要靠谱得多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"请根据接口文档,生成前端的 TypeScript 类型定义。

示例输入:
接口: GET /api/users
响应字段: id(number), name(string), email(string), isActive(boolean)

示例输出:
interface User {
id: number
name: string
email: string
isActive: boolean
}

现在请处理:
接口: GET /api/orders
响应字段: orderId(string), amount(number), status(string),
items(数组,每项包含 productName(string) 和 quantity(number)),
createdAt(string)"

给了例子之后,它就知道输出格式应该是什么样的了。

4. 分步骤引导

复杂任务不要一口气全甩给它,分步做效果更好。

1
2
3
4
5
6
7
8
9
10
11
12
13
第一步:
"我要做一个 Todo List 应用,请先帮我设计数据结构和组件划分,不要写代码。"

(看了方案觉得合理)

第二步:
"按照上面的设计,先写 TodoItem 组件。"

第三步:
"现在写 TodoList 组件,调用 TodoItem。"

第四步:
"加上添加和删除的功能。"

这样一步步来,每步都能确认方向对不对,比一次性让它生成全部代码要可控得多。

5. 约束输出格式

有时候只需要代码不需要解释,或者需要特定格式:

1
2
3
4
5
6
"只输出代码,不要解释。用 TypeScript。"

"以 Markdown 表格的形式对比 Vue 和 React 的以下方面:
状态管理、路由方案、构建工具、学习曲线、社区生态"

"用 JSON 格式返回结果,包含 title、description、tags 三个字段。"

6. 让它检查自己

AI 生成的代码不一定对,但你可以让它自检:

1
2
3
4
"检查上面这段代码有没有以下问题:
1. 内存泄漏(比如事件监听忘了清除)
2. 竞态条件(比如异步请求的顺序问题)
3. 边界情况没考虑(空数组、null、undefined)"

或者更直接:

1
"这段代码有 bug,你能找出来吗?"

让它重新审视自己的输出,有时候真能揪出问题来。

7. 一些日常用得比较多的 Prompt 模板

代码 Review

1
2
"Review 以下代码,从可读性、性能、安全性三个角度给出改进建议。
对每个建议,说明原因并给出修改后的代码。"

写正则

1
2
"写一个 JavaScript 正则表达式,匹配中国大陆手机号码(11位,以1开头,第二位是3-9)。
给出正则和 3 个匹配成功 + 2 个匹配失败的测试用例。"

解释报错

1
2
3
4
5
6
7
8
"我在 Vue 3 项目里遇到这个报错:
[Vue warn]: Unhandled error during execution of setup function
TypeError: Cannot read properties of undefined (reading 'map')

相关代码如下:
[粘贴代码]

请分析可能的原因和解决方案。"

写接口文档

1
2
3
4
"根据以下 Express 路由代码,生成 API 文档。
格式:接口地址、请求方法、请求参数、响应示例。
用 Markdown 格式。
[粘贴代码]"

8. 一些注意事项

  • 别无脑信任生成的代码,尤其是涉及安全的部分(SQL 查询、用户输入处理等),一定要自己看一遍
  • 敏感信息别粘进去,数据库密码、API Key 之类的
  • **长对话会”忘事”**,如果上下文太长了,关键约束条件最好在后面的提问里再重复一次
  • 不同模型效果不同,GPT-4 在复杂逻辑和长代码上明显比 3.5 强,预算够的话优先用 4

说实话写 Prompt 这事说穿了也没什么玄学,核心就是”把需求说清楚,把约束条件列出来”。跟给新同事安排工作差不多,交代越清楚,返工概率越低。

------ 有问题请 留言给我哦! 也欢迎入群讨论! 点我呀! ------

评论加载中…

0%