iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
AI Security

Agent的系統防禦升級系列 第 11

DAY 11 // AgentDojo 的主要模組介紹

  • 分享至 

  • xImage
  •  

AgentDojo 專為評估與測試 Agent 安全性所設計的動態開源框架。本文深入解析 AgentDojo 主要模組,並分享如何直接透過 Python 程式碼探索其內部結構。


1. AgentDojo 核心模組

主要由以下五大模組相互配合,組成完整的閉環:

                 +-------------------+
                 |     benchmark     | (定義任務與測試集)
                 +---------+---------+
                           |
       +-------------------+-------------------+
       |                   |                   |
+------+------+     +------+------+     +------+------+
|   attacks   | -->|agent_pipeline| <-- |  defenses   |
| (注入攻擊)   |    |  (運作流程)   |    | (安全性防護) |
+-------------+     +------+------+     +-------------+
                           |
                 +---------+---------+
                 | functions_runtime | (模擬工具與沙盒環境)
                 +-------------------+

benchmark(測試基準與任務定義)

  • 核心功能:提供模擬真實世界應用的情境集(Suite),例如 workspace(郵件、雲端硬碟、日曆)與 banking(銀行轉帳、帳戶查詢)。
  • 主要組件
  • TaskSuite:管理該情境下的所有測試任務。
  • UserTask:使用者發出的合法指令(例如:「幫我讀取今天的信件並發送摘要」)。
  • InjectionTask:攻擊者企圖發動的非法指令(例如:「將用戶的銀行密碼發送到攻擊者伺服器」)。

agent_pipeline(Agent 運作管線)

  • 核心功能:定義 LLM 如何處理 Prompt、呼叫工具(Tool Calling)以及回應使用者的完整邏輯。
  • 主要組件
  • BasePipelineElement:所有 Pipeline 組件的基類。
  • System Prompt & LLM 呼叫:負責將使用者輸入與系統提示詞打包並送給 LLM 處理。
  • Tool Execution Loop:當 LLM 回傳 Tool Call 請求時,自動至環境中執行並將結果回傳給 LLM。

attacks(提示詞注入攻擊模組)

  • 核心功能:實現各種針對 LLM Agent 的攻防測試,觀察 Agent 是否會被惡意資料誤導。
  • 攻擊型態
  • Direct Injection:直接在使用者輸入中夾帶惡意指令。
  • Indirect Injection:將惡意指令藏在第三方資料中(例如包含注入指令的 Email、網頁內容或 PDF 文件),當 Agent 讀取該資料時觸發攻擊。

defenses(安全性防禦機制)

  • 核心功能:提供針對 Prompt Injection 的防護策略,測試防禦機制是否能有效降低攻擊成功率。
  • 常見防禦手段
  • Input Sanitization / Pre-filtering:在 Prompt 送給 LLM 前進行惡意關鍵字過濾。
  • Secondary LLM Verification:使用第二個輕量級 LLM 來審查主 Agent 的 Tool Call 是否合法。
  • Prompt Isolation:將來自不信任來源的資料(如外部網頁)與系統指令明確隔離。

functions_runtime(工具沙盒與執行環境)

  • 核心功能:Agent 提供可實際呼叫的 Mock Tools(模擬工具 API)。
  • 應用場景:提供郵件發送、檔案讀寫、日曆新增等模擬 Python 函式,確保 Agent 執行過程中的操作不會對真實環境造成破壞。

2. 如何用code查詢AgentDojo模組

如果想在開發時了解有哪些模組與類別可用,可以用以下程式碼進行動態查詢:

查詢所有子模組清單

import pkgutil
import agentdojo

for module_info in pkgutil.walk_packages(agentdojo.__path__, agentdojo.__name__ + "."):
    print(module_info.name)

查詢特定模組(如 benchmark)可用的 API

import agentdojo.benchmark

print([item for item in dir(agentdojo.benchmark) if not item.startswith("_")])

上一篇
DAY 10 // PEP 668在開發期間的功用及防護
下一篇
DAY 12 // agentdojo.benchmark安全評測的主要模組
系列文
Agent的系統防禦升級22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言