Pular para o conteúdo principal
Um guardrail externo bloqueia uma geração com base em uma decisão tomada fora do Toqan Router: um mecanismo de políticas (OPA, Cedar, OpenFGA), uma API de moderação de terceiros ou um serviço interno de compliance. A decisão é executada como um Python Guardrail que chama o serviço com requests. Os System Guardrails cobrem a detecção de PII e de segredos sem um serviço externo.

Criar e vincular

O código define uma função chamada evaluate que recebe log e retorna o veredito; o executor chama evaluate(log) pelo nome, portanto o ponto de entrada não pode ser renomeado. Funções auxiliares podem ser definidas em qualquer parte do código. Vincule a verificação: Objeto completo: Python Guardrail. Verificações de saída, incluindo as externas, não são executadas em respostas em streaming. Consulte Comportamento de execução.

Condição de aprovação

O veredito é comparado com a condição de aprovação configurada no guardrail: Um guardrail reprovado bloqueia a solicitação. O status depende da superfície: 400 no endpoint Responses e no endpoint de chat completions compatível com a OpenAI, e 422 nos endpoints compatíveis com Anthropic e Google e nas superfícies Agents e Deployments. Um guardrail que excede o tempo limite retorna 408 nos endpoints do AI Gateway e em Deployments; na superfície Agents, um guardrail que não pode ser executado, inclusive por tempo limite, retorna 502 guardrail_execution_failed. Consulte Resposta de erro de guardrail.
Um guardrail que falha na execução bloqueia a solicitação. Código que lança uma exceção, excede o tempo limite ou não consegue acessar a rede encerra a execução com um erro de execução em vez de liberar o tráfego. Capture os erros de solicitação no código e retorne uma negação, para que o chamador veja o motivo do guardrail em vez de uma execução com falha.

Requisitos

Open Policy Agent

O Open Policy Agent (OPA) é um mecanismo de políticas de uso geral: as regras são escritas em Rego, e o servidor retorna uma decisão para a entrada que recebe via HTTP. Consulte a documentação do OPA para instalação e criação de políticas. Inicie o servidor e carregue a política. A API de dados escuta na porta 8181 por padrão:
opa run --server aceita gravações não autenticadas em /v1/policies e /v1/data, portanto um mecanismo de políticas que o sandbox consegue acessar diretamente também pode ser reescrito por qualquer pessoa que consiga acessá-lo, incluindo outros autores de guardrails, cujo código é executado no mesmo sandbox. Execute-o atrás de um proxy que aceite apenas tráfego do sandbox e encaminhe somente a consulta de decisão (POST /v1/data/orq/guardrail/allowed), rejeitando qualquer outro caminho e verbo, em particular gravações em /v1/policies e /v1/data, conforme descrito em Requisitos; o guardrail chama o proxy, que guarda a credencial. A política nega o texto enviado pelo guardrail quando ele corresponde a um padrão de injeção. is_string faz com que uma consulta sem texto seja uma negação, e default mantém a consulta respondível quando o corpo da regra é indefinido.
orq/guardrail.rego
  • Os nomes do pacote e da regra correspondem ao caminho da consulta: data.orq.guardrail.allowed é servido em /v1/data/orq/guardrail/allowed.
  • A regra usa a sintaxe do OPA 1.0. Em uma versão anterior, adicione import future.keywords.if.
Código do guardrail, chamando o mecanismo de políticas pelo proxy autenticado:
Python
Condição de aprovação: Boolean com True. A geração é bloqueada quando a política retorna False. Qualquer mecanismo que responda via HTTP segue o mesmo formato. Troque a URL, o corpo da solicitação e o campo de onde o veredito é lido.

Provedores de guardrails de terceiros

Mapeie a resposta do provedor para a condição de aprovação. Um guardrail numérico é aprovado quando atinge ou ultrapassa o limite, portanto uma pontuação de risco, em que um valor maior significa mais risco, precisa ser normalizada para o intervalo de 0 a 1 e depois invertida; uma pontuação de segurança, em que um valor maior significa mais seguro, precisa apenas ser normalizada. Verifique a direção da pontuação do provedor antes de decidir se deve invertê-la. Chame o provedor pelo proxy descrito em Requisitos e substitua o host do proxy, o corpo da solicitação e o campo de pontuação pelos do provedor.
Python
O proxy anexa a chave de API do provedor, portanto nenhuma credencial fica no código do guardrail. Condição de aprovação: Number com um limite acima de zero, para que o valor de falha -1.0 bloqueie quando o provedor não puder ser acessado. Um provedor que retorna True ou False em um campo próprio pode ter esse valor retornado diretamente com uma condição de aprovação Boolean.

Provedores específicos

Cada framework é executado como um serviço, e a verificação o acessa via HTTP. Expanda um framework para ver o que é executado onde, o endpoint que o proxy precisa expor, o código do guardrail e a condição de aprovação a configurar.
O que é executado onde. O framework valida o texto com um Guard, e o servidor Guardrails hospeda guards atrás de uma API HTTP. Execute esse servidor, ou reutilize um já implantado, em um local que o sandbox do Toqan Router consiga acessar, e o guardrail o chamará.O que o proxy precisa expor. O próprio endpoint de validação do servidor, com o nome do guard no caminho e o texto em llmOutput. O servidor responde com validationPassed, um booleano:O proxy guarda a credencial do servidor, portanto o guardrail não envia nenhuma. Consulte a API REST do servidor Guardrails para ver o schema completo.Código do guardrail. Defina a condição de aprovação como Boolean com True.
Python
Modos de falha. Um guard inacessível, uma resposta sem validationPassed e um validationPassed que não é booleano retornam False. O nome do guard faz parte da URL, portanto um guard renomeado transforma todas as chamadas em falhas bloqueantes, em vez de aprovações silenciosas.
O que é executado onde. Não há nada para implantar: a Guard API é hospedada, e o proxy na frente dela guarda a chave de API. O projeto indicado na solicitação seleciona a política que a analisa.Antes de executar o exemplo. Duas configurações do projeto determinam se o guardrail pode bloquear algo. Com a ação detect, a Lakera informa as detecções em breakdown e retorna flagged como false para todas as solicitações, portanto nenhum guardrail pode agir com base nisso. O projeto precisa fazer a análise com a ação enforce. A role da mensagem determina quais detectores se aplicam, portanto a saída do modelo é enviada como assistant e a entrada como user.Consulte a referência da Guard API para ver o schema completo e as configurações do projeto.Código do guardrail. Defina a condição de aprovação como Boolean com True.
Python
Modos de falha. Um projeto que não está no modo enforce, um campo flagged ausente, um flagged não booleano e um proxy inacessível bloqueiam a solicitação. A verificação de action é o que mantém o guardrail confiável: sem ela, um projeto alterado para detect permitiria silenciosamente tudo o que o provedor detecta.

Testar

  1. Teste o código no painel Playground do guardrail.
  2. Clique em Publish.
  3. Vincule o guardrail na superfície de destino.
  4. Envie tráfego e inspecione os resultados em Traces.