停止缩短你的提示词。六个智能体,97-99%的缓存命中率——以及为什么标准建议是错误的。

Reddit r/AI_Agents 新闻

摘要

文章指出,通过提示缓存,较长且稳定的提示可能比频繁更改的短提示更便宜,分享了运行具有高缓存命中率的AI智能体的见解。

这里的每个人都读过同样的建议。精简系统提示。删除示例。每个代币都花钱,所以用得越少越好。我遵循了几个月。然后我启用了提示缓存,这些建议一夜之间就颠倒了。事情是这样的:一旦缓存生效,长提示比不断变化的短提示更便宜。不是比喻,而是算术上的。设置:我运营一个出版物,有六个智能体,没有员工。一个CEO智能体分配工作,一个趋势侦查,一个研究员,一个作家,一个SEO智能体,一个发布智能体。它们全天候在机器上运行,就在我的书房里。上个月的总API花费:所有六个智能体大约115美元。这个数字是本文的重点,因为它并不是一开始就这样的。我的研究员智能体曾经在九次API调用中消耗了590万输入代币。九次。每次调用大约65万代币,而且几乎所有内容每次都是相同的文本——说明手册、工具定义、编辑标准、防伪造规则。智能体在回答每个问题之前都会重读其整个宪章,而我每次都为阅读支付全价。本能是缩短宪章。这种本能是错误的。缓存实际上改变了什么:提示缓存意味着提供商存储你提示词前缀的处理形式。在下次调用时,如果前缀是字节相同的,你只需支付该部分输入价格的一小部分。因此,一次调用的成本分为两部分,行为完全不同:稳定的前缀——指令、工具定义、风格指南、规则。缓存后,首次读取后几乎免费。易变的后缀——实际任务、当前上下文、今天的问题。全价。一旦这种分割存在,优化目标就不再是长度,而是稳定性。一个40,000代币的提示词如果从不改变,运行成本比一个每天编辑的4,000代币提示词更低,因为后者在每次编辑时都会丢弃缓存,并在下次调用时支付全价。我的命中率在97%到99%之间。它削减的成本比我之前每轮提示词精简加起来还多。而且提示词精简有一个副作用,缓存没有:更短的提示词使智能体变得更笨。我为了节省代币而删除的每条规则都有其存在的原因,我通常在一周内就会重新发现这个原因。三个让我惊讶的后果:1. 编辑提示词现在有成本。这是奇怪的一点。在缓存之前,更改系统提示词是免费的——你编辑一个文件,保存,完成。在缓存之后,每次编辑都会使缓存的前缀失效,下次调用需要支付全价来重建它。这不是避免编辑的理由,而是要批量编辑的理由。我现在刻意更改智能体指令,在会话中进行,而不是在烦人时随意修改一行。提示词波动成了一个可见的项目,看到它改变了我的行为,比任何纪律都有效。2. 顺序比内容更重要。缓存命中需要字节相同的前缀。这意味着最有影响力的重构不是删除文本,而是移动它:所有稳定的内容放在顶部,所有易变的内容放在底部,它们之间的边界就是缓存断点所在。如果你的系统提示词顶部有一个时间戳——令人惊讶的是许多智能体框架会注入一个——那么每次调用你都会使整个缓存失效。一行在错误位置的文本可以将你的命中率降到零,而其他一切看起来都正常。你可以有多个断点。工具定义和指令可以是单独的缓存块。使用它们。3. 你获得吞吐量,而不仅仅是省钱。缓存读取不像新鲜输入代币那样计入速率限制。对于一个全天候运行的自主系统来说,这可能比成本节约更有价值。我的智能体不再相互排队。账单下降了,系统变得更快了——这在同一改变中几乎从未发生过。我破坏自己论点的部分:缓存使糟糕的架构运行更便宜,但并没有使其变好。我最昂贵的夜晚大约50美元,由一个智能体在午夜到早晨之间消耗。这不是模型失败,也不是代币效率问题。那个智能体自己指令中的两行永远不可能同时为真:一行告诉它在行动前验证状态,另一行暗示它应该先行动。智能体完全按照指示行事——两件事交替进行,礼貌地,永远如此。缓存会使这个循环更便宜,但不会使其停止。还有缓存无法修复的另一件事。本月我的智能体有六天没有发布任何东西。账单几乎没动。大部分是:智能体醒来,检查状态,发现无事可做——写作本身是便宜的部分。一个闲置的自主公司成本几乎与工作的公司一样多,而且它不抱怨,所以没人注意到。我是偶然发现的,通过滚动浏览一个一周未打开的收件箱。所以,对于任何无人值守运行智能体的人,我会给出的操作顺序是:硬性迭代上限,在代码中强制执行,而不是在提示中。不能信任智能体来计算自己的轮次,因为计算轮次是一个任务,而任务正是循环所在。阅读你的指令,专门寻找矛盾,不是为了清晰度,也不是为了语调——而是寻找无法同时满足的规则对。根据我的经验,大多数昂贵的循环都是规则冲突伪装成推理失败。然后缓存。一旦东西可靠终止,再使其便宜。反向操作会让你得到一个高效定价的无限循环。唯一重要的数字:现在就去看看你的缓存命中率。不是你的代币计数,不是你的月度账单——而是命中率。如果它高于95%,停止阅读关于缩短提示的建议;它不再适用于你。如果接近零,你几乎肯定有一些易变的东西放在原本稳定的提示词顶部,找到它会花你二十分钟,并节省比一个月仔细编辑更多的钱。这个领域最无聊的优化也是对大多数人运行智能体可用的最大优化。它不需要聪明才智,不需要新模型,不需要架构重写。它需要将不变的东西放在前面,然后不去动它。把好的部分放在前面,然后别动它。
查看原文

相似文章

Agent 运行越久,我就越不在意提示词

Reddit r/AI_Agents

作者反思了长期运行的人工智能代理如何遭遇与初始提示无关的失败,并认为环境设计(工具、文档、验证、架构规则)更为重要。他们讨论了诸如 harness 工程、保持 AGENTS.md 文件精简、使用 linter 和评估器代理等概念,同时指出了成本权衡。

代理中的提示缓存

Lobsters Hottest

本文解释了提示缓存在大语言模型代理中的工作原理,涵盖 KV 缓存机制、预填充和解码阶段,以及其对延迟、成本和代理设计的影响。