|
| 1 | +AI 生成:https://chatgpt.com/c/680defd7-d154-8010-b666-e18122828983 |
| 2 | + |
| 3 | +# 生成式 AI 时代:程序员向 AI 提问高质量问题指南 |
| 4 | + |
| 5 | +**为什么提问质量重要**:随着 ChatGPT、GitHub Copilot 等生成式 AI 辅助工具的普及,提问质量直接影响 AI 输出代码的可用性和开发效率。一篇文章指出:“ |
| 6 | +**编写合适的 AI 提示词能决定生成代码是可用还是不可用**”。具体而明确的问题可以让 AI |
| 7 | +更准确地理解需求,从而生成符合预期的代码;相反,模糊或缺乏细节的提问往往导致无用甚至错误的答案,浪费大量调试时间。 |
| 8 | + |
| 9 | +## 提问基本原则 |
| 10 | + |
| 11 | +- **清晰具体**:提问要目标明确、具体详细,避免笼统。例如不要只说“写个排序算法”,而应说明算法类型、使用的语言、输入输出格式等。一位开发者也强调:“越精确详细的请求,AI |
| 12 | + 生成代码能力越强”。 |
| 13 | +- **角色与背景**:可以在提示中指定 AI 扮演的角色(如“扮演一名资深的 Python 开发者”),并提供必要的背景信息(编程语言、框架、版本等)。例如说明“在 |
| 14 | + Python 3.9 环境下使用 Django”,让 AI 理解上下文,有助于生成贴合项目需求的解决方案。 |
| 15 | +- **分步思考**:对于复杂任务,引导 AI 分步骤思考。可以提示“请逐步分析”或使用**思维链(Chain-of-Thought)** |
| 16 | + 模式,让模型先推理再回答,这在需要分解问题或判断时效果更佳。例如先让 AI 给出解决方案思路,再进一步要求实现细节。 |
| 17 | +- **上下文信息**:提供与任务相关的上下文(如已有的代码片段、错误日志、需求描述等),切勿假设模型知道所有细节。例如在调试时粘贴相关代码和错误信息,并说明当前结果与预期的差异,有助于 |
| 18 | + AI 快速定位问题。 |
| 19 | +- **指定格式**:明确期望的输出形式或格式。例如如果需要特定结构(表格、JSON、注释风格等),可在提示词中提出。例如“请以 JSON |
| 20 | + 格式返回结果”或“返回的代码请带有详细注释”,让 AI 按照要求组织输出内容。 |
| 21 | + |
| 22 | +## 常用提问技巧 |
| 23 | + |
| 24 | +- **提供示例(Few-shot 提示)**:给出示例输入–输出或参考代码样本,让 AI 学习预期的输出模式。例如给出示例:“示例1:输入 |
| 25 | + `[2,1,4,3]`,输出`[4,3,2,1]`”,然后让模型生成类似输出。这种方式在要求标准化输出时非常有效。 |
| 26 | +- **明确需求细节**:详细描述功能要求和业务逻辑,包括输入输出的数据类型、边界条件、错误处理方式等。如提到“输入是整数列表,输出按降序排列”、“如果输入为空列表应返回空”,让 |
| 27 | + AI 更好地满足所有需求。 |
| 28 | +- **指定语言/版本**:提前说明使用的编程语言及版本、框架等。例如“使用 Python 3.8”或“基于 React 18”。这样 AI |
| 29 | + 不会使用不兼容的语法或库,生成的代码更符合项目环境。 |
| 30 | +- **单一任务聚焦**:每次提问集中解决一个问题,不要一次性塞入多个独立任务。例如先询问“如何实现排序算法”,待结果满意后再单独提问“怎样在网页中调用该算法”。分开提问可以避免混淆,提高回答准确度。 |
| 31 | +- **利用上下文和反馈**:对于调试或优化问题,粘贴现有的代码片段和错误信息,并说明出错现象与预期结果的区别。在得到初步答案后,如果有需要可进一步跟进提问,指导 |
| 32 | + AI 改正错误或补充遗漏,像与人对话一样迭代交流。 |
| 33 | +- **指定输出格式**:如果需要特定的返回格式,应在提示中说明。例如“返回结果请使用 JSON 数组”或“请给出包含注释的代码”,避免 AI |
| 34 | + 给出不符合要求的输出。 |
| 35 | + |
| 36 | +## 常见错误示例与改进建议 |
| 37 | + |
| 38 | +- **错误示例:提问过于模糊。** 例如“写一个排序算法”没有说明语言、算法类型或输出格式,AI 容易给出不符合预期的答案。 |
| 39 | + **改进:** 增加细节,如“请帮我用 Python 实现一个对整数数组进行降序排序的冒泡算法”,明确算法、语言和排序方式,让 AI |
| 40 | + 生成准确的代码示例。 |
| 41 | +- **错误示例:多个任务混合提问。** 例如“帮我写一个网站的前端和后端代码”一次性包含前后端两个独立功能,AI 难以同时兼顾。 |
| 42 | + **改进:** 将问题拆分为多个单独提问,逐一解决。例如先提问前端页面实现,再提问后端接口设计。这样模型聚焦于一个任务,回答质量更高。 |
| 43 | +- **错误示例:缺少关键信息。** 例如只描述“代码出错”但未提供代码段和环境信息,AI 无法判断问题所在。 |
| 44 | + **改进:** 指定相关上下文,如编程语言、框架及版本,并粘贴出错的代码片段和完整的错误信息。例如“在 Python 3.9 的 Django |
| 45 | + 项目中,以下视图函数报了错误:……”,帮助 AI 精准定位并解答。 |
| 46 | +- **错误示例:未说明输出格式。** 如果没有明确要求格式,AI 可能给出冗长说明而非代码或不符合格式的回答。 |
| 47 | + **改进:** 提前说明输出格式或举例,例如“请以 JSON 格式返回结果”或给出示例模板。这样可以让 AI 输出符合预期格式的答案。 |
| 48 | + |
| 49 | +## 提问模板示例 |
| 50 | + |
| 51 | +- **功能实现**:`请帮我用【语言】实现一个【功能】`,例如“请帮我用 Python 实现一个冒泡排序算法”。 |
| 52 | +- **错误分析**:`下面是我的错误信息:……请帮我分析原因并解决`,同时附上相关代码片段和完整报错,便于 AI 理解问题。 |
| 53 | +- **角色扮演**:`你是一名【角色】,请帮我……`。例如“你是一名前端专家,请帮我用 React 实现一个登录页面并做表单验证”。 |
| 54 | +- **API 调用**:`请帮我用【语言】调用【API 名称】获取【数据】`。如“请帮我用 JavaScript 调用 GitHub API 获取我的仓库列表”。 |
| 55 | +- **算法/数据结构**:`请帮我用【语言】实现【算法名称】`,如“请帮我用 C++ 实现快速排序算法”。 |
| 56 | +- **前端示例**:`请你作为一名前端开发工程师,用【框架】实现一个【功能】`。例如“请你作为资深 React 工程师,使用 React 实现一个 |
| 57 | + TODO 列表组件,包括添加和删除功能”。 |
| 58 | +- **其它约束**:`请在不使用第三方库的情况下,用【语言】……` 或 `请限制时间复杂度为 O(n) ……` 等,用于指定特殊要求。 |
| 59 | +- **输出要求**:`请以【格式】格式返回结果`或`请对生成的代码逐行添加注释`,明确输出形式。 |
| 60 | + |
| 61 | +通过遵循以上原则和技巧,并结合具体示例和模板,程序员可以更高效地与 AI 协作,获得准确、可用的代码和建议,实现事半功倍的开发效果。 |
| 62 | + |
| 63 | +**参考资料:** 提示工程相关实践指南,以及相关博客和专家建议。 |
0 commit comments