減少 Agent 的無效步數:常見的浪費模式與修法
Agent 平均步數從 9 降到 5,成本與延遲直接砍掉四成。
Agent 的成本與步數幾乎成正比。分析真實執行軌跡後會發現,其中有相當比例是無效步數——重複查詢、無意義的確認、以及本來可以一次做完的事被拆成三次。
把軌跡撈出來分類,通常能找出五種固定的浪費模式。
模式一:重複查詢
同一個工具用同樣參數被呼叫兩次以上。原因通常是工具結果被截斷或格式難讀,模型沒「看懂」就再查一次。
# 修法:同一次執行內對工具結果做快取,並明確告知模型
cache = {}
def dispatch(name, args):
key = (name, json.dumps(args, sort_keys=True))
if key in cache:
return {**cache[key], '_note': '此查詢先前已執行,以下為相同結果'}
cache[key] = TOOLS[name](**args)
return cache[key]模式二:逐筆查詢
要查五個訂單,模型呼叫五次單筆查詢。修法是提供批次版本的工具,並在描述中明示。
{
'name': 'orders.search',
'description': '查詢訂單。**支援一次查詢多筆**,請盡量以陣列一次傳入所有編號,'
'不要逐筆呼叫。',
'parameters': {'order_nos': {'type': 'array', 'items': {'type': 'string'},
'maxItems': 50}}
}模式三:探索性瞎試
模型不確定該用哪個工具,就一個個試。這是工具描述不清楚的症狀,回頭改描述比調迴圈有效。
模式四:過度確認
模型在每一步都問使用者「這樣可以嗎」。修法是在系統提示中明確授權:「唯讀操作直接執行,不需要確認;只有需要確認的工具會由系統攔截」。
模式五:冗長的最終整理
任務已完成,模型還花兩三步「整理」與「複述」。修法是提供明確的 finish 工具,並在提示中要求「取得足夠資訊後立即呼叫 finish,不要重述已知資訊」。
量化分析軌跡
def analyze(runs):
stats = Counter()
for r in runs:
seen = set()
for step in r.steps:
sig = (step.tool, json.dumps(step.args, sort_keys=True))
if sig in seen:
stats['repeat'] += 1
seen.add(sig)
if r.steps and r.steps[-1].tool is None:
stats['trailing_talk'] += 1
return stats設定步數預算並回饋給模型
在系統提示中告知剩餘步數,模型會自我調節:「你還剩 3 步可用,請優先完成最關鍵的操作」。這個簡單的做法通常能降低一到兩步的平均值。
優化步數之前先確認完成率不會下降。步數降低但任務失敗率上升,是把成本從一個地方搬到另一個地方而已。
訂閱後繼續閱讀全文
本篇為訂閱者專屬內容。訂閱後可取得下列權限:
- 解鎖全部內容權限
- 閱讀不限篇數
- 全站移除廣告
月卡
NT$240
開通 30 天
一次付清,開通 30 天
季卡
NT$620
開通 90 天
一次付清,開通 90 天,每天約 NT$7
年卡
NT$2,160
開通 365 天
一次付清,開通 365 天,每天約 NT$6
一次性付款,付款成功後立即開通,到期自動結束,不會再次扣款,也不需要取消訂閱。
立即訂閱
金額均為新臺幣(TWD),即實際扣款金額,不另收手續費
支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
購買須知與退款政策