上一章 Lesson 035:Prompt Injection 講了一個很重要的結論:
不要把模型本身當成唯一安全邊界。
這時你會開始碰到一堆看起來很像的詞:
- Guardrail
- Safeguard
- Moderation
- Alignment
- System Prompt
- Uncensored Model
網路討論常把它們全部簡化成:
有限制 vs 沒限制
但真正系統不是一個開關,而是很多層。
先把模型和應用程式分開
可以先畫一張簡化圖:
使用者
↓
App / Product Policy
↓
Input Guardrail / Moderation
↓
System Prompt / Instructions
↓
Model
↓
Tool Permission / Runtime
↓
Output Guardrail / Moderation
↓
使用者或外部系統
不同產品不一定完全照這張圖,但它能幫你看到:
「模型本身怎麼訓練」和「App 外面加了哪些控制」是不同問題。
Alignment 是什麼?
對齊(Alignment) 是一個很大的研究與工程概念,粗略來說,是讓 AI 系統的行為更符合人類意圖、規則、安全需求與期望。
模型可以透過不同後訓練方法,學會:
- 遵循指令
- 拒絕某些危險要求
- 用特定格式回答
- 比較符合人類偏好
這些行為可能已經部分存在模型權重裡。
所以不是所有安全行為都只來自 System Prompt。
System Prompt 是另一層
Lesson 005:Prompt 已經講過:Prompt 是把任務、Context 與限制交給模型的方式。
System Prompt 通常是應用程式在較高指令層提供的規則。
例如概念上:
You are a customer-support assistant.
Never reveal internal account secrets.
這能影響模型行為,但它仍然是 Context 中的指令層。
所以在 Prompt Injection 場景裡,不應把 System Prompt 當成唯一安全機制。
Moderation 是什麼?
內容審查(Moderation) 可以在模型呼叫前後額外分析內容。
概念流程:
User Input
↓
Input Moderation
↓
Main Model
↓
Output Moderation
↓
Response
Moderation 可以是:
- 專用分類模型
- 規則引擎
- 關鍵字 / Pattern
- 多層安全服務
它和「主模型本身會不會拒答」不是同一件事。
Guardrail 和 Safeguard 是什麼?
這兩個詞在業界沒有永遠唯一、完全一致的定義。
通常可以把 Guardrail / Safeguard 理解成:
為了限制 AI 系統不安全、越權或不符合規則的行為,而加上的一層或多層控制。
它可能包含:
- Prompt Policy
- Input Filter
- Output Filter
- Tool Allowlist
- Schema Validation
- Human Approval
- Sandbox
- Rate Limit
- Secret Isolation
- Audit Log
所以 Guardrail 不一定是「模型外面一個 Filter」。
它更像安全設計的集合詞。
最重要的一層:Tool Permission
如果 Agent 可以呼叫 Tool,安全就不能只看文字。
例如:
ALLOWED_TOOLS = {
"search_docs",
"calculator",
}
def can_run(tool_name):
return tool_name in ALLOWED_TOOLS
這和 Lesson 035 的概念一樣。
逐行看:
ALLOWED_TOOLS明確列出允許的 Tool。can_run()接收 Agent 想執行的 Tool Name。- 只有在白名單裡才回傳
True。
這個限制是在應用 Runtime 做的。
就算模型文字輸出說:
我要執行 delete_database
如果 Runtime 根本沒有暴露這個 Tool,或權限檢查拒絕它,就不會因為模型「想做」而真的執行。
Uncensored Model 到底是什麼?
Uncensored Model 不是一個嚴格、統一的技術標準。
社群裡常用它描述:
- 拒答較少
- 經過去除部分安全 / 拒答傾向的 Fine-tuning
- 以特定 Dataset 後訓練
- 對某些敏感主題限制較少
但看到 uncensored 這個 Label,不能自動推導:
更聰明
更真實
更完整
更適合所有任務
它只是在描述某種行為取向,而且不同模型作者使用這個詞的方式可能不一致。
Uncensored 不等於 Base Model
基礎模型(Base Model) 通常指預訓練完成、尚未經某些 Instruction / Chat 後訓練流程的模型版本。
Base Model 可能:
- 不太會按照聊天格式回答
- 不一定擅長 Instruction Following
- 不代表沒有任何資料或訓練限制
而 Uncensored Model 常常反而是經過額外 Fine-tuning 的模型,只是目標是降低某些拒答模式。
所以:
Base ≠ Uncensored
Open-weight 也不等於 Uncensored
Lesson 025:Local LLM 已經介紹過:Open-weight 指模型權重可以在授權條件下取得,但不等於完全 Open Source。
同樣地:
Open-weight ≠ Uncensored
一個 Open-weight 模型可以有完整的 Instruction Tuning 與安全後訓練。
也可能有人基於它建立不同 Fine-tune。
「能下載」描述的是取得與部署方式;「拒答傾向」描述的是模型行為。
是不同維度。
Local 也不等於沒有 Guardrail
Lesson 030:Ollama 已經講過 Local Model 可以透過本機 API 提供服務。
你完全可以建立:
Local LLM
+
Input Moderation
+
Tool Allowlist
+
Human Approval
+
Sandbox
所以 Local 只是在說模型主要在哪裡執行。
不是在說:
一定無審查
一定沒安全層
一定更自由
Safeguard 會讓模型能力變差嗎?
有時安全限制確實可能造成 False Positive,也就是把原本合理的 Request 錯誤阻擋。
所以安全設計需要平衡:
- Safety
- Utility
- False Positive
- User Experience
- Task Risk
但這不代表「所有 Guardrail 都只是讓模型變笨」。
例如限制 Agent 不能刪 Production Database,不是在降低它寫摘要的能力。
安全控制應該盡量和實際風險對齊。
高風險系統需要 Defense in Depth
縱深防禦(Defense in Depth) 的直覺是:不要只靠單一防線。
例如一個能操作公司系統的 Agent:
Model Alignment
+
System Instructions
+
Input Validation
+
Prompt Injection Defense
+
Tool Permission
+
Human Approval
+
Sandbox
+
Audit Log
其中一層失效,不代表整個系統立刻失控。
這比期待模型「永遠聽話」更像真正的資安工程。
模型下載前應該看 Model Card
Lesson 029:Hugging Face 已經提過 Model Card。
如果模型標示:
uncensored
abliterated
base
instruct
roleplay
不要只看名稱。
應該檢查:
- Base Model 是誰
- Fine-tuning Dataset
- 作者說明
- License
- Benchmark
- Known Limitations
- 是否有 Safety Evaluation
模型名稱只是入口,不是完整風險評估。
「更少拒答」什麼時候可能有合理用途?
有些合法情境確實需要模型處理敏感內容,例如:
- 資安研究
- 有害內容分類
- 醫療研究文本分析
- 法律文件分析
- Moderation Dataset 建立
但「模型願意回答更多」不等於應用程式就應該給它更多 Tool 權限。
文字生成自由度和外部行動權限必須分開評估。
一句話帶走
Guardrail / Safeguard 是 AI 系統不同層的安全控制;Uncensored 描述的通常是較少拒答的一種模型行為取向,不等於 Base、Open-weight、Local 或更強。真正安全的 Agent 要把模型行為和 Runtime 權限分開設計。
留言
有想法、疑問或想補充的地方,都可以留在這裡。
還沒有留言,來當 1F 吧。