mirror of
https://github.com/hoshikawa2/nemo_guardrails_configuration.git
synced 2026-07-09 17:04:20 +00:00
Funcional
This commit is contained in:
43
final_pkg/company_nemo_guardrails/config/config.py
Normal file
43
final_pkg/company_nemo_guardrails/config/config.py
Normal 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)
|
||||
27
final_pkg/company_nemo_guardrails/config/config.yml
Normal file
27
final_pkg/company_nemo_guardrails/config/config.yml
Normal 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
|
||||
24
final_pkg/company_nemo_guardrails/config/guardrails.yaml
Normal file
24
final_pkg/company_nemo_guardrails/config/guardrails.yaml
Normal 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}
|
||||
28
final_pkg/company_nemo_guardrails/config/rails/input.co
Normal file
28
final_pkg/company_nemo_guardrails/config/rails/input.co
Normal 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
|
||||
28
final_pkg/company_nemo_guardrails/config/rails/output.co
Normal file
28
final_pkg/company_nemo_guardrails/config/rails/output.co
Normal 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
|
||||
Reference in New Issue
Block a user