Important
服務政策目前仍處於 測試階段。 Unity Gateway 已正式推出,但服務政策需另行啟用。 Workspace 管理員可透過選擇 Unity Gateway 服務政策預覽,從預覽頁面控制服務政策的存取。 請參閱管理工作區層級預覽。
本教學將以兩種互補的方式,逐步說明如何在 模型服務中加入護欄。 在 Azure Databricks 中,guardrails 是服務原則。 模型服務可以是 Azure Databricks 託管的模型,也可以是外部供應商如 OpenAI、Anthropic 或 Google,兩者的治理方式相同:
- 內建服務政策(護欄):由 Azure Databricks 管理的常見風險檢查,如 PII、不安全內容、越獄嘗試及幻覺。 你只要在 UI 裡選擇它就能附加,不需要寫程式碼。
- 自訂服務政策:你為組織特定規則所撰寫的 SQL 函式,例如機密專案代號或被禁止的回應模式。
如需了解服務原則概念、內建護欄及完整撰寫參考資料,請參閱 AI 可保護物件的服務原則、建立並附加服務原則,以及 服務原則函式參考。
你可以用同樣方式連接兩者,從 Unity Gateway UI 的模型服務的 政策 標籤籤中連結,並且可以混合使用。 Azure Databricks 會在兩個時間點評估每一項:
- 在呼叫模型之前的輸入階段(ON CALL)。
- 模型回應後的輸出階段(ON RESULT)。
在使用者介面中附加原則時,請選取階段。 自訂政策也可以透過根據 event:type 進行分支,將其適用範圍限定於單一階段。
情境:你的團隊透過模型服務(Model Service,main.default.team_chat)對外提供 LLM,供應用程式和代理程式呼叫。 你想要用管理型護欄阻擋不安全或有害的內容,封鎖任何提及機密專案的提示,以及阻擋包含不安全連結的回應,且不需更改應用程式代碼。
完成這個教學後,你會得到:
- 服務內建的不安全內容防護機制。
- 一個自訂請求政策,能在輸入階段(ON CALL)封鎖機密代號。
- 一個自訂回應政策,能在輸出階段(ON RESULT)阻擋不安全的連結。
- 這三者都已從模型服務的遊樂場連接並驗證。
先決條件
- 已啟用 Unity Catalog 的工作區。 請參閱 開始使用 Unity 目錄。
- Unity Gateway 服務政策預覽已為你的工作區開啟。 Workspace 管理員會從 預覽 頁面開啟它。 請參閱管理工作區層級預覽。
- 用於治理的模型服務,並在其上
EXECUTE以便進行測試。 要建立一個服務,請參見 建立自訂模型服務 。 這個教學使用main.default.team_chat。 - 在 Model Service 上按一下
MANAGE,以附加政策。 -
CREATE FUNCTION在這個教學中,建立自訂政策函式main.governance的架構。 - 對於內建護欄:執行護欄檢查的評估器模型(LLM judge)是預先選擇的,因此不需要設定。 如果你在 進階選項中選擇不同的評估器,你需要在其上具有
EXECUTE,並在其目錄和結構描述上具有USE CATALOG和USE SCHEMA。
步驟一:安裝內建護欄
內建防護機制是受管理的 LLM 評判檢查。 你可以從 護欄類型 選單中選擇一個;執行檢查的評估模型服務(LLM judge)會預先為你選定。 可用的護欄包括:
-
不安全內容 (
system.ai.block_unsafe_content):拒絕不安全或有害內容。 -
Jailbreak (
system.ai.block_jailbreak):拒絕即時注入與越獄嘗試(僅限請求)。 -
幻覺 (
system.ai.block_hallucination):否認幻覺反應(僅限反應)。
將不安全內容護欄安裝在您的模型服務上:
- 在工作區側邊欄,點選 AI 閘道。
- 在 模型 標籤中,選擇你的模型服務(
main.default.team_chat)。 - 打開 政策 標籤,然後點選 新政策。
- 輸入 一個名稱,例如
block-unsafe-content。 - 在 「套用至」中,保留 所有帳戶使用者,或將政策範圍限定於特定主要負責人。
- 在 護欄類型中,選擇 不安全內容。
- 將 Rank 設為
1。 Rank 決定評估順序:Rank 值最低者會在處理請求時最先執行,並在處理回應時最後執行。 - 在 階段中,選擇輸入 護欄(模型前 )和 輸出護欄(模型後),使護欄能依請求與回應運行。
- 點擊 [建立策略]。
護欄使用預先選定的 評估者模型服務 (LLM 評審,負責檢查)。 若要使用不同模型,請在建立原則前展開 進階選項。 你需要在所選的模型服務上具有 EXECUTE,並在其目錄和結構描述上具有 USE CATALOG 和 USE SCHEMA。
Note
在你附加或更改模型服務的政策後,請給予變更生效的短暫時間,然後再進行測試。 在服務政策測試版期間,傳輸可能需要幾分鐘。
步驟 2:新增自訂請求政策
護欄涵蓋了常見的風險。 針對你組織的專屬規則,可以寫一個自訂政策,可能是 SQL 函式或 LLM-as-a-judge 政策。 這個教學使用 SQL。 自訂 SQL 原則是一種 UDF,用來接收 (event VARIANT) 並回傳決策。 從 event:context.message 讀取訊息文字,這是最後使用者或助理訊息的與 API 無關的投影表示。
此政策拒絕任何提及機密專案代號的請求。
event:type::string = 'request' 這項檢查會將其限制在輸入階段(ON CALL):
CREATE OR REPLACE FUNCTION main.governance.block_confidential_codename(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'request'
AND contains(lower(event:context.message::string), 'project aurora')
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Requests about confidential projects are not permitted.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;
contains 以及 lower 屬於政策機構支援的 SQL 子集。 完整清單及撰寫政策函式的規則,請參見服務政策函式參考。
將函式附加為自訂政策,範圍限定在請求階段:
- 在模型服務的 政策 標籤中,點選 新政策 並輸入 名稱,例如
block-codename。 - 在 護欄類型中,選擇 自訂。
- 點選 自訂函數,然後 選擇函數,再選
main.governance.block_confidential_codename。 - 在 階段下,只選擇 輸入防護機制(模型前),因為這是請求政策。
- 將 Rank 設為
10,然後點擊 建立政策。
步驟 3:新增自訂回應政策
模型也可能回傳你不想通過的內容。 此政策拒絕包含不安全連結(URL或 http://javascript: URI)的回應。
event:type::string = 'response' 檢查將其侷限於輸出階段(ON RESULT),因此,僅僅在提示詞中提及這些方案的使用者,也不會在輸入階段就觸發這項檢查:
CREATE OR REPLACE FUNCTION main.governance.block_unsafe_links(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN
CASE
WHEN event:type::string = 'response'
AND (contains(lower(event:context.message::string), 'http://')
OR contains(lower(event:context.message::string), 'javascript:'))
THEN to_variant_object(named_struct('result', 'DENY', 'reason', 'Response contained an insecure link and was blocked by policy.'))
ELSE to_variant_object(named_struct('result', 'ALLOW', 'reason', ''))
END;
將函式附加為自訂政策,範圍涵蓋回應階段:
- 在 政策 標籤中,點選 新政策 並輸入 名稱,例如
block-unsafe-links。 - 在護欄類型中,選擇自訂,然後在
main.governance.block_unsafe_links下選擇。 - 在 階段 下,僅選取 輸出防護機制(模型之後),因為這是回應政策。
- 將 Rank 設為
20,然後點擊 建立政策。
步驟四:驗證
這三項保單現在都會出現在服務的 「政策 」分頁上。使用遊樂場確認每發子彈是否會發射:
- 在模型服務頁面上,按一下 在 Playground 中聊天。
- 傳送一個要求提供不安全或有害內容的提示。 不安全內容保護欄會阻擋該內容,回應報告指出該內容已被政策封鎖。
- 發送
Tell me about Project Aurora.請求政策阻擋了它,理由是 不允許關於機密專案的請求。 - 發送一個提示,讓模型回傳連結
http://。 回應策略會在輸出階段(ON RESULT)阻擋該訊息,原因為 回應包含不安全的連結,且被政策阻擋。 - 發送一個普通的提示。 它會回傳正常的完成結果。
若想從自己的應用程式或腳本測試服務,請參閱 查詢基礎與嵌入模型。
收拾整理
完成後,請在 「政策」 標籤中移除政策:打開你建立的每個政策並刪除它。 然後可以選擇性地移除自訂函式:
DROP FUNCTION IF EXISTS main.governance.block_confidential_codename;
DROP FUNCTION IF EXISTS main.governance.block_unsafe_links;