Akarztrk's picture
Initial release: OpenEnv Flow Debugger
6aaa5e3 verified
import re
from flow_debugger_env.env import FlowDebugEnv
def rule_based_agent(obs):
condition_step = next(s for s in obs["steps"] if s["name"] == "Condition_Check")
expr = condition_step["inputs"]["expression"]
fixed = expr
fixed = fixed.replace("@equal(", "@equals(")
fixed = re.sub(r",\s*xlsx\s*\)", r",'xlsx')", fixed)
fixed = re.sub(r"\)\s*'xlsx'\s*\)", r"),'xlsx')", fixed)
if fixed.count("(") > fixed.count(")"):
fixed = fixed + (")" * (fixed.count("(") - fixed.count(")")))
while fixed.endswith("))") and fixed.count(")") > fixed.count("("):
fixed = fixed[:-1]
return {
"action": "patch_step",
"step": "Condition_Check",
"field": "inputs.expression",
"value": fixed
}
def main():
env = FlowDebugEnv.from_json("flow_debugger_env/data/cases.json", max_attempts=3, seed=42)
obs = env.reset()
done = False
total = 0.0
while not done:
action = rule_based_agent(obs)
result = env.step(action)
obs, reward, done, info = result.obs, result.reward, result.done, result.info
total += reward
print("Finished:", info, "total_reward:", total)
if __name__ == "__main__":
main()