2025年的提示工程取得了显著进展,每个AI模型——OpenAI的ChatGPT、DeepSeek、Google Gemini和GitHub Copilot——都有其独特的强项和弱点。要在这些模型中掌握提示工程,理解它们的内部架构、能力以及理想的提示方式是至关重要的。
此处省略……
🔹 2025年提示设计的背景提示设计现在是AI工程师、全栈开发者以及软件测试人员的一项关键技能。目标是设计精准且结构化的提示,以提升AI模型的表现。这项技能在以下领域被广泛应用:
✅ AI驱动的开发(代码生成、调试、重构)
✅ 测试自动化(测试用例生成、测试数据创建)
✅ 生产力工具(摘要生成、文档处理、特定领域知识检索)
✅ 聊天机器人及虚拟助手(用户交互、个性化、动态响应)
每个AI模型因为训练数据、调整和API表现的不同,对提示的响应也会有所不同。
……
🔹 不同AI模型的提示设计1 开放人工智能(ChatGPT 4 & 5,GPT-4-增强版)
🛠 最佳用例场景:
- 自然语言理解和生成
- 代码解释和调试
- 生成测试用例
- 聊天机器人和虚拟助理
📝 促推技巧:
✅ 链式思维(CoT)促推 → 通过分解步骤来提高推理能力。
✅ 少量样本学习法 → 在请求前提供示例以引导模型。
✅ 基于角色的促推 → 赋予AI角色(例如,“你是一名高级SDET...”)。
✅ 系统指令 → 使用“系统”消息在API调用中确保行为的一致性。
✅ 温度及Top-p控制 → 调整创意和随机性水平,以适应不同的应用场景。
📌 例如:
你是一名专注于自动化的软件测试专家。根据以下需求,生成详细测试用例,包括前提条件、步骤以及预期结果。
测试用例生成
💡 使用案例: 从产品规格中生成测试案例。
🔹 提个醒:
你是一位专精于自动化测试的软件测试专家。
根据下面的功能描述,生成详细的测试用例,包括:
- 标题
- 前置条件
- 步骤
- 预期结果
### 功能描述:
用户应能够通过输入其注册的电子邮件来找回密码。系统应向该电子邮件发送重置链接,该链接在15分钟后失效。
进入全屏 播出全屏模式切换回正常模式退出全屏
这里我们预计的输出是。
测试用例 1:验证密码重置链接是否被发送到注册邮箱
**前提条件:**
- 用户已经有一个注册账户。
- 用户处于登录页面。
**步骤:**
1. 点击“忘记密码”按钮。
2. 输入注册的邮箱地址。
3. 点击“提交”。
**预期结果:**
- 系统会显示成功的消息。
- 注册的邮箱会收到密码重置链接。
- 链接会在15分钟后失效。
全屏模式 退出全屏
➡ ChatGPT非常适合处理结构化输出,例如,测试用例和编写文档.
🔹 最佳实践应用:
✔ 处理边缘情况(例如过期、重试和暴力攻击)
✔ 考虑安全风险(暴力攻击和重放攻击)
✔ 结构化格式的测试用例文档
……
2 深索(DeepSeek-VL 和 DeepSeek Coder)
🛠 最常见应用场景:
- 多模态AI(包括文本和图像处理)
- 代码生成和重构
- 解决数学问题
📝 促导技术:
✅ 零样本提示 → 即使没有提供示例,也能很好地运行。
✅ 代码优先方法 → 以鼓励直接编写代码的方式来构造提示。
✅ 任务拆分 → 让DeepSeek将复杂任务拆分成几个子任务。
📌 例子:
_> "生成一个用于从 MongoDB 获取用户数据的 NestJS 服务的单元测试。使用 Jest 并确保涵盖所有边界条件。"
代码生成
💡 应用场景: 为 MongoDB 服务生成一个 NestJS 单元测试案例。
🔹 提示如下:
你是一位有经验的后端开发人员。使用 Jest 为 NestJS 中从 MongoDB 获取用户数据的服务生成一个单元测试。
确保测试包括:
- 有效用户获取
- 不存在的用户处理
- 错误处理
切换到全屏 退出全屏
🔹 期望输出(DeepSeek 程序员):
注意:保持英文术语 "DeepSeek 程序员" 不翻译,保留冒号。
import { Test, TestingModule } from '@nestjs/testing';
import { UserService } from './user.service';
import { getModelToken } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User } from './user.schema';
describe('UserService', () => {
let service: UserService;
let model: Model<User>;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
UserService,
{
provide: getModelToken('User'),
useValue: {
findOne: jest.fn(),
},
},
],
}).compile();
service = module.get<UserService>(UserService);
model = module.get<Model<User>>(getModelToken('User'));
});
it('当找到用户时,应该返回用户信息', async () => {
const mockUser = { email: 'test@example.com', name: 'Test User' };
jest.spyOn(model, 'findOne').mockResolvedValue(mockUser);
const result = await service.getUserByEmail('test@example.com');
expect(result).toEqual(mockUser);
});
it('当用户不存在时,应该返回 null', async () => {
jest.spyOn(model, 'findOne').mockResolvedValue(null);
const result = await service.getUserByEmail('notfound@example.com');
expect(result).toBeNull();
});
});
切换到全屏模式,退出全屏
➡ DeepSeek Coder 生成结构化的代码,在真实的测试环境中表现良好。
Google Gemini 1.5 (之前叫 Bard)
工具提示:最佳用例场景:
- 数据分析及可视化
- 多模态搜索(图片+文本)
- 创意写作和研究
📝 提示技术:
✅ 混合型提示 → 将结构化指令与开放型提示结合使用。
✅ 事实核查提示 → 要求它用来源验证回答。
✅ 上下文扩展提示 → 使用包含详细背景信息的较长提示以提高准确性。
📌 例如:
_> "总结最新的人工智能驱动的测试用例生成趋势,重点是使用RAG和LLM微调的工具。比较Gemini和GPT在测试用例生成中的表现。""
AI研究与摘要
💡 示例: 简述最近的AI驱动的测试案例生成趋势。
🔹 请看以下提示:
总结由AI驱动的测试用例生成的最新趋势,重点是:
1. 检索增强生成(RAG)
2. 大规模语言模型(LLM)在软件测试中的微调
3. OpenAI的GPT-4-Turbo和Gemini在测试用例生成方面的差异
如有必要,请提供参考资料。
进入全屏 退出全屏
🔹 预期的输出(Gemini 1.5):
### 基于AI的测试用例生成趋势预测(2025)
1️⃣ **基于检索的增强生成(RAG)**
- 现在AI模型可以从向量数据库(如MongoDB向量搜索)中获取特定领域的测试用例。
- RAG减少了错误生成并提高了上下文感知的测试用例的质量。
2️⃣ **针对软件测试的LLM微调**
- 公司使用其历史测试用例对模型进行微调。
- 开源微调框架如LoRA和QLoRA使得微调过程更加高效。
3️⃣ **GPT-4-Turbo vs. Gemini**
- GPT-4-Turbo在结构化输出方面表现更好。
- Gemini 1.5具有更强的多模态理解能力(文本+图像)。
进入全屏 退出全屏
➡ 双子非常适合做与AI研究相关的任务。
GitHub Copilot(代码版GPT-4-Turbo)(代码助手)
🛠 最佳用法:
- 实时代码补全
- 代码优化及最佳实践
- 结对编程支持
📝 提示技巧:
✅ 内联注释提示 → 使用结构化注释引导代码完成。
✅ 函数签名完成 → 开始编写函数定义,让Copilot推断逻辑内容。
✅ 迭代提示 → 通过与模型的互动来优化建议。
📌 例如:
// 创建一个处理用户 CRUD 操作的 NestJS 控制器
// 使用依赖注入来处理用户 CRUD 操作所需的依赖
全屏模式 退出全屏
代码生成
💡 应用场景: 使用Copilot实时生成NestJS的CRUD API。
内联注释(在 VS Code 中):
// 创建一个 NestJS 服务来处理 'Product' 实体的 CRUD 操作(创建、读取、更新、删除)
// 使用依赖注入来连接 MongoDB
切换到全屏或退出全屏
🔹 Copilot 完成 (预期输出):
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Product, ProductDocument } from './product.schema';
@Injectable()
export class ProductService {
constructor(@InjectModel(Product.name) private productModel: Model<ProductDocument>) {}
async create(productDto: any): Promise<Product> {
const newProduct = new this.productModel(productDto);
return newProduct.save();
}
async findAll(): Promise<Product[]> {
return this.productModel.find().exec();
}
async findOne(id: string): Promise<Product | null> {
return this.productModel.findById(id).exec();
}
async update(id: string, productDto: any): Promise<Product | null> {
return this.productModel.findByIdAndUpdate(id, productDto, { new: true }).exec();
}
async delete(id: string): Promise<void> {
await this.productModel.findByIdAndDelete(id).exec();
}
}
全屏显示,退出全屏
Copilot 能很好地根据开发者的意图编写实际的生产代码。
🔹 2025年展望:关键要点
✅ 选择合适的模型很重要 → 根据使用场景选择合适的AI。
✅ 正确地组织提示至关重要 → 正确地组织提示以获得最大效率。
✅ 不断迭代优化提示最佳 → 根据输出不断优化提示。
✅ 领域特定的微调 → 为测试、开发或特定产品的应用场景定制提示。
共同学习,写下你的评论
评论加载中...
作者其他优质文章