AI 與 LLM代理Performance 與 Scale 方案

代理工具呼叫快取

代理會一再以相同的參數呼叫相同的工具。把結果記憶化,就不必再為同一個 API 呼叫付兩次錢。

次查找,在每次工具呼叫之前
1
依命名空間或項目設定
TTL
由 STATS 回報的節省金額
$
步驟 1 / 5
建立命名空間

天氣變化緩慢,因此結果保留 15 分鐘。

範例工作階段playing
# 建立命名空間
hotkv> TOOL.CACHE.CREATE tools MAX_ENTRIES 100000 TTL 900
OK

以真實 HotKV 指令與範例回覆呈現的動畫導覽。點擊任一步驟即可跳到該步驟。 指令與回覆維持英文,與您在 HotKV 中輸入及看到的完全一致。

問題

代理會不斷迴圈。它們在一次執行中會多次查詢相同的天氣、相同的匯率、相同的 SQL 結果與相同的網頁,下一次執行又再來一遍。每次呼叫都會耗費延遲、速率限制,往往還有金錢,而緩慢的工具會讓代理的每一步都變慢。

HotKV 如何處理

工具快取會以工具名稱與其參數組成的鍵,記憶化具決定性的工具呼叫。呼叫工具之前,代理先詢問快取。命中就立即傳回儲存的結果,未命中則呼叫工具一次,並以符合所需新鮮度的 TTL 儲存結果。

逐步說明

逐個指令看看發生了什麼事

  1. 01

    建立命名空間

    天氣變化緩慢,因此結果保留 15 分鐘。

    TOOL.CACHE.CREATE tools MAX_ENTRIES 100000 TTL 900
  2. 02

    第一次呼叫,未命中

    這組參數還沒有任何快取。

    TOOL.CACHE.GET tools "get_weather(city=Lisbon)"
  3. 03

    呼叫工具一次並儲存

    實際呼叫 API,並將結果快取 15 分鐘。

    TOOL.CACHE.SET tools "get_weather(city=Lisbon)" "{\"temp_c\":21,\"sky\":\"clear\"}" TTL 900
  4. 04

    每次重複都是命中

    代理規劃第二天的郊遊並再次詢問。其他代理為其他旅客詢問時也是如此。

    TOOL.CACHE.GET tools "get_weather(city=Lisbon)"
  5. 05

    統計節省的成效

    依命名空間回報命中、未命中與節省的用量。

    TOOL.CACHE.STATS tools
適用之處

真實世界的情境

旅遊與訂位代理

天氣、匯率與空位查詢會在不同旅客與規劃步驟之間重複出現。每個結果在每個 TTL 內只擷取一次。

資料代理

唯讀的 SQL 查詢與儀表板指標會被記憶化,因此探索資料的代理不會狂轟資料倉儲。

瀏覽代理

擷取並解析過的網頁會被快取,因此同一個頁面不會在每次執行時重複下載。

內建

您能獲得什麼

依參數記憶化

鍵由工具名稱與其參數組成,因此每個不同的呼叫都會分別快取。

TOOL.CACHE.GETTOOL.CACHE.SET

新鮮度控制

每個命名空間有預設 TTL,每個項目另可選用自己的 TTL。

TTL

有界的記憶體

每個命名空間有項目數上限,滿了就會淘汰。

MAX_ENTRIES

節省報告

命中、未命中、淘汰、記憶體與節省的用量。

TOOL.CACHE.STATS

常見問題

哪些工具應該快取?

具決定性的唯讀呼叫,例如結果只取決於參數的查詢、搜尋與查閱。絕不要快取會改變某些東西的工具,例如寄送電子郵件。

快取的結果可以提前移除嗎?

可以。TOOL.CACHE.DEL 會移除單一項目,TOOL.CACHE.FLUSH 則會清空整個命名空間。

哪些方案包含它?

工具快取屬於 Performance 與 Scale 方案。

相關使用情境

在您自己的工作負載上試試看

HotKV 支援 Redis 協定,因此您可以將現有的用戶端指向它,並執行這些相同的指令。