Aller au contenu principal

Tutoriel : ajouter des garde-fous de politique de service à un service de modèle

info

Bêta

Les politiques de service sont en version bêta. Unity Gateway est disponible de manière générale, mais ses fonctionnalités bêta sont activées séparément. Un administrateur de compte doit activer les fonctionnalités bêta de Unity Gateway depuis la page Aperçus de la console de compte. Consultez Gérer les aperçus Databricks.

Ce tutoriel explique comment ajouter des garde-fous à un service de modèle, de deux manières complémentaires. Sur Databricks, les garde-fous sont des politiques de service. Un service de modèle peut servir d’interface pour un modèle hébergé par Databricks ou un fournisseur externe tel qu’OpenAI, Anthropic ou Google, et vous gérez les deux de la même manière :

  • Stratégies de service intégrées (garde-fous) : vérifications gérées et fournies par Databricks pour les risques courants tels que les PII, les contenus dangereux, les tentatives d'évasion de sécurité et les hallucinations. Vous en attachez un en le sélectionnant dans l'interface utilisateur, sans code à écrire.
  • Stratégies de service personnalisées : fonctions SQL que vous écrivez pour des règles spécifiques à votre organisation, telles qu'un nom de code de projet confidentiel ou un modèle de réponse interdit.

Pour les concepts de politique de service, les garde-fous intégrés et la référence complète de création, consultez Politiques de service pour les actifs sécurisables d'IA, Créer et attacher une politique de service, et Référence des fonctions de politique de service.

Vous les attachez tous deux de la même manière, depuis l'onglet Policies d'un service de modèle dans l'interface utilisateur de Unity Gateway, et vous pouvez les combiner. Databricks évalue chacun d'eux à deux moments :

  • La phase d'entrée (ON CALL) avant qu'elle n'invoque le modèle.
  • La phase de sortie (ON RESULT) après la réponse du modèle.

Dans l'interface utilisateur, vous sélectionnez la phase lorsque vous joignez la politique. Une politique personnalisée peut également se limiter à une phase en se ramifiant sur event:type.

Scénario : votre équipe expose un LLM via un service de modèle (main.default.team_chat) appelé par des applications et des agents. Vous souhaitez bloquer les contenus dangereux ou nuisibles avec un garde-fou géré, bloquer tout prompt mentionnant un projet confidentiel et bloquer les réponses contenant un Link non sécurisé, le tout sans modifier le code de l'application.

À la fin de ce didacticiel, vous aurez :

  • Un garde-fou intégré contre les contenus dangereux sur le service.
  • Une politique de requête personnalisée qui bloque un nom de code confidentiel lors de la phase d'entrée (ON CALL).
  • Une politique de réponse personnalisée qui bloque les links non sécurisés lors de la phase de sortie (ON RESULT).
  • Les trois sont attachés et vérifiés à partir du playground du service de modèle.

Prérequis​

  • Un Workspace activé pour Unity Catalog. Consultez Se familiariser avec Unity Catalog.
  • Les fonctionnalités bêta de Unity Gateway activées pour votre compte, qui activent les politiques de service et les autres capacités de la version bêta de Unity Gateway. Consultez Gérer les aperçus Databricks.
  • Un service de modèle à gouverner, et EXECUTE dessus pour que vous puissiez tester. Pour en créer un, consultez Créer un service de modèle personnalisé. Ce didacticiel utilise main.default.team_chat.
  • MANAGE sur le Service de modèle, pour attacher des politiques.
  • CREATE FUNCTION sur le schéma où vous créez les fonctions de politique personnalisées (main.governance dans ce tutoriel).
  • Pour le garde-fou intégré : le modèle d’évaluation qui exécute la vérification du garde-fou (le juge LLM) est présélectionné, aucune configuration n’est donc nécessaire. Si vous sélectionnez un autre évaluateur sous Options avancées , vous avez besoin de EXECUTE sur celui-ci, ainsi que de USE CATALOG et de USE SCHEMA sur son catalogue et son schéma.

Étape 1 : Appliquer un garde-fou intégré​

Les garde-fous intégrés sont des vérifications de juge LLM gérées. Vous en sélectionnez un dans le menu **Type de garde-fou** ; le service de modèle d'évaluation qui exécute la vérification (le juge LLM) est présélectionné pour vous. Les garde-fous disponibles sont :

  • Contenu dangereux (system.ai.block_unsafe_content) : refuse le contenu dangereux ou nuisible.
  • Jailbreak (system.ai.block_jailbreak) : refuse les tentatives d'injection de prompt et de jailbreak (requêtes uniquement).
  • Hallucination (system.ai.block_hallucination) : refuse les réponses hallucinées (réponses uniquement).

Attachez le garde-fou de contenu dangereux à votre service de modèle :

  1. Dans la barre latérale du workspace, cliquez sur AI Gateway .
  2. Dans l'onglet **Modèles**, sélectionnez votre service de modèlemain.default.team_chat ().
  3. Ouvrez l'onglet Politiques , puis cliquez sur Nouvelle politique .
  4. Saisissez un **nom**, tel block-unsafe-content que.
  5. Sous Appliqué à , maintenez Tous les utilisateurs du compte , ou définissez la portée de la politique à des principaux spécifiques.
  6. Dans Type de garde-fou , sélectionnez Contenu dangereux .
  7. Définissez Rang sur 1. Le rang détermine l'ordre d'évaluation : le rang le plus bas s'exécute en premier sur la requête et en dernier sur la réponse.
  8. Sous Phase , sélectionnez à la fois garde-fous d'entrée (avant le modèle) et garde-fous de sortie (après le modèle) , afin que le garde-fou s'exécute sur les requêtes et les réponses.
  9. Cliquez sur Créer une politique .

Le garde-fou utilise un service de modèle d’évaluation pré-sélectionné (le juge LLM qui exécute la vérification). Pour utiliser un autre modèle, développez les options avancées avant de créer la politique. Vous avez besoin de EXECUTE sur le service de modèle que vous sélectionnez, ainsi que de USE CATALOG et de USE SCHEMA sur son catalogue et son schéma.

remarque

Après avoir joint ou modifié une politique sur un service de modèle, accordez un court délai pour que la modification prenne effet avant d’effectuer des tests. Pendant la version bêta des politiques de service, la propagation peut prendre quelques minutes.

Étape 2 : ajoutez une politique de requête personnalisée​

Les garde-fous couvrent les risques courants. Pour une règle spécifique à votre organisation, rédigez une politique personnalisée, qu'il s'agisse d'une fonction SQL ou d'une politique de type LLM en tant que juge. Ce tutoriel utilise SQL. Une politique SQL personnalisée est une UDF qui prend (event VARIANT) en paramètre et renvoie une décision. Lisez le texte du message provenant de event:context.message, une projection agnostique d'API du dernier message de l'utilisateur ou de l'assistant.

Cette politique refuse toute demande mentionnant un nom de code de projet confidentiel. La vérification event:type::string = 'request' la limite à la phase d'entrée (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 et lower font partie du sous-ensemble SQL pris en charge dans les corps de stratégie. Pour la liste complète et les règles d'écriture d'une fonction de stratégie, consultez la référence des fonctions de stratégie de service.

Attachez la fonction en tant que politique personnalisée, limitée à la phase de requête :

  1. Sous l'tab Policies du service de modèle, cliquez sur New policy et entrez un Name , tel que block-codename.
  2. Sous **Type de garde-fou**, sélectionnez **Personnalisé**.
  3. Cliquez sur Fonction personnalisée , puis sur Sélectionner la fonction , et sélectionnez main.governance.block_confidential_codename.
  4. Sous Phase , sélectionnez uniquement Garde-fous d'entrée (Avant le modèle) , car il s'agit d'une politique de requête.
  5. Définissez le **rang** sur, puis cliquez sur **Créer une 10 politique**.

Étape 3 : Ajouter une stratégie de réponse personnalisée​

Un modèle peut également renvoyer du contenu que vous ne souhaitez pas laisser passer. Cette politique refuse une réponse contenant un Link non sécurisé (une URL http:// ou un URI javascript:). La vérification event:type::string = 'response' le limite à la phase de sortie (ON RESULT), de sorte qu'un utilisateur qui mentionne simplement ces schémas dans un prompt ne le déclenche pas lors de l'entrée :

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;

Associez la fonction en tant que stratégie personnalisée, dont la portée est limitée à la phase de réponse :

  1. Dans l'onglet **tab**, cliquez sur **Nouvelle stratégie** et saisissez un **Nom**, tel block-unsafe-links que.
  2. Dans Type de garde-fou , sélectionnez Personnalisé , puis sélectionnez main.governance.block_unsafe_links sous Fonction personnalisée .
  3. Sous Phase , sélectionnez uniquement Garde-fous de sortie (après le modèle) , car il s'agit d'une politique de réponse.
  4. Définissez le **rang** sur, puis cliquez sur **Créer une 20 politique**.

Étape 4 : Vérifier​

Les trois politiques apparaissent maintenant dans l'onglet Policies du service. Utilisez le playground pour confirmer que chacun se déclenche :

  1. Sur la page du service de modèle, cliquez sur **Discuter dans Terrain de jeux**.
  2. Envoyez un prompt qui demande du contenu dangereux ou nuisible. La barrière de sécurité pour contenu dangereux le bloque, et la réponse indique que le contenu a été bloqué par la politique.
  3. Envoyer Tell me about Project Aurora. La politique de demande la bloque avec la raison : Les demandes concernant des projets confidentiels ne sont pas autorisées.
  4. Envoyez une invite qui demande au modèle de renvoyer un http:// Link. La politique de réponse le bloque lors de la phase de sortie (ON RESULT) avec le motif La réponse contenait un Link non sécurisé et a été bloquée par la politique.
  5. Envoyez une invite ordinaire. Cela renvoie une complétion normale.

Pour tester le service depuis vos propres applications ou scripts à la place, consultez Fondamentaux des requêtes et modèles d'intégration.

Nettoyer​

Une fois que vous avez terminé, supprimez les politiques dans l'onglet **Politiques** : ouvrez chaque politique que vous avez créée et supprimez-la. Ensuite, supprimez éventuellement les fonctions personnalisées :

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

Étapes suivantes​