Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
As políticas de serviço estão em Beta. O Unity AI Gateway está geralmente disponível, mas suas capacidades beta são ativadas separadamente. Um administrador de conta deve ativar os recursos beta do Unity AI Gateway na página de Prévias do console de conta. Consulte Gerenciar visualizações do Azure Databricks.
Este tutorial explica como adicionar guarda-corpos a um Serviço de Modelo, de duas maneiras complementares. No Azure Databricks, guardrails são políticas de serviço. Um serviço de modelo pode executar um modelo hospedado Azure Databricks ou um provedor externo, como OpenAI, Anthropic ou Google, e você controla ambos da mesma maneira:
- Políticas de serviço integradas (guardrails): verificações gerenciadas, fornecidas pelo Azure Databricks, para riscos comuns, como PII, conteúdo inseguro, tentativas de jailbreak e alucinações. Você o adiciona selecionando-o na interface, sem precisar escrever código.
- Políticas de serviço personalizadas: funções SQL que você escreve para regras específicas da sua organização, como um nome de código de projeto confidencial ou um padrão de resposta proibido.
Para conceitos de política de serviço, as proteções integradas e a referência completa de criação, consulte Políticas de serviço para objetos protegíveis de IA, Criar e anexar uma política de serviço e Referência da função de política de serviço.
Você anexa ambos da mesma maneira, na guia Políticas de um serviço de modelo na interface do usuário do Gateway de IA do Unity e pode misturá-los. Azure Databricks avalia cada um em dois pontos:
- A fase de entrada (ON CALL) antes de acionar o modelo.
- A fase de saída (ON RESULT) após a resposta do modelo.
Na interface do usuário, você seleciona a fase ao anexar a política. Uma política personalizada também pode limitar-se a uma fase fazendo ramificação com base em event:type.
Cenário: sua equipe disponibiliza um LLM por meio de um serviço de modelo (main.default.team_chat) que aplicativos e agentes utilizam. Você quer bloquear conteúdo inseguro ou prejudicial com uma proteção gerenciada, bloquear qualquer prompt que mencione um projeto confidencial e bloquear respostas que contenham um link inseguro, tudo isso sem alterar o código da aplicação.
Ao final deste tutorial, você terá:
- Uma proteção integrada contra conteúdo inseguro no serviço.
- Uma política de requisição personalizada que bloqueia um codinome confidencial na fase de entrada (ON CALL).
- Uma política de resposta personalizada que bloqueia links inseguros na fase de saída (ON RESULT).
- Os três foram anexados e verificados no playground do serviço de modelo.
Pré-requisitos
- Um espaço de trabalho habilitado para usar o Unity Catalog. Consulte Introdução ao Catálogo do Unity.
- Os recursos beta do Unity AI Gateway estão ativados para sua conta, o que ativa as políticas de serviço e os outros recursos do Unity AI Gateway Beta. Consulte Gerenciar visualizações do Azure Databricks.
- Um serviço de modelo para gerenciar, e
EXECUTEnele para que você possa testar. Para criar uma, veja Criar e gerenciar APIs de modelo (serviços modelo). Este tutorial usamain.default.team_chat. -
MANAGEno serviço de modelo, para anexar políticas. -
CREATE FUNCTIONno esquema em que você cria as funções de política personalizadas (main.governanceneste tutorial). - Para o guardrail interno: o modelo do avaliador que executa a verificação do guardrail (o juiz LLM) é pré-selecionado, portanto, nenhuma configuração é necessária. Se você selecionar um avaliador diferente em opções avançadas, será necessário
CAN_QUERYnele.
Etapa 1: Aplicar um guardrail interno
As proteções integradas são verificações gerenciadas do tipo LLM-judge. Você seleciona um no menu de Tipo de proteção; o serviço de modelo do avaliador que executa a verificação (o juiz LLM) é pré-selecionado para você. Os guardrails disponíveis são:
-
Conteúdo não seguro (
system.ai.block_unsafe_content): nega conteúdo não seguro ou prejudicial. -
Jailbreak (
system.ai.block_jailbreak): bloqueia tentativas de injeção de prompt e de jailbreak (somente em solicitações). -
Alucinação (
system.ai.block_hallucination): nega respostas alucinadas (somente respostas).
Anexe a proteção contra conteúdo não seguro ao serviço do seu modelo:
- Na barra lateral do espaço de trabalho, clique em AI Gateway.
- Na guia Modelos , selecione seu serviço de modelo (
main.default.team_chat). - Abra a guia Políticas e clique em Nova política.
- Insira um Nome, como
block-unsafe-content. - Em Aplicado a, mantenha Todos os usuários da conta ou limite o escopo da política a entidades específicas.
- Em Tipo de guardrail, selecione Conteúdo inseguro.
- Definir Classificação como
1. A classificação define a ordem de avaliação: a classificação mais baixa é executada primeiro na solicitação e a última na resposta. - Em Fase, selecione ambos, Proteções de entrada (Antes do modelo) e Proteções de saída (Depois do modelo), para que a proteção seja aplicada a solicitações e respostas.
- Clique em Criar política.
A proteção usa um Serviço de modelo do avaliador pré-selecionado (o juiz LLM que executa a verificação). Para usar um modelo diferente, expanda as opções avançadas antes de criar a política; você precisa CAN_QUERY no modelo selecionado.
Note
Depois de anexar ou alterar uma política em um Serviço de Modelo, permita um curto período de tempo para que a alteração entre em vigor antes do teste. Durante a versão beta das políticas de serviço, pode-se levar alguns minutos para propagação ocorrer.
Etapa 2: Adicionar uma política de solicitação personalizada
Os guardrails cobrem riscos comuns. Para uma regra específica da sua organização, escreva uma política personalizada. Uma política personalizada é uma UDF SQL que recebe (event VARIANT) e retorna uma decisão; leia o texto da mensagem de event:context.message, uma projeção agnóstica em relação à API da última mensagem do usuário ou do assistente.
Essa política nega qualquer solicitação que mencione um nome de código de projeto confidencial. A verificação event:type::string = 'request' restringe isso à fase de entrada (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 e lower fazem parte do subconjunto SQL com suporte em órgãos de política. Para obter a lista completa e as regras para escrever uma função de política, consulte a referência da função de política de serviço.
Anexe a função como uma política personalizada, com escopo para a fase de solicitação:
- Na guia Políticas do serviço de modelo, clique em Nova política e insira um Nome, como
block-codename. - No tipo de proteção, selecione Personalizado.
- Clique na função Personalizada, selecione a função e selecione
main.governance.block_confidential_codename. - Em Fase, selecione apenas Proteções de entrada (antes do modelo), pois se trata de uma política de solicitação.
- Defina Rank como
10, em seguida, clique em Criar política.
Etapa 3: Adicionar uma política de resposta personalizada
Um modelo também pode retornar conteúdo que você não deseja deixar passar. Essa política nega uma resposta que contém um link inseguro (uma http:// URL ou um javascript: URI). A verificação event:type::string = 'response' a restringe à fase de saída (ON RESULT), de modo que um usuário que apenas menciona esses esquemas em um prompt não a aciona na entrada:
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;
Anexe a função como uma política personalizada, com escopo definido para a fase de resposta:
- Na guia Políticas, clique em Nova política e insira um Nome, como
block-unsafe-links. - No tipo Guardrail, selecione Personalizado e, em seguida, selecione
main.governance.block_unsafe_linksem Função Personalizada. - Em Phase, selecione apenas barreiras de proteção de saída (After the Model), porque esta é uma política de resposta.
- Defina Rank como
20, em seguida, clique em Criar política.
Etapa 4: Verificar
Todas as três políticas agora aparecem na guia Políticas do serviço. Use o playground para confirmar se cada uma é acionada:
- Na página do serviço de modelo, clique em Chat no playground.
- Envie um prompt solicitando conteúdo inseguro ou prejudicial. A barreira de proteção contra conteúdo inseguro bloqueia isso, e a resposta relata que o conteúdo foi bloqueado pela política.
- Enviar
Tell me about Project Aurora.A política de solicitações bloqueia isso pelo seguinte motivo: Solicitações sobre projetos confidenciais não são permitidas. - Envie um prompt que faça com que o modelo retorne um link
http://. A política de resposta o bloqueia na fase de saída (ON RESULT) pelo motivo A resposta continha um link inseguro e foi bloqueada pela política. - Enviar um prompt comum. Ele retorna uma finalização normal.
Em vez disso, para testar o serviço nos seus próprios aplicativos ou scripts, consulte Consultar APIs de modelo (serviços de modelo).
Limpeza
Quando terminar, remova as políticas na guia Políticas : abra cada política criada e exclua-a. Em seguida, opcionalmente, solte as funções personalizadas:
DROP FUNCTION IF EXISTS main.governance.block_confidential_codename;
DROP FUNCTION IF EXISTS main.governance.block_unsafe_links;