擴展模組目錄 - 未來功能模組的家
這個目錄用於放置 SHIELD 的擴展功能模組。每個模組都是一個獨立的功能單元,可以單獨開發、測試和部署。
攻擊端 (Actor) 目標端 (Target) 裁判端 (Judge)
├─ Garak ├─ 客戶 AI 系統 ├─Inspect AI
├─ FuzzyAI ├─ NeMo Guards ├─ GuardVal
├─ Gemma-CRACK └─ Vectorless RAG ├─ TruLens
├─ IBM ART ├─ Giskard
└─ Foolbox ├─ SHAP
└─ Captum
每個新模組應遵循以下目錄結構:
modules/
└── module-example/
├── README.md # 模組說明文件
├── __init__.py # Python 套件初始化
├── requirements.txt # 模組專屬依賴
├── config.py # 模組配置
├── main.py # 主要邏輯
├── utils.py # 工具函數
├── tests/ # 單元測試
│ ├── __init__.py
│ └── test_main.py
└── docs/ # 模組文檔
└── API.md
新增模組時,請複製以下模板到你的模組目錄:
# 🎯 Module Name
**簡短描述** - 一句話說明模組功能
---
## 📋 功能說明
- 功能 1
- 功能 2
- 功能 3
## 🚀 快速開始
### 安裝依賴
\`\`\`bash
cd modules/module-name
pip install -r requirements.txt
\`\`\`
### 使用範例
\`\`\`python
from modules.module_name import MainClass
# 使用範例
instance = MainClass()
result = instance.do_something()
\`\`\`
## 🔧 配置說明
配置項說明...
## 🧪 測試
\`\`\`bash
pytest tests/
\`\`\`
## 📚 API 文檔
詳見 [docs/API.md](docs/API.md)
模組可以引用 shared/ 目錄中的資源:
import os
# 取得 SHIELD 根目錄
SHIELD_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 引用共享資源
ASSETS_DIR = os.path.join(SHIELD_ROOT, "shared", "assets")
DATA_DIR = os.path.join(SHIELD_ROOT, "shared", "data")
import sys
import os
# 將 core 加入 Python 路徑
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "core"))
# 引用 core 功能
from llm import get_llm
from search import get_search_results
每個模組維護自己的 requirements.txt:
# module-example/requirements.txt
requests>=2.31.0
pydantic>=2.0.0
# 只列出此模組特有的依賴
Core 模組的依賴在 core/requirements.txt 中定義,所有模組都可以使用。
每個模組可以提供自己的 Dockerfile:
FROM python:3.11-slim
WORKDIR /app
# 複製模組代碼
COPY modules/module-example /app/module-example
# 安裝依賴
RUN pip install -r module-example/requirements.txt
CMD ["python", "-m", "module-example.main"]
模組應該通過環境變數配置:
# .env.example
MODULE_EXAMPLE_API_KEY=your_api_key
MODULE_EXAMPLE_DEBUG=false
MODULE_EXAMPLE_PORT=8080