想让AI吐出能用的代码,关键在于你怎么“问”。把AI当成一个刚入职但学习能力超强的实习生,而不是一个能看穿你心思的大神,问题就好办多了。你给他一个模糊的需求,他只能瞎猜,结果自然不靠谱。 但如果你把任务拆解得清清楚楚,他就大概率能给你一个惊喜。
核心就一点:具体、清晰,别让AI猜。
下面是我自己常用的一套提示词格式,或者说是一个思考框架。它基本上涵盖了向AI请求代码时需要说清楚的所有要素。你可以把它当成一个模板,每次用的时候,过一遍这些点,代码质量能稳定不少。
1. 角色扮演 (Role):先给AI一个身份
让AI扮演一个具体的角色,这其实是在设定它的知识边界和思考角度。 你直接说“写个代码”,和你对它说“你是一名资深的后端工程师”,它给出的代码风格和考量的点是完全不一样的。
- 不好的例子:“帮我写个脚本。”
- 好的例子:“你是一名资深的Python自动化运维工程师。”
为什么要这么做?因为当你给AI一个明确的身份,比如“前端开发专家”或“数据库管理员”,它会启用该领域更专业的知识库,给出的代码会更符合行业规范,思考问题的方式也会更贴近那个角色的日常工作。 比如,你让它扮演安全专家,它写的代码会更注重安全漏洞的防范。
2. 任务描述 (Task):明确说出你要干什么
这是最核心的部分,必须用最直接、最没有歧义的语言告诉AI你的目标是什么。 目标越清晰,AI跑偏的可能性就越小。
- 不好的例子:“处理一下用户数据。”
- 好的例子:“写一个Python函数,接收一个包含用户信息的JSON字符串作为输入,解析出用户的姓名和邮箱地址。”
在描述任务时,有几个点特别重要:
* 动作要明确:用动词开头,比如“创建”、“实现”、“优化”、“修复”。
* 功能要具体:不要说“做一个登录功能”,要说“创建一个基于Flask的登录函数,通过用户名和密码验证用户身份”。
* 输入输出要清晰:明确函数需要接收什么参数,参数是什么类型,以及它应该返回什么结果,结果是什么格式。
例如:“请实现一个函数 calculate_sum(numbers),输入是一个整数列表 numbers,输出是这个列表里所有数字的和。” 这种描述方式,AI几乎不可能理解错。
3. 上下文 (Context):提供所有必要的背景信息
AI不知道你的项目环境,所以你必须告诉它。 上下文信息给得越全,生成的代码兼容性就越好,直接拿来用的概率就越大。
需要提供的上下文通常包括:
* 编程语言和版本:比如,Python 3.9或JavaScript (ES6)。
* 框架和库:明确你正在使用的框架,比如React、Django、Flask,以及相关的库和它们的版本。
* 运行环境:代码将运行在什么环境,是浏览器、Node.js服务器,还是Docker容器里?
* 现有代码:如果是在现有代码基础上修改或添加功能,一定要把相关的代码片段贴给它。 这样AI才能理解你当前的编码风格和逻辑。
- 不好的例子:“给我写个API接口。”
- 好的例子:“我正在用Node.js和Express框架开发一个RESTful API。这是我现有的
server.js文件内容([贴上代码])。请在这个文件里,添加一个新的GET接口/users,用来从MongoDB数据库的users集合中获取所有用户信息。”
4. 约束和要求 (Constraints):划定规则和边界
如果你对代码有特定的要求,一定要提前说清楚。 这些约束就像护栏,能防止AI天马行空,确保它的产出符合你的标准。
常见的约束包括:
* 性能要求:比如,“这个函数需要处理百万级的数据量,请优化其时间复杂度,最好在O(n)以内。”
* 代码风格:要求遵循特定的编码规范,比如PEP 8 (针对Python)或Airbnb Style Guide (针对JavaScript)。
* 禁止使用的库或方法:明确告诉AI不准使用某个特定的库,或者必须用原生API实现。
* 错误处理:要求代码包含完整的错误处理逻辑,比如try-catch块,或者对特定异常情况的处理。
* 注释和文档:可以要求AI为生成的代码编写清晰的注释或文档字符串 (docstrings)。
- 不好的例子:“让代码快一点。”
- 好的例子:“请重构以下Python函数,提高其执行效率。禁止使用pandas库,并为关键代码行添加注释说明其作用。”
5. 输出格式 (Output Format):规定你想要的交付形式
明确告诉AI你希望它以什么形式给你答案。 这能省去很多后续的手动整理工作。
你可以这样要求:
* 只要代码:“请只输出代码块,不要包含任何解释性文字。”
* 代码加解释:“请先提供完整的代码实现,然后在代码下方用中文分点解释每个函数的作用和核心逻辑。”
* 特定格式:要求输出为JSON、XML或Markdown表格等结构化数据。
* 分步思考:对于复杂问题,可以要求AI“一步一步地思考”,先解释思路,再写代码。这能让你更好地理解它的逻辑,也更容易发现问题。
- 不好的例子:“给我结果。”
- 好的例子:“请将最终的代码放在一个单独的Python代码块中。在代码块之前,请用一个列表总结你实现这个功能的关键步骤。”
6. 提供示例 (Few-Shot Prompting):举个例子,让它模仿
这招特别好用。如果你希望AI生成的代码遵循某种特定的风格或结构,直接给它一个例子比用语言描述半天要有效得多。 这种方法被称为“Few-Shot Prompting”(少量样本提示)。
比如,你想让它写一个API接口,可以先给它一个你项目中已有的、风格符合你要求的接口代码作为范例。
- 提示词示例:
“你是一名Go语言工程师。我需要你为我的项目添加一个新的API端点。
这是我项目中一个现有端点的代码示例,我希望你遵循同样的风格:
go
// [贴上你的示例代码]
现在,请根据这个风格,为我创建一个新的HTTP GET端点/api/products,它需要从PostgreSQL数据库的products表中查询所有产品,并以JSON格式返回。”
通过这种方式,AI能快速学习到你的代码风格、变量命名习惯、错误处理方式等,生成的结果会和你自己的代码更搭。
总的来说,一个高质量的提示词,就是把上面这几点组合起来,形成一个结构化的、信息完整的指令包。 刚开始可能会觉得有点繁琐,但习惯之后,你会发现这种方式生成的代码准确率和可用性都高得多,省下的是后面无尽的调试和修改时间。记住,你和AI是协作关系,你表达得越清楚,这个“实习生”成长得就越快。





评论前必须登录!
注册