摘要: Pydantic AI 在 2026 年 10 月 31 日宣布一個對成本的實質改動:當動態 system prompt 內容變動時,框架不再重寫對話開頭,而是把變更附加到歷史訊息中,讓原本的 prompt 前綴維持不變、繼續命中供應商的快取。對任何跑長對話 agent 的團隊來說,這直接影響每次請求的帳單。
問題出在哪裡
很多 agent 的 system prompt 不是靜態的:使用者 ID、當下時間、資料庫查詢結果、權限狀態,這些都會被塞進開頭的指令裡。問題是,多數供應商的 prompt cache 是按前綴比對的——只要對話最開頭差了一個字元,整段指令、工具定義、加上先前所有對話,都得重新以全價計費。
Pydantic 在 X 上的說明很直接:「Changing a dynamic system prompt no longer has to rewrite the start of your conversation.」也就是說,當動態內容改變時,Pydantic AI 會把變更以附加方式放進對話歷史,而不是改寫前面已經快取的前綴。舊前綴保持原樣,快取就能延續使用。
這對你的 agent 成本意味著什麼
Pydantic 官方文件特別提醒:包括 Anthropic 在內的幾個供應商,預設什麼都不快取——除非請求明確要求。沒開快取的話,每一次請求都在為同樣的指令、工具定義和對話歷史付全額。
換句話說,這個改動的價值建立在兩件事上:一是你要主動啟用快取(文件提到透過 capabilities=[Caching()] 這類能力開關),二是你要避免自己不小心破壞前綴。過去第二件事很難做到,因為動態 system prompt 是常見做法,改內容就等於換前綴。現在框架替你處理了這個矛盾:動態的部分照樣動,穩定的部分照樣被快取。
對照我之前寫過的 xAI guidelines 參數:逐請求調整 Grok 內容審核,可以看到一個共同趨勢——供應商和框架都在把「逐請求的動態配置」和「穩定的可快取結構」分開處理。動態性不再以犧牲快取為代價。
什麼時候該在意
不是每個人都需要。如果你的 agent 是單輪問答,或者 system prompt 幾乎不變,這個改動對你沒有感覺。它真正發揮作用的場景是:
- 長對話、多輪互動的 agent,歷史越長,重寫前綴的浪費越大。
- system prompt 裡有高頻變動的動態內容,例如每個使用者不同的上下文。
- 指令和工具定義本身很大——工具越多,前綴越長,重算的成本也越高。
有一點要留意:把變更附加到歷史,代表模型看到的是「原指令+後續變更」的組合,而不是一份乾淨重寫的指令。官方公告沒有說明這對模型遵循指令的行為是否有影響,實際上是否夠用,還是得靠你自己的 evaluation 驗證。
下一步
如果你已經在用 Pydantic AI 跑 agent,值得檢查兩件事:agent 是否啟用了 Caching capability,以及你的動態 system prompt 目前的寫法是否正在讓前綴失效。把穩定內容放前面、變動內容往後放,本來就是好習慣;現在框架還會幫你把變動部分往歷史後面推,等於多了一層保險。細節與計費說明,可以直接看 Pydantic 的 Agents 文件,特別是「Add prompt caching to your agents」那一段。
參考來源
- Pydantic on X: Changing a dynamic system prompt no longer has to rewrite the start of your conv
- Agents
在 X 上查看原貼文
