做AI Agent半年,我放弃了"完美提示词"

做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倍,提示词缩到原来的五分之一。系统反而稳得多。


所以如果你也在跟提示词较劲,试试换个思路:提示词能少则少,确定的事交给代码。