提示词深度解析
提示词是与 AI 模型交互的核心接口,通过精心设计的提示词,您可以引导 AI 生成更准确、更符合需求的代码和建议。
提示词基础
什么是提示词
提示词 (Prompt) 是发送给 AI 模型的指令或问题,用于:
- 明确意图: 清楚表达您想要什么
- 提供上下文: 给出相关背景信息
- 设定约束: 定义输出格式和要求
- 引导输出: 影响 AI 的回答方式
提示词类型
系统提示词
系统提示词定义 AI 助手的角色和行为准则:
yaml
models:
- name: "guided-assistant"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4000系统提示词示例可以在 .bytebuddy/prompts/system.md 中定义:
markdown
# 系统提示词
你是一个专业的代码助手,擅长:
- 编写清晰、可维护的代码
- 遵循项目的编码规范
- 提供详细的代码注释
- 考虑性能和安全性
请始终:
1. 使用项目约定的命名规范
2. 添加必要的错误处理
3. 编写简洁的注释
4. 考虑边界情况用户提示词
用户提示词是具体的任务请求:
- 代码生成: "创建一个用户认证函数"
- 代码解释: "解释这段代码的作用"
- 代码重构: "优化这个函数的性能"
- 问题诊断: "为什么这段代码会报错"
上下文提示词
提供相关背景信息:
- 代码上下文: 当前文件和相关文件
- 项目信息: 技术栈、架构模式
- 历史记录: 之前的对话和操作
- 文档引用: 相关 API 文档
提示词工程
基本原则
1. 清晰明确
yaml
models:
- name: "precise-assistant"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.5
maxTokens: 4000好的提示词:
创建一个 React 函数组件,名为 UserCard,
接收 user 对象作为 props (包含 name, email, avatar 字段),
使用 Tailwind CSS 进行样式设计,
显示用户头像、姓名和邮箱。不好的提示词:
做一个用户卡片2. 提供上下文
markdown
# 项目上下文
当前项目: React + TypeScript + Vite
状态管理: Zustand
样式方案: Tailwind CSS
组件库: shadcn/ui
请基于以上技术栈生成代码。3. 设定约束
markdown
# 代码生成约束
- 使用 TypeScript
- 遵循 ESLint 规则
- 添加 JSDoc 注释
- 包含错误处理
- 最大函数长度 50 行4. 指定格式
markdown
# 输出格式
请按以下格式输出:
1. 代码实现
2. 使用示例
3. 注意事项
4. 测试用例高级技巧
Few-Shot 提示
提供示例来引导输出:
markdown
# 命名规范示例
变量命名:
- 好: `userProfile`, `isAuthenticated`, `totalCount`
- 差: `up`, `auth`, `tc`
函数命名:
- 好: `getUserById()`, `validateEmail()`, `formatDate()`
- 差: `get()`, `check()`, `format()`
请按照这些规范命名代码中的变量和函数。Chain-of-Thought
引导 AI 逐步思考:
markdown
# 问题分析
请按以下步骤分析这个问题:
1. 确定问题的根本原因
2. 列出可能的解决方案
3. 评估每个方案的优缺点
4. 推荐最佳方案
5. 提供实现步骤角色扮演
让 AI 扮演特定角色:
yaml
models:
- name: "security-expert"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.3
maxTokens: 4000markdown
# 安全专家角色
你是一位经验丰富的安全专家,专注于:
- 识别代码中的安全漏洞
- 提供安全最佳实践建议
- 推荐加密和认证方案
- 进行安全代码审查
请从安全角度审查以下代码。场景化提示词
代码生成场景
API 接口开发
markdown
# API 开发任务
创建一个 RESTful API 端点:
**路径**: POST /api/users
**功能**: 创建新用户
**请求体**:
```json
{
"name": "string",
"email": "string",
"password": "string"
}
```要求:
- 验证邮箱格式
- 密码加密存储
- 检查邮箱唯一性
- 返回创建的用户信息(不含密码)
- 添加错误处理
技术栈: Node.js + Express + PostgreSQL
#### 数据库模型
```markdown
# 数据库模型设计
创建一个 Prisma schema 定义:
**模型**: Post (博客文章)
**字段**:
- id: 自增主键
- title: 标题 (必填,最长 200 字符)
- content: 内容 (必填)
- published: 是否发布 (默认 false)
- authorId: 作者 ID (外键关联 User)
- createdAt: 创建时间
- updatedAt: 更新时间
**关联**:
- 一个作者可以有多篇文章
- 一篇文章属于一个作者代码审查场景
yaml
models:
- name: "code-reviewer"
provider: "anthropic"
model: "claude-3-sonnet"
apiKey: "${ANTHROPIC_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.3
maxTokens: 4000markdown
# 代码审查清单
请审查以下代码,重点关注:
1. **代码质量**
- 可读性和可维护性
- 命名规范
- 代码复杂度
2. **安全性**
- 输入验证
- SQL 注入风险
- XSS 漏洞
3. **性能**
- 算法效率
- 数据库查询优化
- 内存使用
4. **最佳实践**
- 错误处理
- 日志记录
- 单元测试
对于发现的问题,请提供:
- 问题描述
- 严重程度 (高/中/低)
- 修复建议
- 改进后的代码示例重构场景
markdown
# 代码重构任务
重构以下代码,目标:
1. **提高可读性**
- 使用有意义的变量名
- 简化复杂逻辑
- 添加注释说明
2. **改善结构**
- 提取重复代码
- 拆分大函数
- 应用设计模式
3. **优化性能**
- 减少不必要的计算
- 优化数据结构
- 缓存重复调用
4. **增强健壮性**
- 添加错误处理
- 处理边界情况
- 输入验证
请保持原有功能不变。提示词模板
功能开发模板
markdown
# 功能开发
**功能名称**: [功能名称]
**需求描述**: [详细描述功能需求]
**技术栈**:
- 前端: [技术]
- 后端: [技术]
- 数据库: [技术]
**实现要求**:
1. [要求 1]
2. [要求 2]
3. [要求 3]
**验收标准**:
- [ ] [标准 1]
- [ ] [标准 2]
- [ ] [标准 3]
**注意事项**: [特殊考虑]Bug 修复模板
markdown
# Bug 修复
**问题描述**: [描述 bug 现象]
**复现步骤**:
1. [步骤 1]
2. [步骤 2]
3. [步骤 3]
**预期行为**: [应该发生什么]
**实际行为**: [实际发生了什么]
**环境信息**:
- 操作系统: [OS]
- 浏览器: [Browser]
- 版本: [Version]
**相关代码**: [粘贴相关代码]
**错误信息**: [粘贴错误堆栈]
请分析问题原因并提供修复方案。性能优化模板
markdown
# 性能优化
**性能问题**: [描述性能问题]
**性能指标**:
- 当前响应时间: [时间]
- 目标响应时间: [时间]
- 内存使用: [内存]
- CPU 使用: [CPU]
**分析要求**:
1. 识别性能瓶颈
2. 分析原因
3. 提出优化方案
4. 评估优化效果
**约束条件**: [技术或业务约束]提示词优化
迭代改进
yaml
models:
- name: "iterative-assistant"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.6
maxTokens: 4000优化流程:
- 初始提示: 基本需求描述
- 观察输出: 检查生成结果
- 识别问题: 找出不满意的地方
- 调整提示: 添加更多细节或约束
- 重新测试: 验证改进效果
A/B 测试
对比不同提示词的效果:
markdown
# 提示词 A
创建一个登录表单
# 提示词 B
创建一个 React 登录表单组件,
包含邮箱和密码输入框、
记住我复选框、
登录按钮,
使用 Formik 进行表单验证,
使用 Tailwind CSS 样式。温度参数调节
yaml
models:
# 创造性任务 - 高温度
- name: "creative-assistant"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.9
maxTokens: 4000
# 精确任务 - 低温度
- name: "precise-assistant"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
defaultCompletionOptions:
temperature: 0.2
maxTokens: 4000温度选择:
- 0.0-0.3: 代码生成、数据处理
- 0.4-0.7: 一般对话、问题解答
- 0.8-1.0: 头脑风暴、创意建议
最佳实践
1. 分层提示
markdown
# 层次 1: 系统角色
你是一个 React 专家
# 层次 2: 任务上下文
当前项目使用 React 18 + TypeScript
# 层次 3: 具体任务
创建一个用户列表组件
# 层次 4: 详细要求
使用 hooks、支持分页、添加搜索功能2. 使用检查点
markdown
在开始编码前,请先:
1. 确认你理解了需求
2. 列出实现步骤
3. 指出潜在问题
然后再开始实现。3. 要求解释
markdown
请在代码中添加注释,解释:
- 关键逻辑的实现原理
- 为什么选择这种方案
- 需要注意的边界情况4. 迭代优化
markdown
请先提供一个基本实现,
然后我会给出反馈,
之后你再进行优化改进。环境变量配置
bash
# ~/.bashrc 或 ~/.zshrc
export OPENAI_API_KEY="your-openai-api-key"
export ANTHROPIC_API_KEY="your-anthropic-api-key"通过掌握提示词工程技巧,您可以更有效地与 AI 协作,获得更高质量的代码和建议。