Sooua
登录
返回文章列表
Claude Code··8 分钟阅读

提示词工程:Prompt Library 实战

同样的需求,不同的表达方式,Claude 的输出质量可能天差地别。

目标:掌握高效提示词写法,使用官方 Prompt Library 提升效率
预计时间:30 分钟
对应官方文档:Prompt Library


为什么提示词很重要?

同样的需求,不同的表达方式,Claude 的输出质量可能天差地别。

❌ 差:"帮我改代码"
✅ 好:"请重构以下函数,要求:1) 添加类型注解 2) 减少嵌套层级 3) 保持原有功能"

提示词设计原则

1. 具体而非模糊

❌ "优化这个函数"
✅ "这个函数处理 10万+ 数据时很慢,请优化时间复杂度,目标 O(n)"

2. 提供上下文

❌ "修复这个 bug"
✅ "当用户输入包含 emoji 时,以下正则表达式会匹配失败。请修复:"

3. 指定输出格式

✅ "请按以下格式输出:
   - 问题原因(1-2句)
   - 修复方案(代码块)
   - 测试建议"

4. 分步骤请求

✅ "请分两步:
   1. 先分析当前代码的问题
   2. 给出重构后的代码"

常用提示词模板

代码审查

请审查 @src/module.py,重点关注:
1. 安全性(SQL 注入、XSS、敏感信息泄露)
2. 性能(N+1 查询、内存泄漏)
3. 可维护性(复杂度、重复代码)
4. 测试覆盖

对每条问题给出:严重程度 + 具体位置 + 修复建议

重构请求

请重构 @src/old_module.py,要求:
- 遵循 SOLID 原则
- 添加完整的类型注解
- 函数长度不超过 30 行
- 添加单元测试
- 保持向后兼容

重构后运行测试验证:pytest tests/test_module.py -v

添加功能

请为 API 添加分页功能:
- 接口:GET /api/users
- 参数:page (默认1), per_page (默认20, 最大100)
- 返回:{items, total, page, per_page, total_pages}
- 使用游标分页而非 OFFSET
- 更新对应的 OpenAPI schema

调试协助

测试失败信息:

FAILED tests/test_api.py::test_create_user - AssertionError: 201 != 422


相关代码:
- @src/routes/users.py
- @tests/test_api.py::test_create_user

请:
1. 分析失败原因
2. 修复代码
3. 运行测试验证

使用 Prompt Library

Claude Code 内置了官方提示词库,按场景分类:

查看可用提示词

> /prompts

Categories:
  - debugging       调试相关
  - refactoring     重构相关
  - testing         测试相关
  - documentation   文档相关
  - security        安全相关

使用提示词

> /prompt debugging/analyze-error

[自动加载预设提示词模板]

自定义提示词

.claude/prompts/ 目录创建:

# .claude/prompts/my-team/code-review.md
 
## 团队代码审查规范
 
审查 @{{file}} 时,请按以下优先级检查:
 
1. **P0 - 阻塞性问题**
   - 安全漏洞
   - 数据丢失风险
   - 违反法律法规
 
2. **P1 - 严重问题**
   - 性能回归
   - 错误处理缺失
   - 并发安全问题
 
3. **P2 - 建议**
   - 代码风格
   - 注释完整性
   - 可测试性
 
输出格式:
- [P0/P1/P2] 位置: 问题描述 → 修复建议

使用:

> /prompt my-team/code-review src/main.py

高级技巧

少样本提示(Few-shot)

给 Claude 示例,让它模仿风格:

请按照以下风格添加日志:

示例 1:
```python
logger.info("user_login", extra={
    "user_id": user.id,
    "ip": request.client.host,
    "method": "password"
})

现在请为以下函数添加相同风格的日志: @src/auth.py::logout


### 角色设定

你是一位资深 Python 工程师,擅长性能优化和代码简洁性。 请用专业的眼光审查以下代码,给出具体的改进建议。


### 约束条件

请实现功能 X,约束:

  • 不使用第三方库
  • 时间复杂度 O(n log n)
  • 空间复杂度 O(1)
  • 兼容 Python 3.9

---

## 提示词检查清单

提交请求前,检查是否包含:

- [ ] 具体目标(做什么)
- [ ] 相关文件(@引用)
- [ ] 约束条件(不要做什么)
- [ ] 输出格式(怎么呈现)
- [ ] 验证方式(如何确认)

---

## 补充:Prompt Library 工作流与实战

### Prompt Library 工作流程

```mermaid
flowchart TD
    A[遇到重复任务] --> B{已有 Prompt?}
    B -->|是| C[直接调用 /prompts]
    B -->|否| D[分析任务特征]
    D --> E[编写 Prompt 模板]
    E --> F[放入 .claude/prompts/]
    F --> G[团队评审/优化]
    G --> H[发布到 Prompt Library]
    C --> I[应用 Prompt 执行任务]
    H --> I
    I --> J[收集反馈]
    J --> K{需要改进?}
    K -->|是| L[迭代更新模板]
    L --> H
    K -->|否| M[沉淀为团队资产]

高级配置与代码示例

示例 1:安全审查 Prompt 模板(团队级)

创建 .claude/prompts/security/audit.md

# 安全代码审查
 
审查目标:@{{file}}
 
## 审查维度
1. **注入攻击**:SQL、命令、LDAP、XPath 注入
2. **敏感数据**:密码、Token、密钥硬编码或泄露
3. **权限控制**:越权访问、IDOR、未授权操作
4. **输入验证**:文件上传、路径遍历、SSRF
5. **依赖风险**:已知 CVE、过时组件
 
## 输出格式
对每个问题按以下格式输出:

[严重级别: P0/P1/P2] 位置: :行号 风险: 一句话描述攻击场景 证据: 涉及的代码片段 修复: 具体的代码修改建议


## 特殊规则
- 发现 P0 级问题立即停止,不再继续其他检查
- 如果使用了框架内置安全功能(如 Django ORM),给予正面确认
- 对误报率高的模式(如拼接 SQL)要区分是字符串处理还是真注入

使用方式:

> /prompt security/audit src/views/users.py

示例 2:API 设计 Prompt 模板(含 OpenAPI 生成)

创建 .claude/prompts/api/design-endpoint.md

# REST API 端点设计
 
需求:@{{requirement}}
技术栈:@{{stack}}
 
## 设计规范
1. 遵循 RESTful 原则,使用名词复数作为资源路径
2. HTTP 方法语义:GET 查询、POST 创建、PUT 全量更新、PATCH 部分更新、DELETE 删除
3. 状态码使用:201 创建成功、204 删除成功、400 参数错误、401 未认证、403 无权限、404 不存在、409 冲突
4. 响应体统一包装:{ "data": ..., "meta": { "request_id": "...", "timestamp": "..." } }
5. 错误响应:{ "error": { "code": "...", "message": "...", "details": [...] } }
 
## 输出要求
1. 给出 URL 路径和方法
2. 给出请求/响应的 JSON Schema
3. 给出 Python/FastAPI 或 Node/Express 的实现代码
4. 生成对应的 OpenAPI 3.0 YAML 片段
5. 列出需要添加的单元测试用例(只列场景,不写完整代码)

使用方式:

> /prompt api/design-endpoint "用户下单并扣除库存" "FastAPI + SQLAlchemy"

示例 3:Few-shot 风格迁移完整示例

# 风格迁移:统一日志格式
 
请按照以下风格为所有函数添加结构化日志:
 
## 示例 1:普通操作
```python
# 之前
print(f"User {user_id} logged in")
 
# 之后
logger.info("user_login", extra={
    "user_id": str(user_id),
    "ip_address": request.client.host,
    "user_agent": request.headers.get("user-agent"),
    "event_type": "authentication"
})

示例 2:异常处理

# 之前
try:
    process_payment(order_id)
except Exception as e:
    logger.error(f"Payment failed: {e}")
 
# 之后
try:
    process_payment(order_id)
except PaymentError as e:
    logger.error("payment_failed", extra={
        "order_id": order_id,
        "error_code": e.code,
        "error_message": str(e),
        "event_type": "payment",
        "severity": "high"
    }, exc_info=True)

待处理文件

@src/orders.py @src/inventory.py

要求:

  • 所有日志使用 logger.info|warning|error 方法
  • extra 字典必须包含 event_type 字段
  • 异常必须记录 exc_info=True
  • 用户相关操作必须包含 user_id
  • 不要修改业务逻辑,只添加/替换日志语句

---

### 实战场景

#### 场景一:标准化 API 接口设计(使用 Prompt 模板)

**背景**:团队新启动微服务拆分项目,需要设计 20+ 个 REST 接口,但不同开发者设计风格差异大,导致前端对接困难,文档也不统一。

**步骤**:
1. 架构师编写 `api/design-endpoint` Prompt 模板,强制统一响应格式、状态码语义、字段命名(camelCase vs snake_case)
2. 每位后端开发者在设计接口时,先调用 `/prompt api/design-endpoint` 描述需求
3. Claude 按模板输出 URL、Schema、实现代码、OpenAPI 片段
4. 开发者微调后直接提交 PR

**结果**:
- 20 个接口的风格 100% 统一,前端无需适配不同格式
- 设计阶段直接产出 OpenAPI 片段,Swagger 文档自动生成
- 每个接口附带测试建议,测试用例覆盖率提升
- 新人通过 Prompt 模板快速理解团队的 API 设计规范

#### 场景二:安全漏洞扫描(自定义审查 Prompt)

**背景**:公司接受外部安全审计前,需要自查代码中的高风险漏洞。人工逐行审查 5 万行代码耗时且容易遗漏。

**步骤**:
1. 安全负责人编写 `security/audit` Prompt,明确 P0/P1/P2 分级标准和输出格式
2. 将代码库按模块拆分,分批次调用 `/prompt security/audit` 审查关键文件
3. 对 AI 发现的每个问题人工复核,确认后创建 Jira 任务
4. 对误报的案例补充说明,迭代优化 Prompt 减少误报

**结果**:
- 在 2 天内完成全量代码扫描,人工审查预计需要 2 周
- 发现 3 个 P0 级问题(SQL 注入、硬编码密钥、越权访问),均在审计前修复
- Prompt 经过 3 轮迭代后,误报率从 40% 降低到 8%
- 形成可复用的安全审查资产,后续新代码可快速复用

---

## 下一步

→ [04. Skills:扩展 AI 能力](./04-Skills.md)
分享

评论

登录 后参与讨论。

加载中…

相关文章