| |
| |
| import json, random, time, re, sys |
| from collections import Counter |
| from difflib import SequenceMatcher |
|
|
| def main(): |
| results = {} |
| print("STARTING DEEP VERIFICATION", flush=True) |
|
|
| |
| print("PART 1: Contamination Resistance", flush=True) |
| from datasets import load_dataset |
| pro = load_dataset("ScaleAI/SWE-bench_Pro", split="test") |
| orig = load_dataset("princeton-nlp/SWE-bench", split="test") |
| print(f"Pro: {len(pro)}, Orig: {len(orig)}", flush=True) |
|
|
| pro_ids = set(pro["instance_id"]) |
| orig_ids = set(orig["instance_id"]) |
| overlap = pro_ids & orig_ids |
| print(f"ID overlap: {len(overlap)}", flush=True) |
|
|
| def ngrams(text, n): |
| w = text.lower().split() |
| return set(tuple(w[i:i+n]) for i in range(len(w)-n+1)) |
|
|
| pro_ng = set() |
| pro_ng_c = Counter() |
| for item in pro: |
| ng = ngrams(item["problem_statement"], 5) |
| pro_ng.update(ng) |
| pro_ng_c.update(ng) |
| orig_ng = set() |
| for item in orig: |
| orig_ng.update(ngrams(item["problem_statement"], 5)) |
|
|
| olap = pro_ng & orig_ng |
| pct = 100*len(olap)/max(len(pro_ng),1) |
| print(f"Pro 5-grams: {len(pro_ng):,}, Orig: {len(orig_ng):,}, Overlap: {len(olap):,} ({pct:.2f}%)", flush=True) |
|
|
| top = sorted([(" ".join(n), pro_ng_c[n]) for n in list(olap)[:500]], key=lambda x:-x[1])[:15] |
| for ngram, cnt in top: |
| print(f" '{ngram}' x{cnt}", flush=True) |
|
|
| pro_repos = set(pro["repo"]) |
| orig_repos = set() |
| for item in orig: |
| p = item["instance_id"].split("__") |
| if len(p) > 1: |
| orig_repos.add(p[0].replace("_","/")) |
| repo_olap = pro_repos & orig_repos |
| print(f"Repo overlap: {repo_olap}", flush=True) |
|
|
| random.seed(42) |
| sidx = random.sample(range(len(pro)), 30) |
| sims = [] |
| for idx in sidx: |
| pt = pro[idx]["problem_statement"][:3000] |
| ms = 0 |
| bm = "" |
| for oi in list(orig)[:300]: |
| s = SequenceMatcher(None, pt, oi["problem_statement"][:3000]).ratio() |
| if s > ms: |
| ms = s |
| bm = oi["instance_id"] |
| sims.append({"pro_id": pro[idx]["instance_id"], "max_sim": round(ms,4), "best_match": bm}) |
| avg = sum(s["max_sim"] for s in sims)/len(sims) |
| mx = max(s["max_sim"] for s in sims) |
| hi = len([s for s in sims if s["max_sim"] > 0.5]) |
| print(f"Per-instance sim: avg={avg:.4f}, max={mx:.4f}, >50%={hi}/30", flush=True) |
|
|
| results["contamination"] = { |
| "id_overlap": len(overlap), |
| "ngram_overlap_pct": round(pct,2), |
| "top_ngrams": [{"ngram":n,"count":c} for n,c in top[:10]], |
| "repo_overlap": list(repo_olap), |
| "per_instance": {"avg":round(avg,4),"max":round(mx,4),"high":hi,"sample":30}, |
| "details": sims |
| } |
|
|
| |
| print("\nPART 2: Agent Solve Rate", flush=True) |
| from huggingface_hub import InferenceClient |
| repo_groups = {} |
| for i, item in enumerate(pro): |
| repo_groups.setdefault(item["repo"], []).append(i) |
| random.seed(42) |
| repos = list(repo_groups.keys()) |
| random.shuffle(repos) |
| sampled = [repo_groups[r][0] for r in repos[:10]] |
| print(f"Sampled {len(sampled)} tasks", flush=True) |
|
|
| client = InferenceClient() |
| model = "Qwen/Qwen2.5-7B-Instruct" |
| agent_results = [] |
| for tn, idx in enumerate(sampled): |
| item = pro[idx] |
| prob = item["problem_statement"][:2000] |
| prompt = f"Given this bug, write a unified diff patch.\n\nRepo: {item['repo']}\nBug: {prob}\n\nPatch:\n```diff\n" |
| try: |
| t0 = time.time() |
| resp = client.text_generation(prompt, model=model, max_new_tokens=1024, temperature=0.0) |
| el = time.time() - t0 |
| dm = re.search(r"```diff\n(.*?)```", resp, re.DOTALL) |
| patch = dm.group(1).strip() if dm else resp[:500] |
| hd = patch.startswith("---") or patch.startswith("@@") |
| hc = "diff --git" in patch or "--- a/" in patch |
| agent_results.append({"id": item["instance_id"], "repo": item["repo"], "len": len(patch), "valid_diff": hd or hc, "time": round(el,1)}) |
| print(f" [{tn+1}/10] {item['instance_id']}: {el:.1f}s, valid_diff={hd or hc}", flush=True) |
| except Exception as e: |
| print(f" [{tn+1}/10] {item['instance_id']}: ERROR {e}", flush=True) |
| agent_results.append({"id": item["instance_id"], "repo": item["repo"], "error": str(e)}) |
| time.sleep(0.5) |
|
|
| ok = [r for r in agent_results if "error" not in r] |
| vd = [r for r in ok if r.get("valid_diff")] |
| print(f"Format-compliant diffs: {len(vd)}/{len(agent_results)}", flush=True) |
| results["agent_solve"] = { |
| "model": model, |
| "tasks": len(agent_results), |
| "valid_diffs": len(vd), |
| "rate": f"{len(vd)}/{len(agent_results)}", |
| "note": "Format compliance only, NOT test-verified", |
| "details": agent_results |
| } |
|
|
| results["eval_repo_evidence"] = { |
| "eval_repo_url": "https://github.com/scaleapi/SWE-bench_Pro-os", |
| "stars": 480, |
| "run_scripts_count": "1000+ (confirms >731 public)", |
| "instance_dockerfile_count": 731, |
| "has_separate_leaderboards": True, |
| } |
|
|
| print("\nFINAL RESULTS:", flush=True) |
| print(json.dumps(results, indent=2, default=str), flush=True) |
| print("DONE", flush=True) |
|
|
| if __name__ == "__main__": |
| main() |
|
|