Agent 的成本控管:把費用當成一級指標
Agent 的成本不是線性的,一個沒設限的迴圈就能燒掉整月預算。
一般 API 呼叫的成本可預期;Agent 不是。步數不固定、上下文會累積、工具回傳長度不受控,三個變數乘起來的分布是長尾的。
必須有的三道閘
- 單次任務上限:累計 token 或金額超標即中止。
- 單一使用者配額:每日或每月上限,避免單一帳號拖垮預算。
- 全域熔斷:全站當日成本超標時降級或暫停,這是最後一道保險。
class Budget:
def __init__(self, limit_usd):
self.limit, self.spent = limit_usd, 0.0
def charge(self, usage, price_in, price_out):
self.spent += usage.input_tokens / 1e6 * price_in \
+ usage.output_tokens / 1e6 * price_out
if self.spent > self.limit:
raise BudgetExceeded(f'已用 {self.spent:.3f} USD,超過上限 {self.limit}')降低成本的實際手段
- 截斷工具回傳:這通常是上下文膨脹的最大來源。
- 壓縮歷史:超過 N 輪就摘要,別無限累積。
- 分級模型:路由與分類用小模型,只有最終生成用大模型。
- 快取:相同查詢直接回舊結果。
把成本記進日誌
每次任務記錄輸入輸出 token、步數、實際費用。有了這份資料,才能回答「哪一種任務最貴」與「哪一次改動讓成本翻倍」。
把成本異常設成告警:單次任務費用超過中位數十倍就通知。這種尖峰通常代表 Agent 卡在迴圈裡。