一、提示工程概述
提示工程(Prompt Engineering)是指设计和优化与AI模型交互的输入文本,以获得更准确、有用和安全的输出。在AI编程中,提示工程是提升开发效率和代码质量的关键技能。
二、提示工程核心原则
2.1 清晰明确原则
提示应该清晰、明确,避免歧义:
// 不好的提示
"帮我写一个排序算法"
// 好的提示
"请帮我实现一个基于C#的快速排序算法,要求:
1. 使用泛型实现,支持任意可比较类型
2. 时间复杂度O(n log n)
3. 空间复杂度O(log n)
4. 返回完整的类和方法实现"
2.2 上下文传递原则
提供足够的上下文信息:
// 不好的提示
"修复这个错误"
// 好的提示
"我在ASP.NET Core项目中遇到了以下错误:
[粘贴错误堆栈]
相关代码如下:
[粘贴相关代码]
项目环境:
- .NET 8
- ASP.NET Core Web API
- Entity Framework Core
请帮我分析并修复这个问题"
2.3 约束条件原则
明确指定约束条件:
graph TD
A[提示设计] --> B[任务描述]
A --> C[上下文信息]
A --> D[约束条件]
A --> E[输出格式]
D --> D1[技术栈]
D1 --> D2[框架版本]
D2 --> D3[编码规范]
D3 --> D4[性能要求]
E --> E1[代码格式]
E1 --> E2[文档格式]
E2 --> E3[测试要求]
B --> F[AI生成]
C --> F
D --> F
E --> F
F --> G[验证输出]
三、提示工程技巧
3.1 角色设定技巧
为AI设定特定角色,引导其输出风格:
// 设定资深架构师角色
"你是一位拥有20年经验的资深软件架构师,请帮我设计一个高可用的微服务架构。要求:
1. 使用.NET技术栈
2. 支持百万级QPS
3. 包含完整的技术选型和架构图"
// 设定代码审查专家角色
"你是一位代码审查专家,请检查以下代码是否符合SOLID原则和C#编码规范:
[粘贴代码]
请提供详细的改进建议。"
3.2 分步思考技巧
引导AI分步思考,提升复杂问题的解决能力:
// 分步解决复杂问题
"请帮我设计一个电商系统的订单服务,要求分步思考:
第一步:分析需求,列出核心功能
第二步:设计数据模型和数据库表结构
第三步:设计API接口
第四步:设计业务流程
第五步:考虑性能和扩展性
请按照以上步骤逐步输出设计方案。"
3.3 示例驱动技巧
提供示例,引导AI按照特定格式输出:
// 提供输入输出示例
"请帮我将以下JSON转换为C#类:
输入示例:
{
'name': '张三',
'age': 30,
'email': 'zhangsan@example.com'
}
输出示例:
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
现在请转换:
[粘贴待转换的JSON]"
四、提示工程模式
4.1 提示模式总结
| 模式 | 特点 | 适用场景 | 示例 |
|---|---|---|---|
| 指令式 | 直接指令 | 简单任务 | "实现一个加法函数" |
| 对话式 | 多轮交互 | 复杂问题 | 分步解决问题 |
| 示例式 | 提供示例 | 格式转换 | JSON转C#类 |
| 对比式 | 对比分析 | 技术选型 | Redis vs Memcached |
| 反思式 | 自我修正 | 代码优化 | "请检查代码问题" |
4.2 提示工程流程图
flowchart TD
A[开始] --> B[明确任务目标]
B --> C[分析需求]
C --> D[收集上下文信息]
D --> E{任务复杂度}
E --> F[简单任务]
E --> G[复杂任务]
F --> H[直接指令提示]
H --> I[生成输出]
G --> J[分步提示]
J --> K[提供示例]
K --> L[设定角色]
L --> I
I --> M{验证输出}
M --> N[符合要求]
M --> O[不符合要求]
N --> P[完成]
O --> Q[调整提示]
Q --> B
五、提示工程最佳实践
5.1 提示设计最佳实践
- 使用自然语言:用清晰的自然语言描述需求
- 分点说明:使用列表清晰列出要求
- 提供示例:给出输入输出示例
- 明确格式:指定输出格式要求
- 设定边界:明确约束条件和限制
5.2 常见错误避免
| 错误类型 | 示例 | 正确做法 |
|---|---|---|
| 模糊不清 | "写个排序" | "实现C#快速排序算法" |
| 缺少上下文 | "修复错误" | 提供错误堆栈和代码 |
| 约束不足 | "设计系统" | 指定技术栈和性能要求 |
| 格式不明确 | "给代码" | "返回完整C#类代码" |
5.3 提示模板
// 通用提示模板
"你是一位资深{角色},请帮我{任务}。
需求描述:
{详细需求}
约束条件:
- 技术栈:{技术栈}
- 框架版本:{版本}
- 编码规范:{规范}
- 性能要求:{要求}
输出格式:
{格式说明}
参考信息:
{相关代码/文档}"
// 代码生成模板
"请帮我实现{功能名称},要求:
功能描述:
{详细描述}
输入参数:
{参数列表}
输出结果:
{结果说明}
实现要求:
1. 使用{语言/框架}
2. 遵循{编码规范}
3. 包含{测试/文档}
相关代码:
{相关代码片段}"
六、总结
提示工程是AI编程的核心技能,通过掌握提示工程的核心原则和技巧,能够显著提升AI辅助编程的效率和质量。遵循提示工程最佳实践,合理设计提示,能够获得更准确、有用的输出。