Funcional

This commit is contained in:
2026-05-01 14:12:53 -03:00
parent a170a09cbd
commit 171e0bb3af
52 changed files with 1727 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
from nemoguardrails import LLMRails, RailsConfig
from company_nemo_guardrails.actions import (
mask_pii_action,
detectar_toxicidade_action,
detectar_out_of_scope_action,
validar_alcada_action,
verbalizacao_prematura_action,
validar_groundedness_action,
supervisor_vas_avulso_action,
enforce_compliance_anatel_action,
calcular_tcr_action,
detectar_fallback_action,
registrar_violacao_action,
validar_consistencia_historica_action,
contabilizar_tokens_action,
calcular_eficiencia_nlu_action,
calcular_eficiencia_nlu_action,
detectar_loop_action,
medir_tamanho_mensagem_action,
calcular_precisao_revocacao_action,
avaliar_acuracia_semantica_action
)
def init(app: LLMRails):
app.register_action(mask_pii_action)
app.register_action(detectar_toxicidade_action)
app.register_action(detectar_out_of_scope_action)
app.register_action(validar_alcada_action)
app.register_action(verbalizacao_prematura_action)
app.register_action(validar_groundedness_action)
app.register_action(supervisor_vas_avulso_action)
app.register_action(enforce_compliance_anatel_action)
app.register_action(calcular_tcr_action)
app.register_action(detectar_fallback_action)
app.register_action(registrar_violacao_action)
app.register_action(validar_consistencia_historica_action)
app.register_action(contabilizar_tokens_action)
app.register_action(calcular_eficiencia_nlu_action)
app.register_action(calcular_eficiencia_nlu_action)
app.register_action(detectar_loop_action)
app.register_action(medir_tamanho_mensagem_action)
app.register_action(calcular_precisao_revocacao_action)
app.register_action(avaliar_acuracia_semantica_action)

View File

@@ -0,0 +1,27 @@
models:
- type: main
engine: openai
model: gpt-5
api_key_env_var: OPENAI_API_KEY
parameters:
temperature: 0
base_url: http://127.0.0.1:8051/v1
max_tokens: 50 # 🔥 evita respostas longas do LLM
# 🔥 usado apenas se você chamar explicitamente no flow
- type: self_check_input
engine: openai
model: openai.gpt-oss-120b
api_key_env_var: OPENAI_API_KEY
parameters:
temperature: 0
base_url: http://127.0.0.1:8051/v1
rails:
input:
flows:
- check_input_terms
output:
flows:
- check_output_terms

View File

@@ -0,0 +1,24 @@
guardrails:
- {codigo: MSK, item: "PII Masking", mecanismo: regex}
- {codigo: CMP, item: "Compliance Anatel", mecanismo: regex}
- {codigo: ADJ, item: "Alçada de Ajuste", mecanismo: python}
- {codigo: REVPREC_SUP, item: "Supervisor VAS Avulso", mecanismo: llm_supervisor}
- {codigo: TCR, item: "Conclusão de Tarefa", mecanismo: python}
- {codigo: REVPREC, item: "Verbalização Prematura", mecanismo: llm_rail}
- {codigo: FALLBACK, item: "Fallback Não Entendi", mecanismo: python}
- {codigo: VIOL, item: "Violação de Guardrails", mecanismo: python}
- {codigo: TOX, item: "Toxicidade", mecanismo: llm_rail}
- {codigo: OOS, item: "Out-of-Scope", mecanismo: llm_rail}
- {codigo: GND, item: "Groundedness", mecanismo: llm_rail}
- {codigo: HIST, item: "Consistência Histórica", mecanismo: python}
- {codigo: PMPTK, item: "Prompt Tokens", mecanismo: python}
- {codigo: EFIC, item: "Eficiência NLU", mecanismo: python}
- {codigo: NO-M, item: "No-Match RAG", mecanismo: python}
- {codigo: CSI, item: "Sentimento", mecanismo: llm_judge}
- {codigo: ALUC, item: "Taxa de Alucinação", mecanismo: llm_judge}
- {codigo: VLOOP, item: "Volume de Loops", mecanismo: python}
- {codigo: MSIZE, item: "Tamanho de Mensagem", mecanismo: python}
- {codigo: RQLT, item: "Qualidade da Resposta", mecanismo: llm_judge}
- {codigo: VCTN, item: "Tom de Voz", mecanismo: llm_judge}
- {codigo: REVPREC_METRIC, item: "Precisão e Revocação", mecanismo: python}
- {codigo: SEMAC, item: "Acurácia Semântica STT", mecanismo: python}

View File

@@ -0,0 +1,28 @@
define bot refuse to respond
"I apologize, but I cannot provide that information."
define flow check_input_terms
# 🔐 Segurança
$ok_msk = execute mask_pii_action
$ok_tox = execute detectar_toxicidade_action
$ok_oos = execute detectar_out_of_scope_action
# 💰 Regras de negócio
$ok_adj = execute validar_alcada_action
# 🧠 Contexto
$ok_hist = execute validar_consistencia_historica_action
# 🔁 Conversação
$ok_loop = execute detectar_loop_action
$ok_size = execute medir_tamanho_mensagem_action
$ok_fbk = execute detectar_fallback_action
# 🚨 HARD BLOCK
if not ($ok_msk and $ok_tox and $ok_oos and $ok_adj and $ok_hist)
bot refuse to respond
stop
# ⚠️ SOFT SIGNALS (não bloqueiam)
# loop, tamanho e fallback são monitoramento

View File

@@ -0,0 +1,28 @@
define flow check_output_terms
# 🧠 Qualidade da resposta
$ok_revp = execute verbalizacao_prematura_action
$ok_gnd = execute validar_groundedness_action
$ok_sup = execute supervisor_vas_avulso_action
# 📡 Compliance
$ok_cmp = execute enforce_compliance_anatel_action
# 📊 Métricas
$ok_tcr = execute calcular_tcr_action
$ok_tok = execute contabilizar_tokens_action
$ok_efic = execute calcular_eficiencia_nlu_action
#$ok_nom = execute detectar_no_match_rag_action
$ok_prec = execute calcular_precisao_revocacao_action
$ok_sem = execute avaliar_acuracia_semantica_action
# 🚨 Auditoria
$ok_viol = execute registrar_violacao_action
# 🚨 HARD BLOCK (só qualidade crítica)
if not ($ok_cmp)
bot refuse to respond
stop
# ⚠️ SOFT METRICS (não bloqueiam)
# TCR, tokens, eficiência, precisão, STT etc