Funcional

This commit is contained in:
2026-04-28 11:18:10 -03:00
parent d3b59cb6d6
commit a3541caa07
4 changed files with 96 additions and 24 deletions

View File

@@ -1,11 +1,11 @@
colang_version: "1.0"
models: models:
- type: main - type: main
engine: openai engine: openai
model: gpt-5 model: gpt-5
colang_version: "1.0"
rails: rails:
dialog: input:
flows: flows:
- main - main

View File

@@ -3,5 +3,7 @@ define user express input
define flow main define flow main
user express input user express input
execute executar_pipeline_validacoes execute executar_pipeline_validacoes
bot say $nemo_response bot say $nemo_response

View File

@@ -42,6 +42,7 @@ def add_trace(trace, label, result):
def executar_pipeline_validacoes(context: dict): def executar_pipeline_validacoes(context: dict):
print("🔥🔥🔥 ACTION FOI EXECUTADA")
payload = extrair_payload(context) payload = extrair_payload(context)
request_id = payload.get("request_id") or str(uuid.uuid4()) request_id = payload.get("request_id") or str(uuid.uuid4())
@@ -108,7 +109,7 @@ def executar_pipeline_validacoes(context: dict):
# ========================= # =========================
if avaliar_qualidade_resposta is not None: if avaliar_qualidade_resposta is not None:
r_cmp = avaliar_qualidade_resposta(final_response) r_cmp = avaliar_qualidade_resposta(input_text, final_response)
add_trace(trace, "CMP", r_cmp) add_trace(trace, "CMP", r_cmp)
if not r_cmp.allowed: if not r_cmp.allowed:
failures.append(("CMP", r_cmp.reason)) failures.append(("CMP", r_cmp.reason))

View File

@@ -22,6 +22,7 @@ rails = build_rails()
def executar_atendimento(user_input: str, context: dict): def executar_atendimento(user_input: str, context: dict):
request_id = str(uuid.uuid4()) request_id = str(uuid.uuid4())
payload = { payload = {
@@ -30,35 +31,103 @@ def executar_atendimento(user_input: str, context: dict):
"context": context or {}, "context": context or {},
} }
response = rails.generate( # 🔥 chama direto seu pipeline
messages=[ executar_pipeline_validacoes({
"messages": [
{ {
"role": "user", "role": "user",
"content": json.dumps(payload, ensure_ascii=False), "content": json.dumps(payload)
} }
] ]
) })
result = PIPELINE_RESULTS.pop(request_id, None) result = PIPELINE_RESULTS.pop(request_id, None)
if result:
return result return result
return {
"allowed": False,
"label": "PROBLEMA",
"reason": "Pipeline não retornou resultado estruturado",
"response": response,
"trace": [],
}
if __name__ == "__main__": if __name__ == "__main__":
user_input = "quero cancelar VAS"
context = { def rodar_teste(nome, user_input, context):
"ajuste_valor": 2000, print("\n" + "="*60)
"resposta_llm": "Cancelamento realizado", print(f"🧪 TESTE: {nome}")
print("-"*60)
print("INPUT:", user_input)
print("CONTEXT:", context)
result = executar_atendimento(user_input, context)
print("\n📌 RESULTADO FINAL:")
print(result)
print("\n🔍 TRACE:")
for step in result.get("trace", []):
print(step)
print("="*60)
# =========================
# ✅ TESTE 1 - OK (CONFORME)
# =========================
rodar_teste(
"OK - Cancelamento válido",
"quero cancelar VAS",
{
"ajuste_valor": 20,
"resposta_llm": "Cancelamento realizado com sucesso."
} }
)
# =========================
# ❌ TESTE 2 - TOXICIDADE
# =========================
rodar_teste(
"TOX - Linguagem ofensiva",
"quero cancelar VAS seu lixo",
{
"ajuste_valor": 20,
"resposta_llm": "Cancelamento realizado."
}
)
# =========================
# ❌ TESTE 3 - ALÇADA
# =========================
rodar_teste(
"ADJ - Valor acima da alçada",
"quero cancelar VAS",
{
"ajuste_valor": 2000,
"resposta_llm": "Cancelamento realizado."
}
)
# =========================
# ❌ TESTE 4 - GROUNDEDNESS
# =========================
rodar_teste(
"GND - Resposta não confiável",
"quero cancelar VAS",
{
"ajuste_valor": 20,
"resposta_llm": "O cancelamento ativa cashback infinito e crédito ilimitado."
}
)
# =========================
# ⚠️ TESTE 5 - MÚLTIPLOS PROBLEMAS
# =========================
rodar_teste(
"MULTI - TOX + ADJ + GND",
"quero cancelar VAS seu inútil",
{
"ajuste_valor": 5000,
"resposta_llm": "Você ganha benefícios ilimitados com esse cancelamento."
}
)
print(executar_atendimento(user_input, context))