ZackBradshaw's picture
Upload folder using huggingface_hub
e67043b verified
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