Appearance
第二部分:编程提示词的基本结构 (Standard Template)
一个有效的编程提示词需要包含多个关键要素,这些要素共同构成了一个完整的提示词结构,确保 AI 能够准确理解任务需求并生成符合预期的代码。
1. Role (角色)
定义
Role 是指为 AI 设定的专业身份,明确 AI 在当前任务中的角色定位。
重要性
- 专业视角:不同角色会带来不同的思考方式和专业知识
- 语言风格:角色设定会影响 AI 的语言表达风格
- 问题解决:特定角色会更专注于其专业领域的问题解决方法
常见角色示例
- 前端专家(React、Vue、Angular)
- 后端工程师(Node.js、Python、Java)
- 安全专家
- 性能优化专家
- 代码重构专家
示例
Role: 你是一位资深的前端 React 专家,精通 TypeScript 和现代前端开发最佳实践。2. Context (上下文)
定义
Context 是指与任务相关的背景信息,包括技术栈、现有代码、依赖版本等。
重要性
- 环境理解:帮助 AI 理解项目的技术环境
- 代码衔接:确保生成的代码与现有代码无缝衔接
- 依赖管理:考虑项目的依赖版本和兼容性
上下文内容
- 技术栈:使用的编程语言、框架、库
- 现有代码:相关的代码片段或文件
- 依赖版本:关键依赖的版本信息
- 项目结构:相关的目录结构和文件组织
示例
Context:
- 技术栈:React 18 + TypeScript 5.0 + Vite
- 现有代码:
```tsx
// src/components/Button.tsx
import React from 'react';
interface ButtonProps {
label: string;
onClick: () => void;
}
export const Button: React.FC<ButtonProps> = ({ label, onClick }) => {
return (
<button onClick={onClick}>
{label}
</button>
);
};- 依赖:@types/react 18.2.0
## 3. Task (任务)
### 定义
Task 是指明确具体要实现的功能或修复的 Bug。
### 重要性
- **目标明确**:让 AI 清楚知道需要完成的具体任务
- **范围限定**:明确任务的边界和范围
- **结果导向**:聚焦于最终的预期结果
### 任务描述要点
- 具体功能:详细描述需要实现的功能
- 实现要求:明确功能的具体要求和细节
- 问题描述:如果是 Bug 修复,详细描述问题现象
### 示例Task:
- 为 Button 组件添加 loading 状态
- 当 loading 为 true 时,按钮应显示加载动画并禁用
- 当 loading 为 false 时,按钮恢复正常状态
## 4. Constraints (限制条件)
### 定义
Constraints 是指对代码实现的限制和要求,包括编码规范、性能要求、禁止使用的库等。
### 重要性
- **质量保证**:确保生成的代码符合项目的质量标准
- **风格统一**:保持代码风格的一致性
- **性能优化**:考虑代码的性能要求
- **安全合规**:避免使用不安全的方法或库
### 常见限制条件
- 编码规范:ESLint 规则、代码风格指南
- 性能要求:时间复杂度、空间复杂度限制
- 库的使用:允许或禁止使用特定的库
- 兼容性:浏览器兼容性、Node.js 版本兼容性
### 示例Constraints:
- 代码风格:遵循 Airbnb JavaScript 风格指南
- 性能要求:动画效果应使用 CSS transition,避免使用 setTimeout
- 库的使用:只使用 React 内置 API,不引入额外库
- 类型安全:确保所有代码都有完整的 TypeScript 类型定义
## 5. Output Format (输出格式)
### 定义
Output Format 是指要求 AI 输出的内容格式,包括纯代码、带注释的代码、Markdown 说明等。
### 重要性
- **结构清晰**:确保输出内容的结构清晰易读
- **便于集成**:方便直接将生成的代码集成到项目中
- **信息完整**:包含必要的说明和注释
### 常见输出格式
- 纯代码:只输出代码,不包含其他内容
- 带注释的代码:代码中包含详细的注释
- Markdown 说明:包含代码和相关说明的 Markdown 文档
- 分步解释:先解释思路,再输出代码
### 示例Output Format:
- 首先提供实现思路的简要说明
- 然后输出完整的 TypeScript 代码
- 代码中包含必要的注释
- 最后提供使用示例
## 完整提示词模板Role: [AI 的专业角色]
Context:
- 技术栈:[使用的编程语言、框架、库]
- 现有代码:[相关的代码片段或文件]
- 依赖版本:[关键依赖的版本信息]
- 项目结构:[相关的目录结构和文件组织]
Task:
- [具体功能或 Bug 修复的详细描述]
Constraints:
- 编码规范:[代码风格要求]
- 性能要求:[性能相关限制]
- 库的使用:[允许或禁止使用的库]
- 兼容性:[兼容性要求]
Output Format:
- [输出格式要求]
## 实战应用示例
### 示例:添加 loading 状态到 Button 组件Role: 你是一位资深的前端 React 专家,精通 TypeScript 和现代前端开发最佳实践。
Context:
- 技术栈:React 18 + TypeScript 5.0 + Vite
- 现有代码:tsx
// src/components/Button.tsx import React from 'react'; interface ButtonProps { label: string; onClick: () => void; } export const Button: React.FC<ButtonProps> = ({ label, onClick }) => { return ( <button onClick={onClick}> {label} </button> ); }; - 依赖:@types/react 18.2.0
Task:
- 为 Button 组件添加 loading 状态
- 当 loading 为 true 时,按钮应显示加载动画并禁用
- 当 loading 为 false 时,按钮恢复正常状态
Constraints:
- 代码风格:遵循 Airbnb JavaScript 风格指南
- 性能要求:动画效果应使用 CSS transition,避免使用 setTimeout
- 库的使用:只使用 React 内置 API,不引入额外库
- 类型安全:确保所有代码都有完整的 TypeScript 类型定义
Output Format:
- 首先提供实现思路的简要说明
- 然后输出完整的 TypeScript 代码
- 代码中包含必要的注释
- 最后提供使用示例
通过使用这个标准模板,开发者可以更有效地与 AI 进行沟通,确保生成的代码符合项目的需求和标准。