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, но открывает огромную дыру в безопасности: любой сгенерированный код получает доступ ко всем переменным процесса.