Aller au contenu principal

Didacticiel : implémenter des garde-fous sur un service de modèle avec des politiques de service

info

Bêta

Les stratégies de service sont en version bêta. Unity AI 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 AI Gateway depuis la page Aperçus de la console de compte. Consultez Gérer les aperçus Databricks.

Ce tutoriel explique comment implémenter des garde-fous sur un service de modèle, de deux manières complémentaires. Sur Databricks, vous implémentez des garde-fous avec des politiques de service. Un service de modèle peut desservir un modèle hébergé par Databricks ou un fournisseur **externe** tel qu'OpenAI, Anthropic ou Google, et vous les gérez tous 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, à partir de la **tab Policies** d'un service de modèle dans l'interface utilisateur d'Unity AI Gateway, et vous pouvez les mélanger. Databricks évalue chacun à deux moments : **ON CALL** (avant qu'il n'appelle le modèle) et **ON RESULT** (après que le modèle a répondu). Dans l'interface utilisateur, vous sélectionnez la phase lorsque vous attachez la politique. Une politique personnalisée peut également se limiter à une seule phase en se basant 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 demande personnalisée qui bloque un nom de code confidentiel À LA DEMANDE.
  • Une politique de réponse personnalisée qui bloque les Link non sécurisés au niveau de 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 AI Gateway activées pour votre compte, qui activent les politiques de service et les autres capacités de la version bêta de Unity AI Gateway. Consultez Gérer les aperçus Databricks.
  • Un service de modèle pour gouverner, et EXECUTE dessus afin que vous puissiez effectuer des tests. Pour en créer un, consultez Créer et gérer des APIs de modèle (services de modèle). Ce tutoriel 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'évaluateur qui exécute la vérification du garde-fou (le juge LLM) est présélectionné, donc aucune configuration n'est nécessaire. Si vous sélectionnez un évaluateur différent sous Options avancées , vous avez besoin de CAN_QUERY dessus.

É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'évaluateur présélectionné (le juge LLM qui exécute la vérification). Pour utiliser un modèle différent, développez Options avancées avant de créer la politique ; vous avez besoin de CAN_QUERY sur le modèle que vous sélectionnez.

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. Une politique personnalisée est une UDF SQL qui prend (event VARIANT) et renvoie une décision ; lisez le texte du message de event:context.message, une projection indépendante de l'API du dernier message utilisateur ou assistant.

Cette politique refuse toute demande qui mentionne un nom de code de projet confidentiel. La vérification event:type::string = 'request' le limite à 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 faire passer. Cette politique refuse une réponse qui contient un Link non sécurisé (une URL http:// ou un URI javascript:). La vérification event:type::string = 'response' le limite à ON RESULT, de sorte qu'un utilisateur qui ne fait que mentionner ces schémas dans une invite ne le déclenche pas à 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. Le garde-fou de contenu dangereux bloque la demande et vous recevez une erreur structurée.
  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 fait que le modèle renvoie un http:// Link. La politique de réponse la bloque au niveau du résultat pour la raison suivante : 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 à partir de vos propres applications ou scripts, consultez Query model APIs (model services).

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