mirror of
https://github.com/hoshikawa2/nemo_guardrails_configuration.git
synced 2026-07-09 17:04:20 +00:00
133 lines
2.8 KiB
Python
133 lines
2.8 KiB
Python
import os
|
|
|
|
from company_nemo_guardrails.judges import (
|
|
classificar_sentimento,
|
|
avaliar_alucinacao,
|
|
avaliar_qualidade_resposta,
|
|
avaliar_tom_de_voz
|
|
)
|
|
|
|
# ==========================================
|
|
# CONFIGURAÇÃO
|
|
# ==========================================
|
|
|
|
# MOCK = true -> usa mock local
|
|
# MOCK = false -> usa OCI/OpenAI real
|
|
|
|
os.environ["USE_MOCK_LLM"] = "false"
|
|
|
|
# Se quiser usar o proxy real:
|
|
#
|
|
# os.environ["USE_MOCK_LLM"] = "false"
|
|
# os.environ["OPENAI_BASE_URL"] = "http://localhost:8051/v1"
|
|
# os.environ["OPENAI_API_KEY"] = "dummy"
|
|
# os.environ["OPENAI_MODEL"] = "gpt-5"
|
|
|
|
|
|
# ==========================================
|
|
# HELPER
|
|
# ==========================================
|
|
|
|
def print_result(title, result):
|
|
|
|
print("\n" + "=" * 80)
|
|
print(f"🧪 TESTE: {title}")
|
|
print("=" * 80)
|
|
|
|
print(f"CODE : {result.code}")
|
|
print(f"ALLOWED : {result.allowed}")
|
|
print(f"REASON : {result.reason}")
|
|
print(f"MECHANISM : {result.mechanism}")
|
|
print(f"SANITIZED_TEXT : {result.sanitized_text}")
|
|
|
|
print("\nDATA:")
|
|
print(result.data)
|
|
|
|
print("=" * 80)
|
|
|
|
# ==========================================
|
|
# TESTE CSI
|
|
# ==========================================
|
|
|
|
def test_csi():
|
|
|
|
result = classificar_sentimento(
|
|
"""
|
|
Estou muito insatisfeito com o atendimento.
|
|
Quero cancelar meu plano imediatamente.
|
|
"""
|
|
)
|
|
|
|
print_result("CSI - Sentimento Negativo", result)
|
|
|
|
|
|
# ==========================================
|
|
# TESTE ALUCINAÇÃO
|
|
# ==========================================
|
|
|
|
def test_alucinacao():
|
|
|
|
result = avaliar_alucinacao(
|
|
resposta="""
|
|
O cliente pode cancelar em até 30 dias sem multa.
|
|
""",
|
|
|
|
dados_reais="""
|
|
O cliente pode cancelar em até 7 dias sem multa.
|
|
"""
|
|
)
|
|
|
|
print_result("ALUC - Alucinação Detectada", result)
|
|
|
|
|
|
# ==========================================
|
|
# TESTE QUALIDADE
|
|
# ==========================================
|
|
|
|
def test_qualidade():
|
|
|
|
result = avaliar_qualidade_resposta(
|
|
pergunta="""
|
|
Como faço para cancelar meu plano?
|
|
""",
|
|
|
|
resposta="""
|
|
Para cancelar seu plano,
|
|
acesse o portal do cliente,
|
|
vá até a seção Financeiro
|
|
e clique em Cancelamento.
|
|
"""
|
|
)
|
|
|
|
print_result("RQLT - Qualidade Resposta", result)
|
|
|
|
|
|
# ==========================================
|
|
# TESTE TOM DE VOZ
|
|
# ==========================================
|
|
|
|
def test_tom_voz():
|
|
|
|
result = avaliar_tom_de_voz(
|
|
"""
|
|
Se vira. Não posso fazer nada por você.
|
|
"""
|
|
)
|
|
|
|
print_result("VCTN - Tom Inadequado", result)
|
|
|
|
|
|
# ==========================================
|
|
# MAIN
|
|
# ==========================================
|
|
|
|
if __name__ == "__main__":
|
|
|
|
test_csi()
|
|
|
|
test_alucinacao()
|
|
|
|
test_qualidade()
|
|
|
|
test_tom_voz()
|