File size: 1,048 Bytes
b62c338 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import subprocess
import tempfile
# -------------------------
# ์ฝ๋ ์คํ๊ธฐ
# -------------------------
def run_code(code):
try:
with tempfile.NamedTemporaryFile(suffix=".py", delete=False) as f:
f.write(code.encode("utf-8"))
path = f.name
result = subprocess.run(
["python", path],
capture_output=True,
timeout=3
)
return result.stdout.decode(), result.stderr.decode()
except Exception as e:
return "", str(e)
# -------------------------
# ์ฝ๋ ์์ ๋ฃจํ
# -------------------------
def fix_loop(model_generate, prompt, max_iter=3):
code = model_generate(prompt)
for i in range(max_iter):
out, err = run_code(code)
if err == "":
return code # ์ฑ๊ณต
fix_prompt = f"""
๋ค์ ์ฝ๋ ์ค๋ฅ๋ฅผ ์์ ํด์ฃผ์ญ์์ค.
์ฝ๋:
{code}
์๋ฌ:
{err}
ํ๊ตญ์ด ์กด๋๋ง๋ก ์์ ๋ ์ฝ๋๋ง ์ถ๋ ฅํ์ญ์์ค.
"""
code = model_generate(fix_prompt)
return code
|