有效提示工程的核心原则
以下是一些核心原则,可以帮助你优化与 AI 的互动过程:
虽然简洁的提示词很重要,但清晰度更为关键。不要害怕使用较长的提示词,如果它能更准确地传达你的需求
"AI 模型不会因为你的提示词太详细而感到不耐烦,但它可能会因为提示词不明确而产生错误的输出。"
示例:
不要仅仅说"创建一个登录表单",而应该说 "创建一个响应式 React 登录表单,使用 Formik 进行表单状态管理,包含邮箱和密码字段,在提交前进行字段验证,并在提交成功后显示确认消息。"
从高层次的需求开始,通过多轮对话逐步细化和完善结果,而不是试图在一个提示词中解决所有问题。
渐进式细化工作流
- 先请说"设计一个电子商务网站的基本架构"
- 然后基于生成的架构,细化请求: "为这个架构中的用户认证服务设计更详细的组。"
- 最后具体到实现: "为用户认证服务实现注册功能的具体代码。"
提供足够的背景信息和明确的约束条件,包括技术栈、性能要求、代码风格等。
示例上下文信息:
- 项目技术栈: "这是一个基于 Vue 3, Pinia 和 TypeScript 的项目。"
- 代码风格: "我们使用 Airbnb 和 ESLint 配置和 Prettier。"
- 性能要求: "这个组件需要针对移动设备优化,在低端设备上也能快速渲染。"
- 存在的依赖: "我们已经使用 Axios 作为 HTTP 客户端和 Lodash 作为工具。"
在提示词中指定 AI 应该扮演的角色,这可以帮助 AI 生成更符合特定专业视角的回答。
角色示例
- "请作为一名经验丰富的安全工程师,审查以下认证代码中的潜在安全漏洞。"
- "请以一名前端架构师的视角,评估这个组件结构的可维护性。"
- "请作为一名性能优化专家,分析以下查询代码的效率。"
将 AI 视为协作工具,而不是完全替代人工工作。始终对 AI 生成的内容进行审查和调整。
最佳实践工作流
- 使用 AI 生成初始代码或文档
- 人工审查生成的内容,标记问题或需要改进的地方
- 提出具体的改进建议,要求 AI 修改特定部分
- 继续迭代,直到结果满足需求
- 最终进行完整的人工审查和测试
不同阶段的最佳实践
需求分析阶段
💡 提示
使用 AI 辅助理清需求的关键是让它帮助你提出你可能忽略的问题,而不仅仅是记录已知的需求。
- 挑战假设 - 要求 AI 检查你的需求中可能存在的假设,并提出问题。
- 探索边缘情况 - 请求 AI 列出在实现需求时需要考虑的边缘情况和异常情况。
- 用户视角 - 要求 AI 从不同用户角色的视角评估需求的完整性。
- 依赖分析 - 使用 AI 识别需求之间的依赖关系和潜在的实现顺序。
设计阶段
💡 提示
在设计阶段,使用 AI 来探索多种可能的解决方案,而不是立即锁定一种方案。
- 方案比较 - 要求 AI 提供并比较几种不同的架构或设计方案,包括每种方案的优缺点。
- 技术风险评估 - 使用 AI 识别设计中的技术风险和潜在缓解策略。
- 可扩展性考虑 - 要求 AI 评估设计在面对增长时的可扩展性。
- 模式应用 - 请求 AI 建议可适用于特定问题的设计模式。
开发阶段
💡 提示
在编码阶段,最有效的提示是使用 AI 解决具体、有边界的问题,而不是生成整个系统的代码。
- TDD 方法 - 首先请求 AI 生成测试用例,然后再编写满足这些测试的代码。
- 代码审查 - 使用 AI 审查你编写的代码,提供改进建议。
- 问题解决 - 在遇到特定技术难题时请求 AI 提供解决方案,附上详细的上下文。
- 代码优化 - 使用 AI 优化性能关键部分的代码。
测试阶段
💡 提示
AI 在生成测试用例和测试策略方面非常有效,尤其是考虑各种边缘情况。
- 测试用例生成 - 要求 AI 为特定功能生成详尽的测试用例,包括正常流程和异常情况。
- 测试策略 - 请求 AI 设计测试策略,包括单元测试、集成测试和端到端测试的范围。
- 模拟数据生成 - 使用 AI 生成用于测试的模拟数据,确保覆盖各种情况。
- 错误模拟 - 请求 AI 提供可以模拟各种错误情况的测试代码。
文档阶段
💡 提示
使用 AI 为代码和系统生成文档可以大大提高效率,但记得始终审查和调整生成的内容。
- 代码注释 - 使用 AI 为现有代码生成清晰、有用的注释和文档字符串。
- 用户文档 - 请求 AI 基于产品功能生成用户指南和操作手册。
- API 文档 - 使用 AI 生成详细的 API 端点文档,包括请求/响应格式和示例。
- 知识库文章 - 请求 AI 生成解决常见问题的知识库文章。
实用 AI 辅助工作流程
以下是一个实用的 AI 辅助开发工作流程,将上述最佳实践整合到日常开发中。
需求清晰化
探索设计方案
代码生成
审查与优化
测试与文档
-
需求清晰化
- 使用问题探索模板提问,确保需求完整。
- 要求 AI 将非正式需求转换为结构化规范。
- 使用 AI 创建用户故事和验收标准。
-
探索设计方案
- 要求 AI 提出多种可能的解决方案。
- 与 AI 讨论各种方案的优缺点。
- 使用 AI 绘制系统架构和组件关系图。
-
代码生成
- 使用 AI 生成组件和功能的基本框架。
- 逐步细化和扩充 AI 生成的代码。
- 始终审查生成的代码,确保符合项目标准。
-
审查与优化
- 使用 AI 审查你编写的代码和 AI 生成的代码。
- 请求 AI 提供性能和可维护性的改进建议。
- 与 AI 讨论可能的安全问题和最佳实践。
-
测试与文档
- 使用 AI 生成测试用例和测试代码。
- 要求 AI 为代码添加高质量的注释和文档。
- 生成用户指南和技术文档。
💡 记住
最有效的 AI 辅助工作流是迭代和交互式的。不要期望在一个提示词中解决所有问题,而是进行多轮对话,逐步完善结果。
避免的常见陷阱
1. 盲目接受 AI 生成的内容
始终对 AI 生成的代码和文档保持批判性思维,不要假设它总是正确的。
- 审查生成的代码中的逻辑错误和安全问题。
- 测试 AI 生成的代码,不要假设它能正常工作。
- 验证 AI 声明的事实和最佳实践。
2. 过度依赖 AI 生成复杂功能
对于复杂的功能,使用 AI 来生成框架和指导,而不是完整的实现。
- 将复杂功能分解为更小的、可管理的部分。
- 使用 AI 生成每个部分的代码,然后手动集成。
- 对于高度复杂或关键的系统组件,更多地依赖人工编码。
3. 忽略代码和文档的一致性
确保 AI 生成的内容与现有代码库和文档风格保持一致。
- 在提示词中明确指定要遵循的代码风格和命名约定。
- 要求 AI 遵循项目中已建立的模式和做法。
- 与 AI 生成的代码与项目的风格指南进行对比检查。
4. 在提示词中缺乏具体细节
提供过于宽泛的提示词会导致 AI 生成泛泛的结果,或者在缺乏明确指导的情况下做出假设。
- 始终包含技术栈、版本和重要依赖。
- 明确说明性能、安全和可访问性要求。
- 在可能的情况下提供示例或期望的输出格式。