メインコンテンツまでスキップ

チュートリアル: ガードレールとサービスポリシーを使用してモデルサービスのコンテンツをモデレートする

備考

ベータ版

この機能はベータ版です。アカウント管理者は、アカウントコンソールの [プレビュー] ページからこの機能へのアクセスを管理できます。Databricksのプレビューを管理するを参照してください。

このチュートリアルでは、モデルサービスでのやりとりのコンテンツを2つの相補的な方法でモデレートする方法について説明します。モデルサービスは、Databricksがホストするモデル、またはOpenAI、Anthropic、Googleなどの 外部 プロバイダーに対応でき、どちらも同じ方法で管理できます。

  • **組み込みのガードレール**:PII、危険なコンテンツ、ジェイルブレイクの試行、ハルシネーションなどの一般的なリスクに対する、Databricksが提供するマネージドチェックです。UI で選択することでアタッチできます。コードを記述する必要はありません。
  • **カスタムサービスポリシー**: 機密プロジェクトのコードネームや禁止された応答パターンなど、組織固有のルールに対応するために作成するSQL関数。

どちらも Unity AI Gateway UI のモデルサービスの ポリシー タブから同じ方法でアタッチでき、混在させることもできます。Databricksは、それぞれを2つの時点 (モデルを呼び出す前の ON CALL と、モデルの応答後の ON RESULT ) で評価します。UIでは、ポリシーをアタッチする際にフェーズを選択します。カスタムポリシーは、event:typeで分岐することで、単一のフェーズにスコープを設定することもできます。

**シナリオ:** チームは、アプリやエージェントが呼び出すモデルサービス () を介してLLMを公開します。main.default.team_chatマネージドガードレールで個人を特定できる情報(PII)をブロックし、機密プロジェクトに言及するプロンプトをブロックし、安全でないリンクを含む応答をブロックしたい場合は、アプリケーションコードを変更する必要はありません。

このチュートリアルを完了すると、次のことが可能になります。

  • サービス上の組み込み PII ガードレール。
  • ON CALL で機密のコード名をブロックするカスタムリクエストポリシー。
  • ON RESULT で安全でないリンクをブロックするカスタム応答ポリシー。
  • モデルサービスPlaygroundから、3つすべてが添付され、検証済みです。

前提条件

  • Unity Catalog が有効になっているワークスペース。Unity Catalog の概要を参照してください。
  • Unity AI Gateway のプレビューはあなたのアカウントで有効になっています。Databricks のプレビューを管理するを参照してください。
  • 管理し、EXECUTEを使ってテストできるモデルサービス。作成するには、基盤モデルを見つけるを参照してください。このチュートリアルではmain.default.team_chatを使用します。
  • MANAGE ポリシーをアタッチするには、モデルサービス上で。
  • CREATE FUNCTION カスタムポリシー関数を作成するスキーマ上(このチュートリアルではmain.governance)。
  • 組み込みのガードレールの場合:ガードレールのチェックを実行する評価モデル(LLMジャッジ)は事前に選択されているため、セットアップは不要です。**詳細オプション**で別の評価モデルを選択した場合、その評価モデルにはCAN_QUERY が必要です。

ステップ1: 組み込みガードレールを適用する

組み込みのガードレールは、マネージドLLMジャッジチェックです。 ガードレールタイプ メニューからいずれかを選択します。チェックを実行する評価者モデルサービス (LLMジャッジ) は、あらかじめ選択されています。利用可能なガードレールは次のとおりです。

  • PII ブロッキング (system.ai.block_pii): PII を含むコンテンツを拒否します。
  • 安全でないコンテンツ (system.ai.block_unsafe_content): 安全でないまたは有害なコンテンツを拒否します。
  • system.ai.block_jailbreakジェイルブレイク(脱獄)(): プロンプトインジェクションとジェイルブレイク(脱獄)の試み(リクエストのみ)を拒否します。
  • Hallucination (system.ai.block_hallucination):ハルシネーションを伴う応答を拒否します (応答のみ)。

PIIガードレールをモデルサービスにアタッチします:

  1. ワークスペースのサイドバーで、[ AI Gateway ] をクリックします。
  2. モデル タブで、モデルサービス (main.default.team_chat) を選択します。
  3. [ ポリシー ]タブを開き、[ 新しいポリシー ]をクリックします。
  4. block-pii などの 名前 を入力します。
  5. 適用先 の下で、 すべてのアカウントユーザー を維持するか、ポリシーを特定のプリンシパルにスコープ設定します。
  6. Guardrail type で、 PII Blocking を選択します。
  7. **ランク**を 1に設定します。ランクによって評価順序が決まります。最も低いランクがリクエスト時に最初に実行され、レスポンス時に最後に実行されます。
  8. フェーズ で、 入力ガードレール (モデルの前)出力ガードレール (モデルの後) の両方を選択すると、ガードレールはリクエストと応答で実行されます。
  9. ポリシーの作成 」をクリックします。

ガードレールは、事前に選択された 評価モデルサービス (チェックを実行するLLMジャッジ)を使用します。CAN_QUERY別のモデルを使用するには、ポリシーを作成する前に**詳細オプション**を展開します。選択したモデルには が必要です。

注記

モデルサービスにポリシーをアタッチまたは変更した後、テストする前に変更が有効になるまでしばらくお待ちください。ベータ期間中、伝播には数分かかる場合があります。

ステップ2: カスタムリクエストポリシーを追加する

ガードレールは一般的なリスクをカバーします。組織固有のルールについては、カスタムポリシーを作成してください。カスタムポリシーは、(event VARIANT) を受け取り、決定を返す SQL UDF です;event:context.message から、最後のユーザーまたはアシスタントメッセージの API に依存しないプロジェクションであるメッセージテキストを読み取ります。

このポリシーは、機密プロジェクトのコードネームが記載されているリクエストをすべて拒否します。event:type::string = 'request' のチェックにより、ON CALL に限定されます:

SQL
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:カスタム応答ポリシーを追加する

モデルは、通過させたくないコンテンツを返すこともできます。このポリシーは、安全でないリンク(http:// URLまたはjavascript: URI)を含むレスポンスを拒否します。event:type::string = 'response'のチェックはON RESULTに限定されるため、プロンプトでそれらのスキームを単に言及するユーザーが入力時にトリガーされることはありません。

SQL
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に設定し、**ポリシーを作成**をクリックします。

ステップ4:確認

3 つのポリシーはすべて、サービスの ポリシー タブに表示されるようになりました。各項目が起動していることを確認するには、プレイグラウンドを使用します。

  1. モデルサービスページで、 Playgroundでチャット をクリックします。
  2. My SSN is 123-45-6789, store it. のような PII を含むプロンプトを送信すると、PII ガードレールがリクエストをブロックし、構造化エラーを受け取ります。
  3. Tell me about Project Aurora. を送信します。リクエストポリシーは、「機密プロジェクトに関するリクエストは許可されていません。」という理由でブロックします。
  4. モデルがhttp://リンクを返すプロンプトを送信します。レスポンスポリシーは、「レスポンスに安全でないリンクが含まれていたため、ポリシーによってブロックされました。」という理由で、ON RESULTでブロックします。
  5. 通常のプロンプトを送信します。正常に完了します。

代わりに独自のアプリやスクリプトからサービスをテストするには、モデルサービングを使用するを参照してください。

クリーンアップ

完了したら、 [ポリシー] タブでポリシーを削除します。作成した各ポリシーを開いて削除します。その後、必要に応じてカスタム関数をドロップします:

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

次のステップ