Pular para o conteúdo principal

Tutorial: Moderar o Conteúdo de um Serviço de Modelo com Barreiras de Segurança e Políticas de Serviço

info

Beta

Esse recurso está em Beta. Os administradores de conta podem gerenciar o acesso a esse recurso na página **Prévias** do console da conta. Consulte Gerenciar prévias do Databricks.

Este tutorial aborda a moderação do conteúdo das interações de um serviço de modelo de duas maneiras complementares. Um serviço de modelo pode ser a interface para um modelo hospedado no Databricks ou um provedor externo como OpenAI, Anthropic ou Google, e você gerencia ambos da mesma forma:

  • Barreiras de segurança integradas : verificações gerenciadas e fornecidas pela Databricks para riscos comuns, como PII, conteúdo inseguro, tentativas de jailbreak e alucinações. Um é anexado selecionando-o na UI, sem a necessidade de 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 codinome de projeto confidencial ou um padrão de resposta banido.

Você os anexa da mesma forma, a partir da tab Políticas de um serviço de modelo na interface do usuário do Unity AI Gateway, e você pode misturá-los. A Databricks avalia cada um em dois pontos: ON CALL (antes de invocar o modelo) e ON RESULT (depois que o modelo responde). Na interface do usuário, você seleciona a fase quando anexa a política. Uma política personalizada também pode restringir-se a uma fase ramificando em event:type.

Cenário: Sua equipe expõe um LLM por meio de um Serviço de Modelo ()main.default.team_chat que aplicativos e agentes chamam. Você deseja bloquear informações pessoalmente identificáveis (PII) com uma barreira gerenciada, bloquear qualquer prompt que mencione um projeto confidencial e bloquear respostas que contenham um link inseguro, tudo isso sem alterar o código do aplicativo.

Ao final deste tutorial:

  • Uma barreira de segurança de PII integrada no serviço.
  • Uma política de solicitação personalizada que bloqueia um codinome confidencial em ON CALL.
  • Uma política de resposta personalizada que bloqueia links inseguros no ON RESULT.
  • Todos os três anexados e verificados do playground do serviço de modelo.

Pré-requisitos

  • Um workspace habilitado para o Unity Catalog. Consulte Comece a usar o Unity Catalog.
  • A prévia da Unity AI Gateway habilitada para sua account. Consulte Gerenciar prévias do Databricks.
  • Um serviço de modelo para governar, e EXECUTE nele para que você possa testar. Para criar um, consulte Descobrir modelos básicos. Este tutorial usa main.default.team_chat.
  • MANAGE no Serviço de Modelo, para anexar políticas.
  • CREATE FUNCTION no esquema onde as funções de política personalizadas são criadas (main.governance neste tutorial).
  • Para o guardrail integrada: o modelo avaliador que faz a execução da verificação do guardrail (o juiz LLM) é pré-selecionado, então nenhuma configuração é necessária. Se você selecionar um avaliador diferente em **Opções avançadas**, você precisa CAN_QUERY de nele.

O passo 1: Aplicar uma barreira de segurança integrada

As proteções integradas são verificações de juiz LLM gerenciadas. Você seleciona um no menu Tipo de barreira de segurança ; o serviço de modelo avaliador de execução da verificação (o juiz do LLM) é pré-selecionado para você. As proteções disponíveis são:

  • Bloqueio de PII (system.ai.block_pii): nega conteúdo que contém PII.
  • Conteúdo inseguro (system.ai.block_unsafe_content): nega conteúdo inseguro ou prejudicial.
  • Jailbreak system.ai.block_jailbreak(): nega tentativas de injeção de prompt e jailbreak (somente solicitações).
  • Alucinação (system.ai.block_hallucination): nega respostas alucinadas (somente respostas).

Anexe o guardrail de PII ao seu serviço de modelo:

  1. Na barra lateral do workspace, clique em AI Gateway .
  2. Na tab Modelos , selecione o seu serviço de modelo (main.default.team_chat).
  3. Abra a tab Políticas , então clique em Nova política .
  4. Insira um Nome , como block-pii.
  5. Em Aplicado a , mantenha Todos os usuários da account , ou defina o escopo da política para entidades específicas.
  6. Em Tipo de barreira de segurança , selecione Bloqueio de PII .
  7. Defina a Classificação para 1. A Classificação define a ordem de avaliação: a classificação mais baixa tem execução primeiro na solicitação e por último na resposta.
  8. Em Fase , selecione tanto barreiras de segurança de entrada (Antes do Modelo) quanto barreiras de segurança de saída (Após o Modelo) , para que a barreira de segurança tenha execução em solicitações e respostas.
  9. Clique em Criar política .

A barreira de segurança usa um serviço de modelo 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; é necessário CAN_QUERY no modelo que você selecionar.

nota

Após anexar ou alterar uma política em um Serviço de Modelo, aguarde um curto período para que a alteração entre em vigor antes de testar. Durante a versão beta, pode levar alguns minutos para se propagar.

O passo 2: Adicionar uma política de solicitação personalizada

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 aceita (event VARIANT) e retorna uma decisão; leia o texto da mensagem de event:context.message, uma projeção independente da API da última mensagem do usuário ou assistente.

Esta política nega qualquer solicitação que mencione um codinome de projeto confidencial. A verificação event:type::string = 'request' o restringe a 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 e lower fazem parte do subconjunto SQL compatível em corpos de política. Para a lista completa e as regras para escrever uma função de política de serviço, consulte referência da função de política de serviço.

Anexe a função como uma política personalizada, com escopo na fase da solicitação:

  1. Na tab Políticas do serviço de modelo, clique em Nova política e insira um Nome , como block-codename.
  2. Em Tipo de barreira de segurança , selecione Personalizado .
  3. Clique main.governance.block_confidential_codenameem **Função personalizada**, em seguida, em **Selecionar função**, e selecione.
  4. Em **Fase**, selecione apenas **Verificadores de integridade de entrada (Antes do Modelo)**, porque esta é uma política de solicitação.
  5. Defina **Classificação** como, então clique em **Criar 10política**.

o passo 3: Adicionar uma política de resposta personalizada

Um modelo também pode retornar conteúdo que não se deseja que passe. Esta política nega uma resposta que contenha um link inseguro (um URL http:// ou um URI javascript:). A verificação event:type::string = 'response' a confina a ON RESULT, para que um usuário que apenas mencione esses esquemas em um prompt não a ative na entrada:

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;

Anexe a função como uma política personalizada, delimitada à fase de resposta:

  1. Na tab **Políticas**, clique em **Nova política** e insira um **Nome**, block-unsafe-linkscomo.
  2. Em **Tipo main.governance.block_unsafe_links de Verificador de Integridade**, selecione **Personalizado** e, depois, em **Função Personalizada**.
  3. Em Fase , selecione apenas Guardrails de saída (após o modelo) , porque esta é uma política de resposta.
  4. Defina **Classificação** como, então clique em **Criar 20política**.

O passo 4: Verificar

Todas as três políticas agora aparecem na tab Políticas do serviço. Utilize o playground para confirmar que cada um é acionado:

  1. Na página de serviço de modelo, clique em Conversar no playground .
  2. Envie um prompt que contém PII, como My SSN is 123-45-6789, store it.. O guardrail de PII bloqueia a solicitação e você recebe um erro estruturado.
  3. Enviar Tell me about Project Aurora. A política de solicitação o bloqueia com o motivo: “Solicitações sobre projetos confidenciais não são permitidas.”
  4. Envie um prompt que faz o modelo retornar um link http://. A política de resposta o bloqueia em ON RESULT com o motivo A resposta continha um link inseguro e foi bloqueada pela política.
  5. Envie um prompt comum. Ele retorna uma conclusão normal.

Para testar o serviço de seus próprios aplicativos ou scripts, consulte Usar serviços de modelo.

Limpar

Quando terminar, remova as políticas na tab **Políticas**: abra cada política que você criou e exclua-a. Em seguida, descarte opcionalmente as funções personalizadas:

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

Próximos os passos