为什么 AI 代码生成会失败:沟通问题
请提供您希望翻译的完整文本内容,我才能为您进行简体中文翻译。
Introduction
“我让 ChatGPT 实现登录功能,但它给了我奇怪的代码。”
最近我经常听到这种抱怨。AI 工具(GitHub Copilot、ChatGPT、Claude 等)随处可见,但输出往往并非可直接投入生产。
AI 是问题吗? 否。
问题在于我们如何与 AI 沟通。
实际案例
提示
Make a login feature
AI 的回复
def login(username, password):
if username == "admin" and password == "password":
return {"status": "success"}
return {"status": "failed"}
“这是什么?AI 不行……”
谁犯了错误?
如果你只对初级开发者(或 AI)说 “实现登录功能”,你会得到后续问题,例如:
- 我应该使用哪个框架?
- 用什么数据库?
- 基于会话还是 JWT?
- 需要社交登录吗?
- 有密码规则吗?
AI 不会问这些问题——它只会给出它能提供的最通用的答案。
“Garbage In, Garbage Out” → “模糊请求进,模糊代码出”
| 请求 | 结果 | 实用性 |
|---|---|---|
| “创建用户管理功能” | 基本的 CRUD 骨架(≈30 行) | 10 % |
| “使用 Django REST Framework 创建用户管理 API - 邮件认证 - JWT 令牌 - 权限组(管理员,用户) - 个人头像上传 - 软删除 - 分页” | 高质量代码(≈500 行) | 85 % |
区别在于你提供的上下文量。
什么是 AI 需要生成可用代码
1. 背景
- 项目类型(例如,电子商务,SaaS)
- 技术栈(框架,语言版本)
- 约束条件(性能,安全,合规)
2. 具体需求
- 功能列表(具体要构建的内容)
- 非功能需求(延迟,可扩展性)
- 边缘情况(失败模式,验证规则)
3. 示例或参考
- 类似代码片段
- API 文档链接
- 期望的输出格式(JSON 架构,OpenAPI 规范)
Bad vs. Good Prompt
❌ Bad Request
Make a payment feature
✅ Good Request
Implement a payment system using Stripe in a Node.js Express server.
Requirements
- 卡片支付(一次性)
- 订阅支付(按月/按年)
- 通过 webhook 更新支付状态
- 失败重试逻辑(最多 3 次)
- 支付历史查询 API
- 退款处理
Technology Stack
- Node.js 18+
- Express 4
- TypeScript
- Stripe API v2023
- PostgreSQL
Error Handling
- 卡片被拒绝
- 资金不足
- 网络超时
- 防止重复支付
Security
- 将 API 密钥放在环境变量中
- webhook 签名验证
- 限流
- 防止 SQL 注入
提供如此详细的需求可以直接生成可以直接放入仓库的代码。
典型的 AI 生成产物
| 类别 | 示例 |
|---|---|
| 模板代码 | CRUD 脚手架、配置文件、测试模板 |
| 算法实现 | 排序、搜索、数据转换、数学计算 |
| 文档 | 行内注释、README、API 文档 |
| 重构 / 清理 | 命名改进、重复删除、架构决策 |
| 高级主题 | 可扩展性、性能调优、技术债务管理、创新问题解决 |
| 新算法 | 创新方法、特殊优化 |
把 AI 想象成一名 初级开发者——你需要对其进行指导。
协作工作流示例
项目: 电子商务平台
技术栈: Next.js + NestJS + PostgreSQL
-
定义第一个模块
First, we'll make the product‑management API. 1. Product CRUD 2. Category management 3. Inventory tracking 4. Image upload -
细化为具体任务
Let's start with the product‑creation API. POST /api/products Request body: { name, price, category_id, stock } Validation: price > 0, stock >= 0 Response: 201 Created with product object -
迭代
- “在此添加事务处理。”
- “改进错误处理。”
- “编写单元测试。”
工作分解结构 (WBS) 适用于 AI
当你给出 大而模糊的请求 时,AI 会返回 “???”。
将工作拆分为 小且范围明确的任务,让 AI 能够理解。
Make an e‑commerce site
→ AI: ??? (useless code)
示例 WBS
1. User Authentication
1.1 Signup API
1.1.1 Email duplicate check
1.1.2 Password encryption
1.1.3 Send verification email
1.2 Login API
1.2.1 Credential verification
1.2.2 JWT token issuance
1.2.3 Refresh token management
每个最低层任务(例如 1.1.1)都是 AI 能够准确实现的规模。
我的提示模板(我实际使用的)
[Project Overview]
- Brief description
- Business goals
[Technology Stack]
- Language / framework versions
- External services (e.g., Stripe, AWS)
[Feature Description]
- High‑level purpose
- Detailed functional requirements (list)
- Non‑functional requirements (performance, security, etc.)
[Edge Cases & Validation]
- Input constraints
- Failure scenarios
[References]
- Links to docs, similar code, OpenAPI specs
[Deliverables]
- Code files (list)
- Tests (unit/integration)
- Documentation (README, API docs)
复制,填写空白,然后将提示输入 AI。结果将是 可直接投入生产 的代码,您可以放心合并。
选项 1 – 项目符号列表(加粗标签)
背景
- 项目: [Project Name]
- 当前任务: [WBS number and description]
- 技术栈: [Language, Framework, DB]
### Option 2 – Table (compact and easy to scan)
背景
| 项目 | 详情 |
|---|---|
| 项目 | [Project Name] |
| 当前任务 | [WBS number and description] |
| 技术栈 | [Language, Framework, DB] |
Both versions preserve the original information while improving readability and visual consistency. Use whichever fits best with your documentation.
需求
功能需求
- 需求 1
- 需求 2
非功能性需求
- 性能: 响应时间,吞吐量
- 安全: 身份验证,授权,加密
- 可扩展性: 并发用户,数据增长
Constraints
- 与现有代码的兼容性
- 外部 API 限制
- 库版本
预期输入/输出
输入
[Example data]
输出
[Expected result]
参考代码
// Existing code or similar example
使用此模板可将 AI 准确率提升 3 倍。
AI 工具特性
| AI 工具 | 优势 | 劣势 | 典型用途 |
|---|---|---|---|
| ChatGPT | • 解释能力出色 • 支持多种编程语言 | • 缺乏最新信息 | • 概念解释 • 算法设计 |
| GitHub Copilot | • 与 IDE 无缝集成 • 理解周围代码上下文 | • 只能生成短代码片段 | • 自动补全 • 生成模板代码 |
| Claude | • 处理长代码块 • 高准确率 | • 建议倾向保守 | • 复杂逻辑实现 • 重构 |
| Cursor | • 把握整个代码库 • 适用于大规模更改 | • 需要付费订阅 | • 大规模重构 • 项目范围的代码改进 |
结论:AI 只是工具
AI 会取代开发者吗?绝对不会。
AI 是一种 放大能力的工具——就像锤子不能取代木匠,AI 也不能取代开发者。
有效使用 AI 的开发者可以 比不使用的提升 10 倍的生产力。
关键:明确需求
- 使用工作分解结构(WBS)拆分工作。
- 明确界定每个任务。
当需求明确时,AI 就会成为惊人的生产力助理。
“垃圾进,垃圾出。”
明确的输入 → 明确的输出。这是 AI 时代的开发方法论。
需要使用 AI 的高效项目管理吗?查看 Plexo。