MKooi/Coding_Agents
0
1from agents.planner import planner2from agents.coder import coder3from agents.reviewer import reviewer4from agents.reasoner import reasoner5 6from voting import voting_engine7from symbolic_verifier import verify_formula8from numeric_verifier import numeric_verify9from sandbox import run_code_safely10from confidence import compute_confidence11 12 13def run_pipeline(problem, language="python"):14 15 # 1️⃣ Planner16 plan = planner(problem)17 if not plan:18 return {"error": "Planner failed"}19 20 # 2️⃣ Dual Reasoning21 r1 = reasoner(plan, temperature=0)22 r2 = reasoner(plan, temperature=0.5)23 24 chosen_reasoning, dual_agreement = voting_engine(r1, r2)25 26 if not chosen_reasoning:27 return {"error": "Reasoning failed"}28 29 formula = chosen_reasoning.get("formula")30 derivation = chosen_reasoning.get("derivation")31 32 # 3️⃣ Verification33 symbolic_verification = verify_formula(problem, formula) if formula else {"valid": False}34 symbolic_pass = symbolic_verification.get("valid", False)35 36 numeric_pass = numeric_verify(formula) if formula else False37 38 # Retry if failed39 if not symbolic_pass or not numeric_pass:40 r_retry = reasoner(plan, temperature=0.7)41 42 formula = r_retry.get("formula")43 derivation = r_retry.get("derivation")44 45 symbolic_verification = verify_formula(problem, formula) if formula else {"valid": False}46 symbolic_pass = symbolic_verification.get("valid", False)47 48 numeric_pass = numeric_verify(formula) if formula else False49 50 # 4️⃣ Code Generation (Hybrid aware)51 coder_input = {52 "problem": problem,53 "formula": formula,54 "instruction": "Write simple code that prints the derivative result only."55 }56 57 coder_result = coder(coder_input, language=language)58 59 if not coder_result:60 return {"error": "Code generation failed"}61 62 code = coder_result.get("code")63 64 if not code:65 return {"error": "Empty code returned"}66 67 # 5️⃣ Sandbox68 sandbox_result = run_code_safely(code, language)69 sandbox_success = sandbox_result.get("returncode", 1) == 070 71 # 6️⃣ Review72 review = reviewer(code, language=language)73 74 if isinstance(review, str):75 reviewer_approved = "APPROVED" in review.upper()76 else:77 reviewer_approved = review.get("approved", False)78 79 # 7️⃣ Confidence80 confidence = compute_confidence(81 dual_agreement,82 symbolic_pass,83 numeric_pass,84 sandbox_success,85 reviewer_approved86 )87 88 return {89 "plan": plan,90 "formula": formula,91 "derivation": derivation,92 "symbolic_verification": symbolic_verification,93 "numeric_pass": numeric_pass,94 "code": code,95 "sandbox": sandbox_result,96 "confidence": confidence97 }