控管代理程式技能

代理可使用 Model Context Protocol (MCP) 伺服器、企業 API 或自訂指令碼存取多種工具。如果一次向代理公開大量工具說明,可能會導致情境膨脹,進而增加詞元費用、延遲時間,並降低 LLM 的推論效能。

如要提升效能,可以使用代理程式技能 (工具和程序說明的封裝標準),逐步揭露工具。代理程式一開始只會接觸到一小組技能,而不是將整個工具目錄放在情境中。LLM 會在特定技能套件變得相關時,指示代理程式動態載入這些套件。

控管技能生命週期

由於載入及管理技能會使用工具呼叫,因此語意控管政策可控管整個技能生命週期。如果代理程式是使用 Google Agent Development Kit (ADK) 建構而成,則會採用下列核心工具來管理技能:

ADK 技能工具 說明
list_skills 向模型顯示所有可用的技能套件。
load_skill 將特定技能及其相關工具動態匯入目前的環境。
load_skill_resource 擷取技能運作所需的資料或資產。
run_skill_script 執行技能中定義的基礎邏輯。

語意管理政策會攔截這些技能管理工具呼叫,並根據您的自然語言限制 (NLC) 評估這些呼叫。這樣就能套用限制,控管在特定條件下載入的技能。

範例:技能和工具生命週期政策

以下範例說明語意控管政策如何防範技能生命週期中的安全風險,例如指令注入或供應鏈遭入侵。

防止在受汙染的工作階段中載入工具

情境:代理程式已獲得授權,可載入及執行技能。如果對話記錄包含可能含有插入指令的不受信任內容,管理員會希望禁止代理載入執行外送動作的工具。舉例來說,代理程式可能會在擷取網頁內容後載入 send_email 工具。

  • 限制: 「如果目前的對話記錄包含從電子郵件、網頁或上傳文件擷取的內容,請勿載入任何可傳送訊息或寫入外部系統的技能。」
  • 邏輯:當 LLM 建議呼叫 load_skill(skill_name='send_email') 時,語意管理政策會檢查對話記錄。如果先前的回合擷取到不信任的資料 (例如電子郵件內容),政策會拒絕 load_skill 呼叫。因此,在該工作階段中,代理商無法使用該技能封裝的外呼工具。

限制依附元件安裝 (供應鏈)

情境:開發代理使用技能安裝套件。攻擊者可存取技能存放區,並修改指令,確保一律安裝惡意套件和要求的依附元件。

  • 限制: 「只允許 npm_install 工具為核准清單上的套件 (react、express、lodash 或 axios) 執行。」
  • 邏輯:當 LLM 提議呼叫 npm_install(packages=['lodash', 'malicious-agent-helper']) 等工具時,語意管理政策會檢查引數。由於 malicious-agent-helper 不在允許清單中,因此政策會發出 DENY 判決,在執行前封鎖動作。

後續步驟