diff options
| author | sigoden <sigoden@gmail.com> | 2024-10-26 08:26:52 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-26 08:26:52 +0800 |
| commit | e1a26cb4f2032dfb44908ecb73b9039ca1c7dc04 (patch) | |
| tree | 7cabfa29d7c5a0ccbbfff822ffb3bd4b607bd563 /tools | |
| parent | fbeaa9cb2c5b7a8e0d9114a62c270c6fe8024c31 (diff) | |
| download | llm-functions-docker-e1a26cb4f2032dfb44908ecb73b9039ca1c7dc04.tar.gz | |
refactor: execute js/py code (#118)
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/execute_js_code.js | 16 | ||||
| -rw-r--r-- | tools/execute_py_code.py | 12 |
2 files changed, 22 insertions, 6 deletions
diff --git a/tools/execute_js_code.js b/tools/execute_js_code.js index 6bad67a..3ca0401 100644 --- a/tools/execute_js_code.js +++ b/tools/execute_js_code.js @@ -1,5 +1,3 @@ -const vm = require('vm'); - /** * Execute the javascript code in node.js. * @typedef {Object} Args @@ -7,7 +5,15 @@ const vm = require('vm'); * @param {Args} args */ exports.run = function run({ code }) { - const context = vm.createContext({}); - const script = new vm.Script(code); - return script.runInContext(context); + let log = ""; + const oldStdoutWrite = process.stdout.write.bind(process.stdout); + process.stdout.write = (chunk, _encoding, callback) => { + log += chunk; + if (callback) callback(); + }; + + eval(code); + + process.stdout.write = oldStdoutWrite; + return log; } diff --git a/tools/execute_py_code.py b/tools/execute_py_code.py index 3c6beb4..ad9310c 100644 --- a/tools/execute_py_code.py +++ b/tools/execute_py_code.py @@ -1,6 +1,16 @@ +import io +import sys + def run(code: str): """Execute the python code. Args: code: Python code to execute, such as `print("hello world")` """ - return eval(code)
\ No newline at end of file + old_stdout = sys.stdout + new_stdout = io.StringIO() + sys.stdout = new_stdout + + exec(code) + + sys.stdout = old_stdout + return new_stdout.getvalue()
\ No newline at end of file |
