Spaces:
Runtime error
Runtime error
File size: 1,520 Bytes
e67043b |
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 |
from ..tool import Tool
class CodeInterpreter:
def __init__(self, timeout=300):
self.globals = {}
self.locals = {}
self.timeout = timeout
def execute_code(self, code):
try:
# Wrap the code in an eval() call to return the result
wrapped_code = f"__result__ = eval({repr(code)}, globals(), locals())"
exec(wrapped_code, self.globals, self.locals)
return self.locals.get("__result__", None)
except Exception as e:
try:
# If eval fails, attempt to exec the code without returning a result
exec(code, self.globals, self.locals)
return "Code executed successfully."
except Exception as e:
return f"Error: {str(e)}"
def reset_session(self):
self.globals = {}
self.locals = {}
def build_tool(config) -> Tool:
tool = Tool(
"Python Code Interpreter Tool",
"Execute Python Codes",
name_for_model="code_interpreter",
description_for_model="Plugin for executing python codes",
logo_url=None,
contact_email=None,
legal_info_url=None,
)
# Usage example
interpreter = CodeInterpreter()
@tool.get("/execute_code")
def execute_python_code(code: str):
"""execute Python expressions with Python Interpreter, can be used as a simple calculator e.g., "(123 + 234) / 23 * 19" """
return interpreter.execute_code(code)
return tool
|