一. 最佳实践
短对话优于长对话,保持对话简短、专注,每个对话只做一件事
二. 实践前提
先要自己理解问题,把复杂问题解构成一个个的小问题或步骤,用AI做任务,而不是决策
三. 底层原理
LLM的工作方式是基于概率最大预测下一个token,每次只预测一个token,流式输出,无法修改之前输出的内容,一旦中间一步走偏,会沿着偏差继续自圆其说。对话拆分本质上是任务拆分,短对话也更容易追踪,每个对话都有明确的目标,中间可以不断"尝试--反馈---调整",这样做的好处:
-
每一步都可控,容易发现问题
-
可以根据实际情况调整方向
-
降低出错概率
-
AI 理解更准确
四. 实践示例
错误示例:
XML
"帮我完成整个标签管理模块,包括增删改查、权限控制、日志记录、数据验证、异常处理、单元测试"
正确示例:
XML
Step 1: "帮我设计标签表的数据库结构"
Step 2: "生成标签实体类和 Mapper"
Step 3: "实现标签列表的分页查询功能"
Step 4: "添加标签新增功能,并处理唯一性校验"
Step 5: "为新增功能添加参数验证"
Step 6: "添加操作日志记录"
一个典型的工作流程:
XML
功能:用户登录后的会话管理
[对话 1] 调研现有代码结构
├── 了解 auth 模块的实现
├── 查看 session 管理的现状
└── 输出:关键文件列表和当前架构理解
[对话 2] 实现基础功能
├── 参考对话 1 的发现
├── 实现核心的 session 保存逻辑
└── 输出:基础实现代码
[对话 3] 添加错误处理
├── 参考对话 2 的实现
└── 增加边界情况处理
[对话 4] 编写测试
├── 参考对话 2、3 的实现
└── 添加单元测试和集成测试
[对话 5] 代码审查
├── 检查实现是否符合项目规范
└── 确认没有引入安全问题
[对话 6] 清理和重构
└── 根据审查结果进行调整
注:上面代码引用自https://mp.weixin.qq.com/s/Zlwn42KyfjgwfX6lp-JthQ
五. 实战建议
-
复杂任务拆解成 5-10 个小步骤
-
每个步骤完成后验证再继续
-
遇到问题及时调整,不要硬推
-
重要步骤让 AI 解释思路
六. 提问工程学
- 结构化提问框架:CRISP法则
XML
C - Context 上下文
R - Requirements 需求
I - Input/Output 输入输出
S - Style/Constraints 风格约束
P - Priority 优先级
示例应用:
XML
基于CRISP框架的完美提问:
[上下文]
我正在开发电商平台的订单服务,当前文件结构:
- OrderService.js (主服务类)
- OrderRepository.js (数据访问层)
- OrderValidator.js (验证逻辑)
[需求]
需要实现一个批量更新订单状态的功能,支持事务处理
[输入输出]
输入:orderIds数组,targetStatus字符串,operatorId
输出:成功更新的订单数量,失败详情列表
[风格约束]
1. 使用async/await
2. 遵循公司ESLint配置(Airbnb风格)
3. 包含完整的错误处理
4. 添加JSDoc注释
5. 支持数据库事务回滚
[优先级]
先实现核心功能,再添加日志和监控
七. 提问模板
XML
[背景]
我正在{工作上下文},涉及{技术栈}。
[目标]
需要实现{具体功能},解决{业务问题}。
[约束条件]
- 必须遵循{公司规范}
- 性能要求{具体指标}
- 安全性考虑{具体要求}
[示例参考]
类似功能的代码片段或API设计。
[期望输出]
请提供{代码/设计/建议},并解释{关键决策点}。