import json, sys, urllib.request sys.path.insert(0, "/home/ubuntu/campanha_e/scripts") from avaliar_veredicto import chave_caso, split_por_caso K = int(sys.argv[1]) if len(sys.argv) > 1 else 25 ouro = [json.loads(l) for l in open("/home/ubuntu/campanha_e/data/processed/ouro_gold.jsonl")] _, teste = split_por_caso(ouro, 42) def load(p): d = {} for line in open(p): r = json.loads(line) d[(r["caso"], r["q"])] = r return d b2 = load("/home/ubuntu/campanha_b2/outputs/veredicto_b2/full_ouro/preds.jsonl") e1 = load("/home/ubuntu/campanha_e/outputs/veredicto_e1/full_ouro/preds.jsonl") v4 = load("/home/ubuntu/campanha_e/data/gold_preds_v4.jsonl") fonte = {"categoria": b2, "decisao": e1, "urgencia": v4} estados = {} for row in ouro: ck = chave_caso(row["estado"]) if ck in teste: estados[ck] = row["estado"] ok = {"categoria": 0, "decisao": 0, "urgencia": 0} tot = lat = 0 for ck in sorted(estados)[:K]: req = urllib.request.Request( "http://localhost:8200/decidir", data=json.dumps({"estado": estados[ck], "limiar": 0.8}).encode(), headers={"Content-Type": "application/json"}) resp = json.loads(urllib.request.urlopen(req, timeout=120).read()) lat += resp["latencia_ms"] tot += 1 for q in ("categoria", "decisao", "urgencia"): esperado = fonte[q][(ck, q)]["option_ids"][fonte[q][(ck, q)]["pred"]] got = resp["respostas"][q]["resposta"] if got == esperado: ok[q] += 1 else: print(f" MISMATCH {ck[:8]} {q}: api={got} esperado={esperado}") print(f"\n{tot} casos | latĂȘncia mĂ©dia {lat//max(tot,1)} ms/caso (3 forwards)") for q in ("categoria", "decisao", "urgencia"): print(f" {q}: {ok[q]}/{tot} concordam com o teste de mesa")