AI Agent 提示词工程实战:从对话到精准代码生成
结论先行:用结构化提示词 + 多轮对话 + 上下文锚点,能把 GPT-4 等 Agent 的代码生成准确率从 40% 拉到 85% 以上。别信“一句话就能写代码”的鬼话,实战里全是坑。
1. 为什么你的 Agent 总生成“半成品”代码?
我去年接手一个内部工具项目,让 Agent 写个 Python 爬虫。第一轮对话:
User: 写一个爬取知乎热榜的爬虫
Agent: 给你 requests + BeautifulSoup 的代码

结果:代码能跑,但没处理反爬、没加限流、没写异常处理。这就是典型“对话式”提示词的弊端——太模糊。
核心问题:
- 缺少角色定义
- 没有输出格式约束
- 上下文太短,Agent 记不住需求边界
2. 三步构建“代码生成级”提示词
2.1 角色锚定 + 任务模板
我总结的黄金模板:
你是一个资深 Python 后端工程师,擅长编写生产级代码。
任务:生成一个 [功能]。
要求:
- 使用 [技术栈]

- 包含错误处理、日志、限流
- 输出完整的 .py 文件
- 用注释解释关键逻辑
实战例子:生成 Redis 缓存装饰器
你是一个资深 Python 后端工程师,擅长编写生产级代码。
任务:生成一个 Redis 缓存装饰器,支持 TTL 和 key 前缀。
要求:
- 使用 redis-py 库
- 包含连接池管理、异常重试、日志记录
- 输出完整的 .py 文件
- 用注释解释 key 生成逻辑和过期策略
结果:Agent 直接输出 120 行代码,包含 retry 装饰器、logging 配置、Pool 管理。一次跑通。
2.2 输出格式硬约束
我发现 Agent 经常把代码和解释混在一起。加一行:
输出格式:纯 Python 代码,用 ```python 包裹,不要额外解释。
踩坑记录:第一次不加这句,Agent 输出“首先安装 redis-py,然后…”,代码被切成三段,复制粘贴还得手动拼接。加约束后直接复制粘贴就能用。
2.3 多轮对话上下文锚点
复杂任务需要多轮。我踩过最大的坑是:第二轮对话后 Agent 忘了第一轮的要求。
解决方案:每轮开头用一句话锚定上下文。
第一轮:
User: 生成一个 Flask API,端点 /user,支持 GET 和 POST
第二轮(修改):
User: 继续刚才的 Flask API,添加 JWT 认证,注意保持原有路由不变
关键:用“继续刚才的” + 具体修改点,Agent 的上下文窗口能保持 2-3 轮。超过 3 轮,我会手动总结:
User: 总结当前项目状态:
- 已有:Flask API, /user 端点, JWT 认证
- 需要:添加 /admin 端点,仅 admin 角色可访问
3. 实战:从对话到精准代码生成(完整案例)
3.1 需求:生成一个异步任务队列
我直接给 Agent 初版提示:
写一个异步任务队列
输出:一个 50 行的 asyncio.Queue 示例,没有持久化、没有重试、没有监控。
3.2 重构提示词
你是一个资深 Python 后端工程师,擅长编写生产级异步代码。
任务:生成一个基于 Redis 的异步任务队列,支持任务优先级和重试。
要求:
- 使用 redis-py 的异步客户端
- 任务序列化用 JSON,支持自定义回调
- 包含:worker 循环、任务超时、死信队列
- 输出完整代码,用 ```python 包裹
- 不要额外解释
输出:180 行代码,包含 TaskQueue 类、Worker 类、retry 逻辑、dead_letter 处理。我直接集成到项目里,只改了 Redis 连接参数。
3.3 踩坑与修复
坑 1:Agent 用了 pickle 序列化,但生产环境有安全风险。
修复:加一行 序列化方式:JSON。
坑 2:Worker 循环没有优雅关闭。
修复:第二轮对话 继续刚才的代码,添加 SIGTERM 信号处理。
坑 3:日志格式不统一。
修复:最终轮 添加结构化日志,格式:{"time":"%Y-%m-%d %H:%M:%S", "level":"INFO", "message":"..."}
4. 我总结的“避坑清单”
| 常见问题 | 修复方法 |
|---|---|
| 代码缺少异常处理 | 提示词加“包含 try/except 和日志” |
| 依赖不明确 | 提示词加“列出所有 pip 依赖” |
| 代码风格不一致 | 提示词加“遵循 PEP8” |
| 缺少测试 | 提示词加“生成 pytest 测试用例” |
| Agent 忘记上下文 | 每轮用“继续刚才的”锚定 |
5. 延伸思考
- 提示词长度 vs 效果:我发现 200-300 字的提示词效果最好,太短模糊,太长 Agent 会忽略后半段。
- 模型差异:GPT-4 比 Claude 3 更擅长代码生成,但 Claude 的日志和注释更详细。根据场景选模型。
- 下一步:尝试用提示词生成单元测试和文档,实现“代码 + 测试 + 文档”一次性输出。
最后一句:提示词工程不是玄学,是结构化沟通。把 Agent 当新来的实习生,把需求写清楚,它就能干活。

评论已关闭!