ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何向 AI 清楚描述一个编程需求

如何向 AI 清楚描述一个编程需求 文章目录一、为什么“帮我写代码”通常不够清楚二、描述需求的第一个要素背景背景通常包含什么为什么背景很重要背景不要写得过多三、描述需求的第二个要素目标不够具体的目标更清楚的目标目标最好包含“做什么”和“不做什么”四、描述需求的第三个要素限制常见的限制类型1. 技术限制2. 修改范围限制3. 功能范围限制4. 输出限制5. 安全和数据限制不确定的内容不要让 AI 自行猜五、描述需求的第四个要素输出格式只要求“给我代码”明确输出步骤不同任务可以要求不同输出学习代码生成小功能排查报错修改已有代码六、把 4 个要素组合起来原始需求补充背景补充目标补充限制补充输出格式组合后的完整需求七、不同场景下的需求描述模板模板一让 AI 解释代码模板二让 AI 生成一个函数模板三让 AI 修改已有代码模板四让 AI 排查报错八、描述需求时最容易犯的 4 个错误错误一目标太抽象错误二把多个大任务混在一起错误三只说技术不说结果错误四只说结果不说明学习阶段九、提交需求前的快速检查十、总结✍创作者全栈弄潮儿 个人主页全栈弄潮儿的个人主页️ 个人社区欢迎你的加入全栈开发社区 专栏地址欢迎订阅AI 编程提效实战前面几篇文章中我们反复提到一个观点AI 输出得好不好和我们描述问题的方式有很大关系。很多人第一次向 AI 提问时通常只会说帮我写一个待办事项功能。AI 确实可以生成代码。但这段代码很可能和你的实际需求不一致因为 AI 不知道你使用什么技术栈。你想实现哪些具体功能。数据应该保存在哪里。哪些功能暂时不需要。你希望 AI 输出代码还是先解释思路。这不是 AI 故意回答得不好而是问题本身留下了太多需要猜测的地方。今天我们就来学习一个非常实用的能力如何向 AI 清楚描述一个编程需求让它少猜一点、少返工一点。本文不会要求你学习复杂的 Prompt 术语。只要记住 4 个要素背景 ↓ 目标 ↓ 限制 ↓ 输出格式一、为什么“帮我写代码”通常不够清楚我们先看一个很短的需求帮我写一个用户登录页面。这句话看起来很明确但真正开始实现时还有很多问题没有答案使用 Vue、React还是原生 HTML页面需要哪些输入框登录使用账号密码还是手机号验证码用户名和密码是否必填密码是否需要显示和隐藏切换登录成功后跳转到哪里登录失败后如何提示是否需要显示加载状态是否需要调用真实接口是否需要保存登录状态如果你不补充这些信息AI 就必须自行选择。它可能生成一个简单的静态页面也可能生成一个带路由、接口、状态管理和第三方组件库的复杂实现。两种结果都可能“看起来合理”但未必符合你的目标。所以问题不一定是AI 为什么没有按照我的想法写也可能是我有没有把自己的想法说完整二、描述需求的第一个要素背景背景是告诉 AI你现在处于什么环境要解决什么类型的问题。背景不需要写成一篇项目介绍只需要提供和当前任务有关的信息。背景通常包含什么根据任务不同可以提供使用的编程语言。使用的框架或运行环境。当前项目的大致类型。相关文件或模块。你目前的学习阶段。已经完成了哪些内容。例如我正在学习 JavaScript使用 Node.js 运行代码。 目前只会使用变量、函数、数组和条件判断。 我想通过一个小练习理解如何读取和处理文件。如果是一个已有项目可以这样描述这是一个 Vue 3 JavaScript 的待办事项项目。 页面代码位于 src/components/TodoList.vue。 当前已经可以展示待办列表本次只想增加删除功能。 项目使用 npm 管理依赖不希望新增第三方库。为什么背景很重要同一个需求在不同环境中的实现方式可能不同。例如“读取文件”浏览器中需要考虑文件选择器和用户权限。Node.js 中可以使用文件系统模块。Python 中有自己的文件操作方式。移动端还需要考虑平台权限。如果不说明背景AI 只能给出一个通用答案。通用答案适合学习概念但不一定能直接放进你的项目。背景不要写得过多提供背景不等于把整个项目全部复制给 AI。如果你只是想学习一个数组方法不需要把整个项目目录、所有配置和无关代码都发过去。可以遵循一个简单原则只提供完成当前任务必须知道的背景。例如我使用 JavaScript。 下面有一个用户数组。 我想筛选出年龄大于 18 岁的用户。这些信息已经足够 AI 解释filter的用法。三、描述需求的第二个要素目标目标是告诉 AI这一次具体要完成什么。目标越具体AI 越容易判断工作范围。不够具体的目标帮我优化一下页面。“优化”可能代表很多事情让页面加载更快。让样式更好看。让手机端适配更好。减少重复代码。提高代码可读性。修复一个具体的交互问题。如果没有进一步说明AI 可能按照自己的理解进行大范围修改。更清楚的目标请优化待办事项列表的移动端显示效果。 本次只调整 CSS不修改 JavaScript 逻辑。 要求 1. 屏幕宽度小于 600px 时列表不要出现横向滚动。 2. 每条待办事项的文字过长时可以换行。 3. 删除按钮保持在每条记录的右侧。这个目标就比较清楚了优化对象是待办事项列表。使用场景是移动端。修改范围是 CSS。不允许修改 JavaScript。有明确的验收条件。目标最好包含“做什么”和“不做什么”很多返工都来自范围不清。所以描述目标时可以同时写本次要做 - 增加待办事项删除功能。 本次不做 - 不增加编辑功能。 - 不修改数据存储方式。 - 不重构现有列表组件。明确不做什么同样重要。四、描述需求的第三个要素限制限制是告诉 AI哪些事情必须遵守哪些事情不能自行决定。没有限制时AI 往往会选择它认为方便的实现方式。常见的限制类型1. 技术限制- 只使用原生 JavaScript。 - 不使用第三方库。 - 使用项目现有的 axios 封装。 - 兼容 Node.js 18。2. 修改范围限制- 只修改 LoginForm.vue。 - 不修改路由配置。 - 不修改数据库结构。 - 不重命名现有接口。3. 功能范围限制- 本次只实现新增不实现编辑和删除。 - 只处理未完成的待办事项。 - 暂时不接入真实登录接口。4. 输出限制- 先解释思路再给代码。 - 代码拆分成三个文件。 - 每段代码后说明如何运行。 - 只输出需要修改的部分不要重复整个项目。5. 安全和数据限制- 不要在日志中打印密码和令牌。 - 不要使用真实用户数据。 - 不要把密钥写死在前端代码中。 - 用户输入必须经过基本校验。不确定的内容不要让 AI 自行猜如果你不知道某条规则也可以直接告诉 AI下面这条业务规则我还没有确认。 请先把它列为待确认问题不要自行选择一种实现。例如订单支付成功后是否允许取消目前还没有确定。 请在方案中单独列出这个问题。这样可以避免 AI 把一个猜测写进代码之后又被当成了正式规则。五、描述需求的第四个要素输出格式输出格式是告诉 AI你希望它用什么方式回答。同一个需求输出格式不同结果的可用性也会不同。只要求“给我代码”帮我写一个读取 CSV 文件的程序。AI 可能只返回一段代码。如果你是初学者可能还不知道代码应该保存成什么文件。需要安装什么环境。如何运行。输入文件放在哪里。输出结果是什么。明确输出步骤请按以下顺序回答 1. 先用简单语言解释实现思路。 2. 说明需要准备的文件和目录。 3. 给出完整代码。 4. 说明如何运行。 5. 给出一份示例输入和预期输出。 6. 列出 3 个常见错误及排查方法。这种格式特别适合初学者。不同任务可以要求不同输出学习代码请先解释概念再给一个最小示例。 逐行说明关键代码并给出可以修改的练习。生成小功能请先复述需求再给出实现思路和代码。 最后列出运行步骤和测试场景。排查报错请先解释报错含义。 再按可能性从高到低列出原因和排查步骤。 不要直接猜一个结论。修改已有代码请先说明准备修改哪些地方。 只修改与当前需求相关的代码。 不要重写无关部分。 修改后说明可能影响的功能。输出格式越明确你越容易阅读、检查和使用 AI 的回答。六、把 4 个要素组合起来下面用一个具体需求把背景、目标、限制和输出格式组合起来。原始需求帮我做一个待办事项功能。这句话太宽泛AI 需要自行猜测很多内容。补充背景我正在学习原生 HTML、CSS 和 JavaScript。 目前已经可以创建一个网页并使用 JavaScript 操作按钮点击事件。 我想通过一个小项目练习数组和 DOM 操作。补充目标请实现一个简单的待办事项列表。 用户可以输入待办内容点击按钮后把它添加到列表中。 每条待办事项旁边显示一个删除按钮。补充限制要求 1. 只使用原生 HTML、CSS 和 JavaScript。 2. 不使用第三方库。 3. 本次不接入数据库。 4. 待办内容为空时不能添加。 5. 只修改新增和删除不实现编辑功能。补充输出格式请按以下格式输出 1. 先解释实现思路。 2. 分别给出 index.html、style.css 和 app.js。 3. 说明每个文件的作用。 4. 说明如何在浏览器中运行。 5. 列出正常输入、空输入和连续删除的测试方法。 6. 代码要适合初学者阅读避免不必要的复杂写法。组合后的完整需求我正在学习原生 HTML、CSS 和 JavaScript。 目前已经可以创建一个网页并使用 JavaScript 操作按钮点击事件。 我想通过一个小项目练习数组和 DOM 操作。 请实现一个简单的待办事项列表。 用户可以输入待办内容点击按钮后把它添加到列表中。 每条待办事项旁边显示一个删除按钮。 要求 1. 只使用原生 HTML、CSS 和 JavaScript。 2. 不使用第三方库。 3. 本次不接入数据库。 4. 待办内容为空时不能添加。 5. 只修改新增和删除不实现编辑功能。 请按以下格式输出 1. 先解释实现思路。 2. 分别给出 index.html、style.css 和 app.js。 3. 说明每个文件的作用。 4. 说明如何在浏览器中运行。 5. 列出正常输入、空输入和连续删除的测试方法。 6. 代码要适合初学者阅读避免不必要的复杂写法。相比最开始的一句话这个版本已经明确了学习背景。技术环境。具体功能。本次范围。不做的内容。代码组织方式。运行和测试要求。AI 得到的信息越完整越容易给出符合预期的回答。七、不同场景下的需求描述模板模板一让 AI 解释代码我正在学习 [编程语言或框架]。 下面是一段代码 [粘贴代码] 请完成以下任务 1. 用初学者能理解的语言说明整体作用。 2. 逐段解释关键代码。 3. 说明每个输入和输出。 4. 指出可能出现的错误。 5. 给我一个可以自己修改的练习。模板二让 AI 生成一个函数我使用 [语言和版本]。 请实现一个 [函数功能]。 背景 [说明函数会被用在哪里] 要求 - 输入是 [参数和类型] - 输出是 [返回值和类型] - [业务规则或限制] - [异常输入如何处理] 请先解释思路再给代码。 最后提供正常、边界和异常测试示例。模板三让 AI 修改已有代码这是当前代码 [粘贴相关代码] 我想解决的问题 [说明当前问题] 项目背景 [技术栈、文件位置和相关规则] 限制 1. 只修改与当前问题相关的部分。 2. 不新增第三方依赖。 3. 不改变已有功能的输入和输出。 请先说明问题原因和修改计划。 确认后再给出修改后的代码。模板四让 AI 排查报错我在 [操作步骤] 时遇到了下面的报错 [粘贴完整报错] 相关代码 [粘贴报错位置附近的代码] 环境信息 - 操作系统 - 运行环境版本 - 框架或库版本 我已经尝试过 [列出已经尝试的处理方式] 请 1. 解释报错含义。 2. 列出最可能的原因。 3. 按顺序给出排查步骤。 4. 说明还需要哪些信息。八、描述需求时最容易犯的 4 个错误错误一目标太抽象帮我优化一下。 帮我完善一下。 帮我做得更好看。改成请优化登录表单的移动端布局。 只修改 CSS不修改交互逻辑。 当屏幕宽度小于 600px 时表单内容不能出现横向滚动。错误二把多个大任务混在一起帮我把这个项目的登录、支付、订单和后台管理全部做完。改成本次只实现登录页面的表单校验。 登录接口和登录成功后的跳转放到下一步。任务越小越容易理解和验证。错误三只说技术不说结果用 React 写一个组件。还需要说明这个组件用于展示待办事项。 需要接收 items 和 onDelete 两个参数。 每条记录显示标题、完成状态和删除按钮。技术栈只能说明“用什么写”不能说明“要写出什么”。错误四只说结果不说明学习阶段如果你是初学者可以直接告诉 AI我刚开始学习 JavaScript。 请避免使用我还没有学过的高级语法。 如果必须使用请先解释它的作用。AI 知道你的学习阶段后可以调整解释深度和代码复杂度。九、提交需求前的快速检查向 AI 发送需求前可以快速看一遍[ ] 我说明了使用的语言、框架或运行环境吗 [ ] 我明确说明了这次要完成什么吗 [ ] 我说明了哪些内容暂时不做吗 [ ] 我写清楚了输入、输出和关键规则吗 [ ] 我告诉 AI 希望它如何回答吗 [ ] 我要求它提供运行或测试方法了吗 [ ] 我是否删除了密钥、密码和真实用户数据如果暂时没有足够信息也可以这样问在开始实现之前请先列出完成这个需求还需要我补充的关键信息。让 AI 先提问通常比让它基于猜测直接写代码更稳妥。十、总结向 AI 描述编程需求不是把 Prompt 写得越长越好而是把真正重要的信息说清楚。今天重点学习了 4 个要素背景说明技术栈、项目环境和当前基础。目标明确这次要实现什么以及做到什么程度。限制说明不能做什么、必须遵守哪些规则。输出格式告诉 AI 希望它用什么方式回答、如何运行和验证。可以把它们记成一张简单的卡片我现在在哪里 我想完成什么 有哪些事情不能做 我希望你怎样交付请记住描述需求的过程本身也是梳理需求的过程。当你能够把一个问题说清楚通常也会更容易理解自己到底想解决什么。下一篇文章我们继续练习 4 个新手可以直接套用的 AI 编程提示词模板解释代码、生成函数、排查报错和优化代码。✍坚持原创求关注点赞收藏
返回列表