Tutoriel : Ajout de garde-fous de stratégie de service à un service de modèle

Important

Les politiques de service sont en version Bêta. Unity Gateway est généralement disponible, mais les politiques de service sont activées séparément. Les administrateurs de l’espace de travail peuvent contrôler l’accès aux fonctionnalités de service depuis la page Aperçu en s’inscrivant à l’aperçu Stratégies de service de passerelle Unity AI. Consultez Gérer les versions préliminaires au niveau de l’espace de travail.

Ce tutoriel explique comment ajouter des garde-corps à un Service de modèle, de deux manières complémentaires. Sur Azure Databricks, les garde-corps sont des politiques de service. Un service de modèle peut faire face à un modèle hébergé Azure Databricks ou à un fournisseur externe tel qu’OpenAI, Anthropic ou Google, et vous régissez les deux de la même façon :

  • Règles de service intégrées (garde-fous) : contrôles gérés fournis par Azure Databricks pour les risques courants tels que les données personnelles identifiables, le contenu à risque, les tentatives de jailbreak et les hallucinations. Vous en attachez un en le sélectionnant dans l’interface utilisateur, sans code à écrire.
  • Stratégies de service personnalisées : les 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 connaître les concepts des stratégies de service, les garde-fous intégrés et la référence complète sur la création, consultez Stratégies de service pour les ressources sécurisables d’IA, Créer et attacher une stratégie de service et Référence des fonctions des stratégies de service.

Vous associez les deux de la même manière, depuis l’onglet Politiques d’un service modèle dans l’interface Unity Gateway, et vous pouvez les mélanger. Azure Databricks évalue chacun à deux points :

  • La phase d’entrée (ON CALL) avant qu’il n’invoque le modèle.
  • La phase de sortie (ON RESULT) après que le modèle a répondu.

Dans l’interface utilisateur, vous sélectionnez la phase lorsque vous attachez la stratégie. Une stratégie personnalisée peut également se limiter à une seule phase en effectuant un branchement sur event:type.

Scénario: Votre équipe expose un LLM via un service de modèle (main.default.team_chat) que les applications et les agents appellent. Vous souhaitez bloquer le contenu dangereux ou nuisible avec une protection gérée, bloquer toute invite mentionnant un projet confidentiel, et bloquer les réponses contenant un lien non sécurisé, le tout sans changer le code de l’application.

À la fin de ce tutoriel, vous disposez des points suivants :

  • Un mécanisme de protection intégré au service contre les contenus dangereux.
  • 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 liens non sécurisés lors de la phase de sortie (ON RESULT).
  • Tous les trois attachés et vérifiés depuis le Playground du service de modèles.

Prerequisites

  • Un espace de travail activé pour le catalogue Unity. Consultez Bien démarrer avec Unity Catalog.
  • L’aperçu des politiques de service Unity Gateway a été activé pour votre espace de travail. Un administrateur d’espace de travail l’active depuis la page Aperçus. Consultez Gérer les versions préliminaires au niveau de l’espace de travail.
  • Un service de modèles à régir et EXECUTE sur celui-ci pour pouvoir le tester. Pour en créer un, voir Créer un service de modèle personnalisé . Ce didacticiel utilise main.default.team_chat.
  • MANAGE sur le service de modèles, pour associer des stratégies.
  • CREATE FUNCTION sur le schéma dans lequel vous créez les fonctions de stratégie personnalisées (main.governance dans ce tutoriel).
  • Pour le garde-fou intégré : le modèle évaluateur qui exécute la vérification du garde-fou (le juge LLM) est préélectionné, donc aucune configuration n’est nécessaire. Si vous sélectionnez un évaluateur différent sous les options avancées, vous devez disposer de EXECUTE sur celui-ci, ainsi que de USE CATALOG et 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 gérées par un LLM faisant office d'évaluateur. Vous en sélectionnez un dans le menu Type de garde-fou; le service de modèles évaluateur qui exécute la vérification (l'évaluateur LLM) est présélectionné pour vous. Les garde-fous disponibles sont les suivants :

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

Associez le garde-fou contre les contenus dangereux à votre service de modèle :

  1. Dans la barre latérale de l’espace de travail, cliquez sur AI Gateway.
  2. Sous l’onglet Modèles , sélectionnez votre service de modèle (main.default.team_chat).
  3. Ouvrez l’onglet Stratégies , puis cliquez sur Nouvelle stratégie.
  4. Entrez un nom, tel que block-unsafe-content.
  5. Sous Appliqué à, conservez Tous les utilisateurs de compte ou limitez la stratégie à des principaux spécifiques.
  6. En mode Glissière de sécurité, sélectionnez Contenu Dangereux.
  7. Définissez le classement sur 1. Le rang définit l’ordre d’évaluation : le rang le plus bas s’exécute en premier lors de la requête et en dernier lors de la réponse.
  8. Sous Phase, sélectionnez à la fois les garde-fous d’entrée (avant le modèle) et les garde-fous de sortie (après le modèle), de sorte que le garde-fou s’exécute sur les demandes et les réponses.
  9. Cliquez sur Créer une stratégie.

Le garde-fou utilise un Service de modèles d’évaluation présélectionné (l'évaluateur LLM qui effectue la vérification). Pour utiliser un modèle différent, développez les Options avancées avant de créer la stratégie. Vous devez disposer de EXECUTE sur le service de modèle que vous sélectionnez, ainsi que de USE CATALOG et USE SCHEMA sur son catalogue et son schéma.

Note

Après avoir attaché ou modifié une stratégie sur un service de modèle, laissez un court délai pour que la modification prenne effet avant le test. Pendant la bêta des politiques de service, cela peut prendre quelques minutes pour se propager.

Étape 2 : Ajouter une stratégie de requête personnalisée

Les garde-fous couvrent les risques courants. Pour une règle spécifique à votre organisation, écrivez une politique personnalisée, soit une fonction SQL, soit une politique LLM-as-a-judge. Ce tutoriel utilise SQL. Une politique SQL personnalisée est un UDF qui prend (event VARIANT) et retourne une décision. Lisez le texte du message depuis event:context.message, une projection indépendante de l’API du dernier message utilisateur ou assistant.

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

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

  1. Sous l’onglet Stratégies du service de modèle, cliquez sur Nouvelle stratégie et entrez un nom, tel que block-codename.
  2. Dans le type de garde-fou, sélectionnez Personnalisé.
  3. Cliquez sur Fonction personnalisée, puis Sélectionnez la fonction, puis sélectionnez main.governance.block_confidential_codename.
  4. Sous Phase, sélectionnez uniquement les garde-fous d’entrée (avant le modèle), car il s’agit d’une stratégie de requête.
  5. Définissez Rank sur 10, puis cliquez sur Créer une stratégie.

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

Un modèle peut également retourner du contenu que vous ne souhaitez pas transmettre. Cette stratégie refuse une réponse qui contient un lien non sécurisé (UNE http:// URL ou un javascript: URI). La vérification event:type::string = 'response' la limite à la phase de sortie (ON RESULT). Un utilisateur qui se contente de mentionner ces schémas dans une requête ne la déclenche donc pas à l’entrée :

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;

Attachez la fonction en tant que stratégie personnalisée, délimitée à la phase de réponse :

  1. Sous l’onglet Stratégies , cliquez sur Nouvelle stratégie et entrez un nom, par block-unsafe-linksexemple .
  2. Dans le type de garde-fou, sélectionnez Personnalisé, puis main.governance.block_unsafe_links sous Fonction personnalisée.
  3. Sous Phase, sélectionnez uniquement les garde-fous de sortie (après le modèle), car il s’agit d’une stratégie de réponse.
  4. Définissez Rank sur 20, puis cliquez sur Créer une stratégie.

Étape 4 : Vérifier

Les trois stratégies s’affichent désormais sous l’onglet Stratégies du service. Utilisez le terrain de jeu pour confirmer chaque incendie :

  1. Dans la page du service de modèles, cliquez sur Chat dans le playground.
  2. Envoyez une invite qui demande du contenu dangereux ou nuisible. La barrière contre le contenu non sécurisé la bloque, et la réponse rapporte que le contenu a été bloqué par la politique.
  3. Envoi Tell me about Project Aurora. La politique de requête la bloque pour la raison suivante : Les demandes concernant des projets confidentiels ne sont pas autorisées.
  4. Envoyez une requête qui amène le modèle à renvoyer un lien http://. La politique de réponse la bloque lors de la phase de sortie (SUR RÉSULTAT) en expliquant pourquoi la réponse contenait un lien non sécurisé et était bloquée par la politique.
  5. Envoyez une invite ordinaire. Elle se termine normalement.

Pour tester le service à partir de vos propres applications ou scripts, consultez Fondation de requêtes et modèles d’intégration.

Nettoyage

Lorsque vous avez terminé, supprimez les stratégies sous l’onglet Stratégies : ouvrez chaque stratégie que vous avez créée et supprimez-la. Ensuite, supprimez éventuellement les fonctions personnalisées :

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

Étapes suivantes