36 lines
1.7 KiB
Python
36 lines
1.7 KiB
Python
from pathlib import Path
|
|
import yaml
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
|
|
def test_contas_transactional_parameters_have_customer_facing_prompts():
|
|
data = yaml.safe_load((ROOT / "config" / "tools.yaml").read_text(encoding="utf-8"))
|
|
tools = data["tools"]
|
|
expected = {
|
|
("cancelar_vas_avulso", "subject"): "Qual serviço você deseja cancelar?",
|
|
("tratar_vas_estrategico", "subject"): "Qual serviço ou benefício você deseja tratar?",
|
|
("validar_contestacao", "subject"): "Qual cobrança ou item você não reconhece?",
|
|
("validar_contestacao", "valor"): "Qual é o valor da cobrança?",
|
|
("contestar_cobranca", "subject"): "Qual cobrança ou item você deseja contestar?",
|
|
("contestar_cobranca", "valor"): "Qual é o valor da cobrança que você deseja contestar?",
|
|
}
|
|
for (tool, field), prompt in expected.items():
|
|
assert tools[tool]["args_schema"][field]["user_prompt"] == prompt
|
|
assert field not in prompt.lower().replace("subject", "") if field == "subject" else True
|
|
|
|
|
|
def test_billing_prompt_forbids_unsupported_causal_hypotheses():
|
|
prompt = yaml.safe_load((ROOT / "config" / "prompts" / "billing.yaml").read_text(encoding="utf-8"))["system"]
|
|
assert "fim de promoção" in prompt
|
|
assert "perda de elegibilidade" in prompt
|
|
assert "sem evidência explícita" in prompt
|
|
assert "Não prometa nem estime valores de faturas futuras" in prompt
|
|
|
|
|
|
def test_support_prompt_does_not_simulate_handoff_or_terminal_success():
|
|
prompt = yaml.safe_load((ROOT / "config" / "prompts" / "support.yaml").read_text(encoding="utf-8"))["system"]
|
|
assert "Nunca anuncie transferência" in prompt
|
|
assert "não simule handoff em texto livre" in prompt
|
|
assert "OUT_OF_SCOPE" in prompt
|