做AI Agent半年,我放弃了"完美提示词"
从一次崩溃说起
半年前我开始搞AI Agent,跟大多数人一样,笃信"提示词写到位了,Agent就稳了"。
然后我花了两周精雕细琢一段System Prompt。每句话反复改,每个边界条件列得清清楚楚,甚至用Markdown层级标了优先级。
第一次跑,惊艳。第二次跑,还行。第三次跑,直接翻车。
我想不通。把这次对话的完整日志喂回给同一个Agent,问它"哪里出了问题",它分析得头头是道。再跑一次,同样的坑继续踩。
后来我才明白:问题不在提示词写得多好,而是我把全部赌注都押在了提示词上。
---
"完美提示词"为什么靠不住
提示词不是代码
写代码,if a > b: return a,今天跑和明天跑结果一样。但提示词不是。同一个System Prompt,两次运行的输出可能完全不同——不是你的提示词退步了,是大模型的生成本来就有随机性。
更头疼的是,一段上千字的System Prompt,写完以后没人能预测它在所有边界情况下的表现。文字描述和执行结果之间的落差,比你想象的大得多。
越精细,越容易打架
我踩过一个典型坑:为了让Agent调用工具时更靠谱,我在提示词里写了三层规则:
优先用A工具拿数据
如果A挂了,用B工具
B也挂了,返回"暂不可获取"
够周到吧?结果Agent的做法是:A工具返回一个正常错误,它直接跳到第三层返回"暂不可获取"——跳过了一个完全正常的B方案。它"觉得"B可能也不行。
提示词越复杂,大模型的"自由发挥"空间越大。你以为在写逻辑,它当成了参考建议。
改着改着就改回去了
维护一个2000字的System Prompt,每次加新规则都得想"这条跟之前的会不会冲突"。我在Notion里维护了一份提示词变更日志,一个月后回头看,很多改动在循环——今天加的一条规则,两周前删过,因为导致了另一个问题。
做开发这叫技术债务,做提示词这叫摸黑走路。
---
我现在怎么干
放弃"完美提示词"之后,我把力气重新分配,效果反倒好了不少。
提示词从"指手画脚"变成"画个圈"
以前恨不得告诉Agent每一步怎么走。
现在System Prompt只讲"你要干嘛",具体的操作流交给代码控制。
以前:
收到用户问题,先搜新闻,再逐条看详情,最后生成摘要。
现在:
帮用户完成需求,有需要可以用下面这些工具。
提示词管得越少,翻车的概率越低。
代码兜底,提示词只管风格
现在的架构:
- 提示词管"怎么说话、什么态度"(三五句话)
- 代码管"怎么干活、出错怎么办、超时怎么处理"
提示词出问题影响范围有限,代码层的逻辑可以写单元测试,不用再靠"猜"来修。
不搞万能Agent了
之前总想做一个啥都能干的Agent。结果样样都干不利索。
现在拆开:
- 聊天的Agent只管聊天——提示词50字
- 查数据的Agent只管查数据——150字
- 写代码的Agent只管写代码——300字
每个Agent认准自己的事干,提示词短了,正确率反而高了。
---
打个比方:Agent就像一个带的新人。提示词是入职培训手册。指望一本手册让他任何场景都做对,不现实。
更实际的做法是:告诉他核心职责(提示词),给他清楚的操作界面(工具),外加一套标准作业流程(代码)。
出问题了,改流程(代码),别跟培训手册死磕。
半年下来,我代码量翻了3倍,提示词缩到原来的五分之一。系统反而稳得多。
所以如果你也在跟提示词较劲,试试换个思路:提示词能少则少,确定的事交给代码。