我用 AI 编程半年,这 5 个 Prompt 技巧让我效率翻倍
半年前。我第一次用 AI 辅助编程的时候,体验非常糟糕。老实说,
那时候我让 AI 帮我写一个「使用者管理程序」。它给我生成了几百行代码,里面掺杂了 PHP、Python 和莫名其妙的伪代码,接口命名毫无规律,错误处理完全没有。说起来,说到我当时心想,这玩意儿也就这样吧。按理说,
转折点发生在一个深夜。我加班改一个数据迁移脚本,困得不行,决定再给 AI 一次机会。但这次我没有像平时那样随口说一句「帮我写个脚本」。而是花了几分钟,认真写了一段 Prompt。
结果 AI 直接给出了一个能跑的脚本,还自动处理了我没考虑到的边界情况。那个脚本我稍微改了两行就直接上线了。
从那以后我开始认真研究 Prompt Engineering。发现这玩意儿跟学编程语言一样,有它自己的「语法」和「常用方法」。
今天把这半年踩过的坑、的技巧,一次性分享出来。
说到技巧一,给 AI 一个「角色剧本」
痛点:AI 生成的代码质量不稳定?
很多人写 Prompt 上来就是「帮我写一个排序算法」,这跟找一个路人说「帮我修一下车」差不多——对方根本不知道你是要换轮胎还是换发动机。
方法:角色设定 + 风格约束
你是一位有 5 年经验的 Python 后端工程师,擅长数据处理和性能调整。再看你的代码风格,- PEP8 风格
- 必须有类型注解
- 每个函数不超过 20 行
- 错误处理必须完善
请帮我完成以下任务...
为什么有效?
A. 模型训练数据中包含不同层级开发者的特征
B. 风格约束会激活更高质量代码片段模式
C. 相当于告诉模型:「别胡乱拼凑知识碎片」
至于技巧二,用「约束」代替「要求」
痛点:AI 生成的代码满足需求但不符合团队标准?
❌ 暴力要求式Prompt ✅ 构造约束式Prompt
帮忙写个登录接口
要求的观点是,1. 安全
2. 性能好
3. 日志完整
4. 错误友好提示
// 模糊概念!模型不知道具体怎么做...
class LoginRequest:
username: str = Field
password: str = Field
@router.post
async def login(
request: LoginRequest,db: Session = Depends。redis: Redis = Depends
) -> dict:
"""JWT Token + Refresh Token 流程"""
# 必须满足:
# - bcrypt 加密密码
# - Redis session 有效期7天/refresh_token有效期30天
# - 三次失败锁定账号1小时
# - 日志记录IP/User-Agent/时间戳到login_logs表
使用什么加密算法?会话存储方式,这些都需要手动补充判断...
"所有可变因素都被固定住!按理说,模型只需要按照'填空题'方式完成剩余逻辑"
主要区别:从'描述目标'转为'建立边界'
至于技巧三。分而治之拆解任务流水线
⚠️ 注意事项
复杂任务直接要求AI输出完整结果等于- 模型一次只能专注少量关键信息!
每步都要明确输入输出规范 ,比如:"基于上一步user_model.py文件..."
建议拆分为的观点是,· 数据层
· 接口层
· 服务层
· 测试层
实际案例: 用AI实现带缓存策略的商品推荐API
第一步先的观点是,数据模型设计
bash
请设计以下MySQL表结构及关系:
· products
· user_preferences
· product_recommendations
至于要求,· 必须使用SQLAlchemy声明式映射
· 添加适当索引调整查询速度
从接下来来看,基础API接口
bash
models.py。实现以下FastAPI路由:
GET /recommendations/{user_id}
POST /recommendations/{user_id}/feedback
说到注意,- 响应格式必须符合OpenAPI规范
- 参数验证使用Pydantic v2
:主要业务逻辑
bash
请实现RecommendationService类,包含:
def get_recommendations -> list
业务规则:
*
尝试从Redis获取缓存
* 未命中则调用协同过滤算法生成新推荐结果
* 新结果同时存入Redis和MySQL
第四步的观点是,单元测试覆盖率检查
bash
> 基于pytest框架,为RecommendationService编写测试用例.
> 必须覆盖以下场景:
* 冷启动新使用者推荐流程全链路测试.
* Redis缓存命中/未命中两种情况.
* 负载均衡下并发更新防重问题.
说到第五步,性能调整指导
bash> 分析当前实现可能存在哪些性能瓶颈?提供具体改进建议.
💡 Pro Tip: > 每条Prompt都引用上下文ID或文件名让模型知道延续之前工作.
技巧四这方面。> 用示例驱动Prompt
> 🛑 错误做法 > ✅正确做法
使用者需求:
写个支付回调通知处理器,需要抗重放攻击< code>
python> @app.route
def payment_callback:
return jsonify
markdown>> 🚨警告!这样生成的结果可能包含这些问题:
* 没有签名校验逻辑
* 没考虑幂等性问题
* 异常捕获粗暴...
✅ 参考示例 :
from fastapi import Request,HTTPException from pydantic import BaseModel
class PaymentCallback: transaction_id: str amount: float signature: str timestamp: int
@app.post async def payment_callback: body = await req.json
try :
callback_data = PaymentCallback
except ValidationError as e :
raise HTTPException)
if not verify_signature: raise HTTPException
if is_duplicate_transaction: return {"status": "already_processed"}
markdown>> ❌反面示例 :
@route def pay: if request.method == 'POST':
data = json.loads if 'sig' in data and len == 64 :
process_payment else :
return {'error': 'invalid'}
markdown>> 🔍注意事项:
* 提供至少两种正反对比示例更明显提高输出质量!* 对于风格敏感项目尤其关键!按理说,...
**开发周期**
`短`**
`长`**
`短`**
`长`**
**风险控制**
⚠️高 **
🛡️低 **
**知识产权**
📝混乱 **
📃清晰 **
**团队协作**
🤝差 **
🤲好 **
**典型场景**
单人小项目临时补丁功能快速原型搭建探索未知领域主要业务逻辑关键质量属性...
markdown>> ⚠️ 警惕陷阱!不要落入"复制粘贴魔咒":
AI只是加速工具不是万金油,始终要自己理解背后原理!黄金原则: 在每轮迭代后都运行linters&tests!
工具推荐清单
场景
工具组合
配置参考
本地开发
Copilot X + ChatDev
config.json { "role": "Senior Engineer","style": "Google Python Style Guide",...}
CI/CD集成
GitHub Actions + AutoPR
workflow.yml on push to main jobs check-code run echo "$GITHUB_TOKEN" | docker login ...
性能分析
LlamaIndex + VectorDB
vector_db_config={ "embedding_dim": 768。"max_tokens": 4k }
安全审计
CodeQL + Custom Ruleset
security.rulesets { disable_unsafe_eval true deny_list }
]]]
最终更新时间这方面,{{ site.time }},作者签名:#YourNameIsHere#
`
。