Dynamically patch a Python function's source code at runtime
Как заменить код функции «на лету»
Python позволяет переписывать тело функции во время работы программы:
-
Берём исходник новой функции как строку.
new_src = "def f(x): return x * 2"
-
Компилируем:
code = compile(new_src, "<magic>", "exec")
-
Выполняем в нужном пространстве имён:
ns = {} exec(code, {}, ns)
-
Подменяем старую функцию:
f = ns["f"]
f(21)
теперь возвращает 42
.
Зачем это нужно
Такой трюк позволяет LLM-агентам генерировать и сразу запускать код с доступом к текущему контексту. Это удобно для ToolBot, но открывает огромную дыру в безопасности: любой сгенерированный код получает доступ ко всем переменным процесса.