大家好,我是易安,AI超级个体,大厂程序员二孩奶爸。作为一名资深后端程序员,2023年开始深度使用各类AI工具以来,我发现prompt编写的技巧对于AI工具的使用效果有着决定性的影响。今天,我想结合自己在实际项目中的经验,分享一套我总结出的实用prompt框架,帮助大家更好地驾驭AI工具。
点击下方关注我,一起AI破局!
一、从程序员视角看prompt框
在编写代码时,我们习惯将复杂的问题拆解成可管理的模块。同样的思路也适用于prompt的编写。经过大量实践,我总结出了一个"四段式"prompt框架:
1. 角色定义(Role):让AI知道它是谁
在我早期使用AI时,常常直接抛出问题。但随着经验积累,我发现给AI明确的角色定位能大幅提升输出质量。这让我想起在写面向对象程序时,为类定义生明 interface的重要性。
以我最近做的一个代码重构项目为例,当我需要AI帮我重构一段复杂的遗留代码时,我会这样定义角色:
你现在是一位拥有10年经验的高级软件工程师,精通代码重构和设计模式,曾经成功重构过多个大型遗留系统。你特别擅长识别代码的坏味道,并使用恰当的设计模式进行优化。
2. 问题描述(Task):讲清楚你要做什么
作为程序员,我们都知道需求描述的重要性。同样,向AI清晰地描述问题也至关重要。我的经验是:把复杂的问题拆解成多个子任务,就像我们拆分一个大型功能一样。
例如,当我要让AI帮我开发一个新功能时,我会这样描述:
我需要开发一个用户注册功能,包含以下子任务:
1. 设计用户注册的数据模型
2. 实现注册表单的验证逻辑
3. 设计防机器人注册的策略
4. 处理敏感信息的加密存储
3. 目标设定(Goal):明确期望输出
在实际项目中,我发现给AI设定明确的目标,就像给团队成员设定清晰的OKR一样重要。这不仅能提高AI输出的准确性,还能避免无效的来回沟通。
我通常会这样设定目标:
请你帮我实现这个功能,需要达到以下目标:
1. 代码遵循SOLID原则
2. 包含完整的单元测试
3. 提供详细的API文档
4. 考虑性能和安全性
4. 补充要求(Requirements):细化输出规范
作为一名有代码洁癖的程序员,我特别注重输出的规范性。在使用AI的过程中,我发现明确的补充要求能让输出更加规范和可用。这就像我们制定团队的代码规范一样重要。
比如当我要AI生成技术文档时,我会这样补充要求:
请遵循以下输出规范:
1. 使用Markdown格式
2. 每个代码示例都需要包含注释
3. 关键步骤配截图说明
4. 文档结构需包含:背景、步骤、注意事项、常见问题
二、使用RAG提升AI输出质量
在实际项目中,我发现单纯依赖AI的基础知识是不够的。这让我想到了我们在开发中经常使用的缓存机制 - 通过预加载数据来提升响应速度。对AI来说,我们同样可以通过预先提供相关上下文来提升输出质量。
1. 建立知识库:为AI提供专业支撑
在我的实践中,我会为不同的项目建立专门的知识库。这些知识库通常包含:
项目的技术文档和架构设计
团队积累的最佳实践
常见问题的解决方案
项目特有的业务规则
这就像我们维护项目的wiki系统,确保团队成员都能获取到必要的知识背景。
2. 优化示例(Few-shot):用案例引导AI
作为技术人,我特别理解"show me the code"的重要性。在使用AI时,我发现提供优质的示例能显著提升输出质量。
以API文档生成为例,我会这样构建示例:
参考示例:
GET /api/users/{id}
描述:获取指定用户信息
参数:
- id: 用户ID,必填,整数类型
返回值:
- 200: 成功返回用户信息
- 404: 用户不存在
- 500: 服务器错误
3. 构建长期记忆:让AI更懂你的项目
在持续和AI协作的过程中,我逐渐形成了一套"记忆管理"机制。我会将项目中的重要决策、架构演进、特殊处理等信息整理成上下文信息,在需要时提供给AI。
比如在讨论代码优化时,我会这样提供背景:
背景信息:
1. 我们的项目使用Spring Boot 2.7.x版本
2. 数据库使用MySQL 8.0,已建立分库分表
3. 目前面临的性能瓶颈主要在数据查询层面
4. 缓存使用Redis集群部署
三、我的实践心得
1. 技巧分享
在过去两年的实践中,我总结出几个实用技巧:
a) 控制模型温度
生成代码时,我会将temperature设置为0.2,保证输出的稳定性
需要创意方案时,我会将temperature调高到0.8,获取更多可能性
b) 分步骤引导当遇到复杂问题时,我会让AI先列出解决步骤,再逐步展开。这种方式特别适合系统设计类的问题。
2. 踩坑经验
作为一个经常使用AI的开发者,我也踩过不少坑:
a) 代码生成陷阱
AI生成的代码可能存在编译问题
依赖版本可能不兼容
安全处理可能不完善
解决方案:我会让AI生成单元测试,并明确要求处理异常情况。
b) 上下文限制在长对话中,AI可能"忘记"之前的重要信息。我的解决方法是:
关键信息重复强调
重要上下文定期复述
复杂对话分成多个小session
3. 未来展望
作为一名技术人,我认为AI不是替代品,而是强大的助手。它能帮我们:
快速实现功能原型
优化重构现有代码
生成技术文档
进行代码审查
但关键的架构决策、业务理解、创新设计仍需要我们的专业判断。
结语
AI提示词之路,既需要技术功底,也需要持续实践和总结。希望我的经验分享能帮助更多同学更好地驾驭AI工具。如果你也在实践中有独特的心得,欢迎在评论区交流讨论。
领取专属 10元无门槛券
私享最新 技术干货