你的 Agent 总是跑偏?因为你把它当 Prompt 在用
你的 Agent 总是跑偏?因为你把它当 Prompt 在用
我让 Agent 帮我整理竞品报告,它跑了 20 步之后开始给我写小说——不是比喻,是真的开始编故事。
那次翻车经历我记得很清楚。任务描述写的是:"帮我搜索并汇总竞品的产品功能、定价和用户评价,整理成报告。"看起来很清晰对吧?结果 Agent 先搜了几个关键词,然后开始"分析",然后开始"推断",然后在第 17 步的时候,它已经在根据"推断"生成"可能的用户反馈"——全是编的。
我盯着那份报告看了三秒钟,意识到问题不在模型,在我自己。
不是模型不行,是你的任务描述写法根本就不对。---
第一章:为什么你的 Agent 总是跑偏?
普通 Prompt 和 Agent 任务描述,看起来都是"给模型的文字输入",但它们的运行机制完全不同。
普通 Prompt 是单次射击:你问一个问题,模型回答,结束。整个过程只有一个决策点,就算跑偏了,也就一步之遥。
Agent 是持续决策循环:模型要在没有人介入的情况下,连续做出几十个决策——调用哪个工具、怎么解读返回结果、下一步去哪、遇到错误怎么办……每一步都是一个岔路口。
这就是问题所在。你用写普通 Prompt 的思维写 Agent 描述,等于给一个要独立工作三天的员工,只留了一张写着"帮我整理竞品报告"的便利贴。
员工会怎么做?他会按自己的理解去发挥。模型也一样。
---
第二章:普通 Prompt vs Agent 任务描述,到底差在哪?
用一张表说清楚:
| 维度 | 普通 Prompt | Agent 任务描述 | | 意图表达 | 描述你想要什么结果 | 定义它是谁、目标是什么、成功标准是什么 | | 角色定义 | 通常没有,或只有简单 "你是一个助手" | 需要明确能力边界、专业背景、行为风格 | | 边界约束 | 基本没有 | 必须写清楚"不能做什么"和"遇到边界怎么处理" | | 工具调用意识 | 不涉及 | 必须说明有哪些工具、每个工具的适用场景和调用规范 | | 失败处理机制 | 不需要 | 必须定义异常情况下的回退策略,否则模型会自由发挥 |一句话总结:普通 Prompt 是"告诉它答案长什么样",Agent 描述是"给一个会持续行动的员工写岗位说明书"。
岗位说明书和便利贴,信息密度差了一个数量级。
---
第三章:我试了 4 种写法,复盘每种的实际表现
同一个任务:"自动搜索并汇总 3 个竞品的产品功能、定价、用户评价,输出结构化报告"。
我用 4 种不同的写法测试,以下是真实结果。(测试使用 GPT-5.1 和 Claude Sonnet 4.6,平台用的是 [api.884819.xyz](https://api.884819.xyz),延迟和稳定性都还不错,按量计费。)
---
写法 A:直接描述任务目标(最常见,最容易跑偏)
帮我搜索并汇总竞品信息,包括产品功能、定价和用户评价,整理成报告。
实际表现:
Agent 开始搜索,前几步正常。但很快,它在没有找到明确定价信息的情况下,开始"推断"定价——"根据其产品定位,预计定价在 XX 元左右"。用户评价部分更糟,直接开始生成"典型用户可能会说……"。
最终报告里,真实数据和编造内容混在一起,没有任何区分标注。
问题根源: 没有定义"搜不到信息怎么办",模型选择了对它最简单的路——编。---
写法 B:加角色定义 + 任务目标(有改善,但边界模糊)
你是一个专业的市场研究分析师。
你的任务是搜索并汇总竞品信息,包括产品功能、定价和用户评价,输出结构化报告。
实际表现:
有了角色定义之后,输出的语气和格式明显更专业。但问题依然存在:当搜索结果不理想时,"分析师"开始用专业语气编造数据,反而更有迷惑性。
问题根源: 角色定义解决了"风格问题",但没有解决"边界问题"。---
写法 C:角色 + 目标 + 约束清单 + 工具说明(明显更稳)
## 角色
你是一个专业的市场研究分析师,专注于 SaaS 产品竞品分析。
任务目标
搜索并汇总指定竞品的以下信息:产品核心功能、官方定价方案、真实用户评价。
可用工具
- web_search:用于搜索公开信息
- 仅使用上述工具,不得使用其他方式获取信息
约束规则
- 所有数据必须来自真实搜索结果,禁止推断或编造
- 如果某项信息无法找到,明确标注"未找到公开信息"
- 不得在报告中混入主观判断,除非明确标注为"分析"
输出格式
按竞品逐一输出,每个竞品包含:功能摘要、定价信息、用户评价摘录(附来源链接)
实际表现:
这次 Agent 的行为明显收敛。在找不到定价信息时,它如实标注了"未找到公开定价,建议直接访问官网确认"。没有编造,没有推断混入正文。
报告结构清晰,可信度大幅提升。
改善关键: 约束清单 + 明确的"搜不到怎么办"策略。---
写法 D:结构化系统提示词(含状态感知 + 失败回退逻辑)(表现最优)
## 系统角色
你是一个市场情报采集 Agent,专门负责竞品信息的结构化采集与汇总。
你的工作产出将直接用于商业决策,因此准确性优先于完整性。
任务定义
采集目标竞品列表中每个产品的以下信息:
1. 核心产品功能(来源:官网/产品文档)
2. 定价方案(来源:官网定价页)
3. 用户评价(来源:G2/Capterra/AppStore 等第三方平台)
工具使用规范
- web_search:每次搜索聚焦单一信息点,不得一次搜索多个维度
- 每条信息必须记录来源 URL 和采集时间
行为准则
- 信息可信度分级:官网信息 > 第三方平台 > 新闻报道 > 社交媒体
- 遇到信息冲突时,保留所有版本并标注来源,不得自行裁决
- 禁止任何形式的推断、预测或主观填充
异常处理(重要)
- 若某项信息经 3 次搜索仍未找到:标注"[数据缺失]"并停止该项搜索
- 若工具调用失败:记录错误,跳过该步骤,在报告末尾汇总所有失败项
- 若任务无法完成超过 50%:暂停并向用户报告当前进度,等待指令
输出规范
最终报告结构:
- 执行摘要(采集完成度、数据质量评估)
- 竞品详情(按模板逐一填写)
- 数据缺失清单(列出所有未采集成功的信息项)
- 建议后续行动
实际表现:
这是四种写法里表现最稳定的一个。Agent 在整个执行过程中行为可预测:该搜的搜,搜不到的明确标注,工具失败的有记录。最终报告里有一个"数据缺失清单",清楚列出了哪些信息没有采集到。
更重要的是:它没有一次编造数据。
文中所有 Prompt 示例可以直接在支持 GPT-5.1 / Claude Sonnet 4.6 的 API 环境里跑。如果你还没有稳定的 API 访问渠道,可以试试 [api.884819.xyz](https://api.884819.xyz)——新用户注册即送体验 token,国产模型(Deepseek/千问等)完全免费,按量计费不用担心浪费。
---
第四章:Agent 任务描述的最佳实践模板(可直接复用)
根据上面的实验,我提炼了一套可复用的结构化模板:
## [角色声明]
你是一个 [专业领域] 的 [角色名称]。
你的工作产出将用于 [使用场景],因此 [核心优先级,如"准确性优先于完整性"]。
[任务目标]
你需要完成以下任务:
1. [具体任务步骤1]
2. [具体任务步骤2]
成功标准:[明确定义什么叫"完成"]
[能力边界]
你可以做:[列出允许的操作]
你不可以做:[列出禁止的操作]
[工具清单]
- [工具名称1]:[适用场景] / [调用规范]
- [工具名称2]:[适用场景] / [调用规范]
[行为准则]
- [规则1,越具体越好]
- [规则2]
- [信息冲突时的处理方式]
[异常处理]
- 若 [异常情况A]:[执行动作A]
- 若 [异常情况B]:[执行动作B]
- 若任务无法推进:[回退策略]
[输出规范]
[明确定义输出格式、结构、必须包含的字段]
什么时候用精简版:
- 任务链路短(5步以内)
- 工具调用单一
- 失败影响可控
精简版可以省略"行为准则"的细节,但异常处理永远不能省。
什么时候必须用完整版:- 任务链路长(10步以上)
- 涉及多工具协同
- 输出结果将直接用于决策或对外发布
---
第五章:三个容易踩的坑,以及我的判断标准
坑一:把工具描述写进目标里,导致幻觉调用
错误写法: "使用搜索工具查找竞品信息,然后用分析工具生成报告"问题在于:如果"分析工具"不存在,模型会凭空"调用"它——然后用自己的推理假装是工具输出。
正确做法: 目标只描述"要达成什么",工具清单单独列出"有什么可用",两者严格分离。---
坑二:约束写得太模糊,模型自由发挥
错误写法: "不要编造信息"这句话没有操作性。模型不知道什么叫"编造"——它认为基于搜索结果的推断不算编造。
正确做法: 写具体的行为规范,比如"所有数据点必须附带来源 URL,无法提供来源的信息禁止写入报告"。---
坑三:只写"该做什么",忘了写"不该做什么"
大多数人写 Agent 描述时,花了 90% 的篇幅描述正常流程,对异常情况只字不提。
但 Agent 在真实执行中,遇到异常的概率远比你想象的高。没有明确的"不该做",模型会选择对它最省力的路——通常是编造或跳过。
正确做法: 每写完一个"该做什么",问自己:"如果这步失败了,它应该怎么办?" 把答案也写进去。---
自检清单:写完 Agent 描述后,对照这 5 个问题
- [ ] 1. 角色是否明确? 它知道自己是谁、在做什么场景下的工作吗?
- [ ] 2. 成功标准是否可验证? 它知道什么时候算"完成"吗?
- [ ] 3. 工具边界是否清晰? 每个工具的适用场景和禁止场景都写了吗?
- [ ] 4. 异常情况是否覆盖? 至少覆盖了"信息找不到"和"工具调用失败"两种情况吗?
- [ ] 5. 禁止行为是否明确? 有没有明确写"不能做什么",而不只是"要做什么"?
---
最后:如果你只记住一件事
不要做大而空的总结。就一句话:
写 Agent 描述之前,先问自己——"如果这是一个真人员工,我这段话够不够让他独立工作三天?"如果答案是"不够",继续补。
现在打开你手边的 Agent 项目,把它的系统提示词拿出来,对着上面那个自检清单过一遍。大概率你会发现至少两个漏洞。
---
这篇我们聊的是单个 Agent 的任务描述怎么写。
>
但如果你要搭的是多个 Agent 协作的系统——比如一个 Agent 负责搜索、一个负责分析、一个负责写报告——它们之间怎么"交接工作",上下文怎么传递,Prompt 又该怎么设计?
>
下一篇我会拆一个真实的多 Agent 流水线案例,踩过的坑比这篇还多。敬请期待。
---
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#AI Agent #Prompt技巧 #AI教程 #ChatGPT #Claude #8848AI #AI工作流 #大模型实战