AI Agent 提示词工程实战:从对话到精准代码生成

2026-05-13 23:40 AI Agent 提示词工程实战:从对话到精准代码生成已关闭评论

AI Agent 提示词工程实战:从对话到精准代码生成

结论先行:用结构化提示词 + 多轮对话 + 上下文锚点,能把 GPT-4 等 Agent 的代码生成准确率从 40% 拉到 85% 以上。别信“一句话就能写代码”的鬼话,实战里全是坑。


1. 为什么你的 Agent 总生成“半成品”代码?

我去年接手一个内部工具项目,让 Agent 写个 Python 爬虫。第一轮对话:

User: 写一个爬取知乎热榜的爬虫
Agent: 给你 requests + BeautifulSoup 的代码

结果:代码能跑,但没处理反爬、没加限流、没写异常处理。这就是典型“对话式”提示词的弊端——太模糊。

核心问题
- 缺少角色定义
- 没有输出格式约束
- 上下文太短,Agent 记不住需求边界


2. 三步构建“代码生成级”提示词

2.1 角色锚定 + 任务模板

我总结的黄金模板:

你是一个资深 Python 后端工程师,擅长编写生产级代码。
任务:生成一个 [功能]。
要求:
- 使用 [技术栈]


![用'继续刚才的'锚定上下文保持需求](imgs/多轮对话上下文锚点.png)

- 包含错误处理、日志、限流
- 输出完整的 .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 当新来的实习生,把需求写清楚,它就能干活。

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://teachcourse.cn/4138.html ,谢谢支持!

资源分享

Oracle VM VirtualBox启动提示“创建COM对象失败” Oracle VM VirtualBox启动提
线上产品接入bugly热更新 线上产品接入bugly热更新
Android面试笔记三:文石信息 Android面试笔记三:文石信息
Windows 10 C盘微信应用占据空间大小分析 Windows 10 C盘微信应用占据空

评论已关闭!