As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Use a ApplyGuardrail API em seu aplicativo
As barreiras de proteção são usadas para implementar proteções nas aplicações de IA generativa personalizadas para os casos de uso e alinhadas às políticas de IA responsável. As barreiras de proteção permitem configurar tópicos negados, filtrar conteúdo prejudicial e remover informações confidenciais.
É possível usar a API ApplyGuardrail para avaliar qualquer texto usando as suas barreiras de proteção do Amazon Bedrock pré-configuradas, sem invocar os modelos de base.
Os recursos da ApplyGuardrail API incluem:
-
Validação de conteúdo — você pode enviar qualquer entrada ou saída de texto para a ApplyGuardrail API para compará-la com suas regras definidas de prevenção de tópicos, filtros de conteúdo, detectores de PII e listas de bloqueio de palavras. É possível avaliar as entradas do usuário e as saídas geradas por FM de forma independente.
-
Implantação flexível — você pode integrar a ApplyGuardrail API em qualquer lugar do fluxo do aplicativo para validar os dados antes de processar ou fornecer resultados ao usuário. Por exemplo, se você estiver usando uma aplicação RAG, agora poderá avaliar a entrada do usuário antes de executar a recuperação, em vez de esperar até a geração final da resposta.
-
Separada dos modelos básicos — a ApplyGuardrail API é dissociada dos modelos básicos. Agora é possível usar as barreiras de proteção sem invocar os modelos de base. É possível usar os resultados da avaliação para criar a experiência em sua aplicação de IA generativa.
Ligue para ApplyGuardrail o fluxo do seu aplicativo
A solicitação permite que o cliente transmita todo o conteúdo que deve ser protegido usando suas barreiras de proteção definidas. O campo de origem deve ser definido para INPUT quando o conteúdo a ser avaliado é de um usuário (normalmente, o prompt de entrada para o LLM). A fonte deve ser definida como OUTPUT quando as grades de proteção de saída do modelo devem ser aplicadas (normalmente a resposta do LLM).
Ao usarApplyGuardrail, você especifica guardrailIdentifier a guardrailVersion extremidade da grade de proteção que deseja usar. Você também pode ativar o rastreamento da grade de proteção, que fornece informações sobre o conteúdo que a grade de proteção bloqueia.
- ApplyGuardrail API request
-
POST /guardrail/{guardrailIdentifier}/version/{guardrailVersion}/apply HTTP/1.1
{
"source": "INPUT" | "OUTPUT",
"content": [{
"text": {
"text": "string",
}
}, ]
}
- ApplyGuardrail API response
-
{
"usage": {
"topicPolicyUnits": "integer",
"contentPolicyUnits": "integer",
"wordPolicyUnits": "integer",
"sensitiveInformationPolicyUnits": "integer",
"sensitiveInformationPolicyFreeUnits": "integer",
"contextualGroundingPolicyUnits": "integer"
},
"action": "GUARDRAIL_INTERVENED" | "NONE",
"output": [
// if guardrail intervened and output is masked we return request in same format
// with masking
// if guardrail intervened and blocked, output is a single text with canned message
// if guardrail did not intervene, output is empty array
{
"text": "string",
},
],
"assessments": [{
"topicPolicy": {
"topics": [{
"name": "string",
"type": "DENY",
"action": "BLOCKED",
}]
},
"contentPolicy": {
"filters": [{
"type": "INSULTS | HATE | SEXUAL | VIOLENCE | MISCONDUCT |PROMPT_ATTACK",
"confidence": "NONE" | "LOW" | "MEDIUM" | "HIGH",
"filterStrength": "NONE" | "LOW" | "MEDIUM" | "HIGH",
"action": "BLOCKED"
}]
},
"wordPolicy": {
"customWords": [{
"match": "string",
"action": "BLOCKED"
}],
"managedWordLists": [{
"match": "string",
"type": "PROFANITY",
"action": "BLOCKED"
}]
},
"sensitiveInformationPolicy": {
"piiEntities": [{
// for all types see: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GuardrailPiiEntityConfig.html#bedrock-Type-GuardrailPiiEntityConfig-type
"type": "ADDRESS" | "AGE" | ...,
"match": "string",
"action": "BLOCKED" | "ANONYMIZED"
}],
"regexes": [{
"name": "string",
"regex": "string",
"match": "string",
"action": "BLOCKED" | "ANONYMIZED"
}],
"contextualGroundingPolicy": {
"filters": [{
"type": "GROUNDING | RELEVANCE",
"threshold": "double",
"score": "double",
"action": "BLOCKED | NONE"
}]
},
"invocationMetrics": {
"guardrailProcessingLatency": "integer",
"usage": {
"topicPolicyUnits": "integer",
"contentPolicyUnits": "integer",
"wordPolicyUnits": "integer",
"sensitiveInformationPolicyUnits": "integer",
"sensitiveInformationPolicyFreeUnits": "integer",
"contextualGroundingPolicyUnits": "integer"
},
"guardrailCoverage": {
"textCharacters": {
"guarded":"integer",
"total": "integer"
}
}
}
},
"guardrailCoverage": {
"textCharacters": {
"guarded": "integer",
"total": "integer"
}
}
]
}
Exemplos de casos de uso de ApplyGuardrail
As saídas da solicitação ApplyGuardrail dependem da ação tomada pela barreira de proteção no conteúdo passado.
-
Se a barreira de proteção interveio no conteúdo que estava apenas mascarado, o conteúdo exato será retornado com o mascaramento aplicado.
-
Se a barreira de proteção interveio e bloqueou o conteúdo da solicitação, o campo de saídas será um único texto, que é a mensagem predefinida com base na configuração da barreira de proteção.
-
Se nenhuma ação da barreira de proteção tiver sido tomada no conteúdo da solicitação, a matriz de saídas estará vazia.
- Guardrails takes no action
-
Exemplo de solicitação
{
"source": "OUTPUT",
"content": [
"text": {
"text": "Hi, my name is Zaid. Which car brand is reliable?"
}
]
}
Exemplo de resposta
{
"usage": {
"topicPolicyUnitsProcessed": 1,
"contentPolicyUnitsProcessed": 1,
"wordPolicyUnitsProcessed": 0,
"sensitiveInformationPolicyFreeUnits": 0
},
"action": "NONE",
"outputs": [],
"assessments": [{}]
}
- Guardrails blocks content
-
Exemplo de resposta
{
"usage": {
"topicPolicyUnitsProcessed": 1,
"contentPolicyUnitsProcessed": 1,
"wordPolicyUnitsProcessed": 0,
"sensitiveInformationPolicyFreeUnits": 0
},
"action": "GUARDRAIL_INTERVENED",
"outputs": [{
"text": "Configured guardrail canned message (i.e., can't respond)"
}],
"assessments": [{
"topicPolicy": {
"topics": [{
"name": "Cars",
"type": "DENY",
"action": "BLOCKED"
}]
},
"sensitiveInformationPolicy": {
"piiEntities": [{
"type": "NAME",
"match": "ZAID",
"action": "ANONYMIZED"
}],
"regexes": []
}
}]
}
- Guardrails masks content
-
Exemplo de resposta
Guardrails intervém mascarando o nome. ZAID
{
"usage": {
"topicPolicyUnitsProcessed": 1,
"contentPolicyUnitsProcessed": 1,
"wordPolicyUnitsProcessed": 0,
"sensitiveInformationPolicyFreeUnits": 0
},
"action": "GUARDRAIL_INTERVENED",
"outputs": [{
"text": "Hi, my name is {NAME}. Which car brand is reliable?"
},
{
"text": "Hello {NAME}, ABC Cars are reliable ..."
}
],
"assessments": [{
"sensitiveInformationPolicy": {
"piiEntities": [{
"type": "NAME",
"match": "ZAID",
"action": "ANONYMIZED"
}],
"regexes": []
}
}]
}
- AWS CLI example
-
Exemplo de entrada
aws bedrock-runtime apply-guardrail \
--cli-input-json '{
"guardrailIdentifier": "someGuardrailId",
"guardrailVersion": "DRAFT",
"source": "INPUT",
"content": [
{
"text": {
"text": "How should I invest for my retirement? I want to be able to generate $5,000 a month"
}
}
]
}' \
--region us-east-1 \
--output json
Exemplo de saída (conteúdo de blocos)
{
"usage": {
"topicPolicyUnits": 1,
"contentPolicyUnits": 1,
"wordPolicyUnits": 1,
"sensitiveInformationPolicyUnits": 1,
"sensitiveInformationPolicyFreeUnits": 0
},
"action": "GUARDRAIL_INTERVENED",
"outputs": [
{
"text": "I apologize, but I am not able to provide fiduciary advice. ="
}
],
"assessments": [
{
"topicPolicy": {
"topics": [
{
"name": "Fiduciary Advice",
"type": "DENY",
"action": "BLOCKED"
}
]
}
}
]
}
Retorna a saída completa em ApplyGuardrail resposta
O conteúdo é considerado detectado se violar suas configurações de proteção. Por exemplo, a fundamentação contextual é considerada detectada se a pontuação de fundamentação ou relevância for menor que o limite correspondente.
Por padrão, a ApplyGuardrailoperação retorna somente o conteúdo detectado em uma resposta. Você pode especificar o outputScope campo com o FULL valor para retornar a saída completa. Nesse caso, a resposta também incluirá entradas não detectadas para depuração aprimorada.
Você pode configurar esse mesmo comportamento nas Converse operações Invoke e definindo o rastreamento para a opção completa ativada.
O escopo completo da saída não se aplica a filtros de palavras ou regex em filtros de informações confidenciais. Ela se aplica a todas as outras políticas de filtragem, incluindo informações confidenciais com filtros que podem detectar informações de identificação pessoal (PII).