教學:為模型服務新增服務政策護欄

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):否認幻覺反應(僅限反應)。

將不安全內容護欄安裝在您的模型服務上:

  1. 在工作區側邊欄,點選 AI 閘道。
  2. 在 模型 標籤中,選擇你的模型服務(main.default.team_chat)。
  3. 打開 政策 標籤,然後點選 新政策。
  4. 輸入 一個名稱,例如 block-unsafe-content。
  5. 在 「套用至」中,保留 所有帳戶使用者,或將政策範圍限定於特定主要負責人。
  6. 在 護欄類型中,選擇 不安全內容。
  7. 將 Rank 設為 1。 Rank 決定評估順序:Rank 值最低者會在處理請求時最先執行,並在處理回應時最後執行。
  8. 在 階段中,選擇輸入 護欄(模型前 )和 輸出護欄(模型後),使護欄能依請求與回應運行。
  9. 點擊 [建立策略]。

護欄使用預先選定的 評估者模型服務 (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 子集。 完整清單及撰寫政策函式的規則,請參見服務政策函式參考。

將函式附加為自訂政策,範圍限定在請求階段:

  1. 在模型服務的 政策 標籤中,點選 新政策 並輸入 名稱,例如 block-codename。
  2. 在 護欄類型中,選擇 自訂。
  3. 點選 自訂函數,然後 選擇函數,再選 main.governance.block_confidential_codename。
  4. 在 階段下,只選擇 輸入防護機制(模型前),因為這是請求政策。
  5. 將 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;

將函式附加為自訂政策,範圍涵蓋回應階段:

  1. 在 政策 標籤中,點選 新政策 並輸入 名稱,例如 block-unsafe-links。
  2. 在護欄類型中,選擇自訂,然後在main.governance.block_unsafe_links下選擇。
  3. 在 階段 下,僅選取 輸出防護機制(模型之後),因為這是回應政策。
  4. 將 Rank 設為 20,然後點擊 建立政策。

步驟四:驗證

這三項保單現在都會出現在服務的 「政策 」分頁上。使用遊樂場確認每發子彈是否會發射:

  1. 在模型服務頁面上,按一下 在 Playground 中聊天。
  2. 傳送一個要求提供不安全或有害內容的提示。 不安全內容保護欄會阻擋該內容,回應報告指出該內容已被政策封鎖。
  3. 發送 Tell me about Project Aurora. 請求政策阻擋了它,理由是 不允許關於機密專案的請求。
  4. 發送一個提示,讓模型回傳連結 http:// 。 回應策略會在輸出階段(ON RESULT)阻擋該訊息,原因為 回應包含不安全的連結,且被政策阻擋。
  5. 發送一個普通的提示。 它會回傳正常的完成結果。

若想從自己的應用程式或腳本測試服務,請參閱 查詢基礎與嵌入模型。

收拾整理

完成後,請在 「政策」 標籤中移除政策:打開你建立的每個政策並刪除它。 然後可以選擇性地移除自訂函式:

DROP FUNCTION IF EXISTS main.governance.block_confidential_codename;
DROP FUNCTION IF EXISTS main.governance.block_unsafe_links;

下一步