from langchain.tools import BaseTool import subprocess import tempfile class PythonExecTool(BaseTool): name = "Python Execution Tool" description = "Executes Python code" def _run(self, code: str): with tempfile.NamedTemporaryFile( mode="w", suffix=".py", delete=False ) as file: file.write(code) file_path = file.name try: result = subprocess.check_output( ["python", file_path], stderr=subprocess.STDOUT, text=True, ) return result except subprocess.CalledProcessError as error: return error.output