O AI Guardrails entrega os resultados de detecção de conteúdo e revisão humana de forma assíncrona por meio de notificações de callback. Este tópico explica como configurar callbacks para que seu servidor receba esses resultados automaticamente.
Como funciona
O AI Guardrails oferece suporte a dois tipos de callback:
Callbacks de resultado de varredura: Após concluir uma solicitação de detecção, o AI Guardrails envia os resultados via POST para o seu endereço de webhook.
Callbacks de resultado de revisão: Quando uma revisão humana altera os resultados da detecção (seja pelo console ou pela API de feedback), o AI Guardrails envia os resultados da revisão via POST para o seu endereço de webhook. Para mais detalhes, consulte Revisão humana.
Fluxo completo do processo:
Seu servidor expõe um endereço de webhook público.
Informe o endereço de webhook (e um seed) ao chamar uma operação de API assíncrona ou configurar o console.
Quando o AI Guardrails finaliza o processamento, ele envia os resultados via POST para o seu endereço de webhook.
Seu servidor retorna HTTP 200 para confirmar o recebimento e processa o payload.
Conceitos principais
|
Termo |
Descrição |
|
Endereço de webhook |
Endpoint HTTPS ou HTTP público em seu servidor que recebe os payloads de callback. Configure-o no console do AI Guardrailsconsole do AI Guardrails. |
|
Seed |
String secreta usada para verificar se as solicitações recebidas foram originadas pelo AI Guardrails, e não por terceiros. |
|
Tentativas de callback |
O AI Guardrails tenta reenviar entregas com falha até três vezes. Uma resposta HTTP 200 indica sucesso na entrega; qualquer outro código de status é tratado como falha. |
|
Dados de callback |
Payload codificado como formulário que o AI Guardrails envia via POST para o seu endereço de webhook. |
Requisitos do endereço de webhook
Seu endereço de webhook deve atender a todos os requisitos abaixo:
Acessível pela Internet via HTTP ou HTTPS
Compatível com o método POST
Suporte à codificação UTF-8
Aceita dados no formato
application/x-www-form-urlencodedProcessa os parâmetros de formulário
checksumecontent
Campos do payload de callback
Cada corpo de POST de callback contém dois parâmetros de formulário:
|
Parâmetro |
Tipo |
Descrição |
|
|
String |
Assinatura para detecção de adulteração. Gerada aplicando SHA256 à string concatenada |
|
|
String |
Objeto JSON serializado como string. Converta essa string em um objeto JSON antes de ler seus campos. Consulte Estrutura do campo content. |
Verificação do checksum
Ao receber um callback, recalcule a assinatura usando o mesmo algoritmo — SHA256(<User UID> + <seed> + <content>) — e compare-a com o campo checksum. Se os valores forem diferentes, descarte a solicitação.
O exemplo em Python a seguir mostra como verificar o checksum:
import hashlib
def verify_checksum(user_uid: str, seed: str, content: str, received_checksum: str) -> bool:
"""Verify that a callback originated from AI Guardrails."""
raw = user_uid + seed + content
computed = hashlib.sha256(raw.encode("utf-8")).hexdigest()
return computed == received_checksum
Configurar callbacks de resultado de varredura
Todas as operações de API assíncronas do AI Guardrails suportam callbacks de resultado de varredura, incluindo varredura assíncrona de imagens e varredura assíncrona de vídeos.
Sem callbacks, a única maneira de recuperar resultados de detecção assíncronos é por meio de polling periódico.
Procedimento
Configure um endereço de webhook que atenda a todos os requisitos listados em Requisitos do endereço de webhook e escolha um valor para o seed.
Ao chamar uma operação de API assíncrona do AI Guardrails, inclua o parâmetro
callback(seu endereço de webhook) e o parâmetroseedno corpo da solicitação. Consulte a documentação específica de cada operação de API para obter detalhes sobre os parâmetros.
Configurar callbacks de revisão humana
As operações de API de revisão humana não retornam resultados diretamente. Em vez disso, os resultados são entregues via callbacks.
Se você utiliza o serviço de revisão humana da Alibaba Cloud (moderação assistida por máquina), configure as notificações no console:
Faça login no console do AI Guardrailsconsole do AI Guardrails.
No painel de navegação à esquerda, selecione Machine Moderation V1.0 > Settings.
Na página Settings, clique em Notification e, em seguida, clique em Create New Notification.
-
Na caixa de diálogo Create New Notification, preencha os campos abaixo e clique em OK: Após clicar em OK, o sistema gera um seed automaticamente. Salve esse seed — ele será usado para verificar se os callbacks recebidos têm origem na Alibaba Cloud.
Campo
Descrição
Title
Nome descritivo para esta configuração de notificação.
Callback URL
Seu endereço de webhook.
Encryption algorithm
Selecione SHA256 (HMAC-SHA256) ou SM3. Veja Algoritmos de criptografia para mais detalhes.
Notification type
Selecione Manual Review Results by AlibabaCloud.
Audit Result
Escolha quais resultados de revisão acionam um callback. Selecione todos para receber callbacks de qualquer resultado ou escolha resultados específicos conforme seu caso de uso.
Na aba Scenario Management, localize o cenário de negócios desejado, clique em Associate Notification na coluna Actions e associe o Callback Notification Plan criado.
Caso já tenha um serviço de notificação de callback configurado para moderação assistida por máquina, reutilize a configuração existente ou crie uma nova conforme necessário.
Console de Gerenciamento da Alibaba Cloud
Algoritmos de criptografia
|
Algoritmo |
Detalhes |
|
SHA256 |
Utiliza HMAC-SHA256. |
|
SM3 |
Emprega o algoritmo de criptografia SM3. Retorna uma string hexadecimal composta por letras minúsculas e números. Por exemplo, a criptografia de |
Estrutura do campo content
Após converter a string content em um objeto JSON, ela contém os seguintes campos de nível superior:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
JSONObject |
Não |
Resultado da varredura. A estrutura varia conforme o tipo de conteúdo — veja Estrutura de scanResult. |
|
|
JSONObject |
Não |
Resultado da sua revisão humana. Presente apenas quando ocorre uma operação de revisão humana. Não incluído se apenas os resultados de varredura forem enviados. |
|
|
JSONObject |
Não |
Resultado da revisão humana da Alibaba Cloud. Presente somente se você adquiriu o serviço de revisão humana da Alibaba Cloud. |
Estrutura de scanResult
A estrutura de scanResult depende do tipo de conteúdo analisado:
Imagens: Mesma estrutura do parâmetro
resultsretornado pelas varreduras síncronas de imagens.Vídeos: Mesma estrutura do parâmetro
resultsretornado pelas varreduras assíncronas de vídeos.
Estrutura de auditResult
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
String |
Sim |
Resultado da revisão. Valores válidos: |
|
|
JSONArray |
Não |
Rótulos aplicados durante a revisão humana. Valores válidos: |
Estrutura de humanAuditResult
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
String |
Sim |
Resultado da revisão da Alibaba Cloud. Valores válidos: |
|
|
String |
Sim |
ID da tarefa de detecção. Use este valor para associar o resultado da revisão ao conteúdo original. |
|
|
String |
Sim |
ID do conteúdo detectado. |
|
|
JSONArray |
Não |
Resultados de rótulos da revisão humana da Alibaba Cloud. Não retornado por padrão — entre em contato com seu representante comercial para ativar este campo, pois ele gera cobranças adicionais. |
Exemplo
O exemplo a seguir apresenta um objeto content totalmente preenchido após a conversão:
{
"scanResult": {
"code": 200,
"msg": "OK",
"taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
"url": "http://1.jpg",
"results": [
{
"rate": 100,
"scene": "porn",
"suggestion": "block",
"label": "porn"
}
]
},
"auditResult": {
"suggestion": "block",
"labels": [
"porn",
"ad",
"terrorism"
]
},
"humanAuditResult": {
"suggestion": "pass",
"dataId": "yyyy",
"labels": [
"porn",
"vulgar"
],
"taskId": "xxxxxx"
}
}