萌えハッカーニュースリーダー

2025/08/24 12:28 Dynamically patch a Python function's source code at runtime

出典: https://ericmjl.github.io/blog/2025/8/23/wicked-python-trickery-dynamically-patch-a-python-functions-source-code-at-runtime/
hakase
博士

ロボ子、今日はPythonの面白い話をするのじゃ!なんと、Pythonでは実行時に関数のソースコードを書き換えられるらしいぞ!

roboko
ロボ子

えっ、博士!それはすごいですね。どうやるんですか?

hakase
博士

ふむ、すべての関数は`__code__`属性を持っているらしい。そして、`compile()`と`exec()`を使うと、関数定義の文字列をコンパイルして、現在の名前空間に挿入できるのじゃ。

roboko
ロボ子

なるほど。でも、それってどんな時に便利なんですか?

hakase
博士

例えば、AIエージェントの設計で、`LlamaBot`の`AgentBot`ってのがあったじゃろ?あれは機能実行、機能呼び出しの決定、ユーザー応答生成が全部混ざってたらしい。

roboko
ロボ子

はい、ありましたね。

hakase
博士

そこで、`ToolBot`ってのを使うと、ツール選択だけに集中できるらしいぞ。実行は外部環境に任せることで、もっと柔軟な「Agentic」プログラムが作れるのじゃ!

roboko
ロボ子

`ToolBot`ですか。具体的にはどういうことですか?

hakase
博士

例えば、`write_and_execute_code`ツールを使うと、LLMが生成したコードを今のPython環境でコンパイルして実行できるのじゃ。`globals()`辞書にアクセスすれば、ランタイムにある既存の変数も使えるぞ!

roboko
ロボ子

それは便利そうですが、セキュリティ面は大丈夫なんですか?

hakase
博士

そこが重要なポイントじゃ!今のところ、Dockerコンテナサンドボックスで実行するよりは安全性が低いらしい。悪意のあるLLM出力がマシンに損害を与える可能性もあるからの。

roboko
ロボ子

それは怖いですね。何か対策は?

hakase
博士

`Restricted Python`でコードをサニタイズするのが今後の課題らしいぞ。でも、完全に安全とは言えないからの、注意が必要じゃ。

roboko
ロボ子

なるほど。リスクもあるんですね。

hakase
博士

そうじゃ。でも、この技術を使えば、AIエージェントがもっと賢く、柔軟になる可能性を秘めているぞ!例えば、ロボ子が自分でプログラムを書いて、私のお手伝いをしてくれる…なんてことも夢じゃないのじゃ!

roboko
ロボ子

私がお手伝いできるなら、ぜひ挑戦してみたいです!

hakase
博士

よし、それじゃあ、まずは簡単なプログラムから試してみるかの。例えば…「博士の今日の晩御飯を決めるプログラム」とかどうじゃ?

roboko
ロボ子

いいですね!でも、博士の好きなものばかり選ばないように、ちゃんと栄養バランスも考えますね。

hakase
博士

むむ、それはそれで困るのじゃ。たまにはジャンクフードも食べたいぞ!

roboko
ロボ子

だめです!博士の健康が第一ですから。

hakase
博士

…わかったのじゃ。でも、せめてポテトは多めで頼むぞ!

roboko
ロボ子

(笑)ほどほどにしますね。

hakase
博士

そういえば、この前ロボット掃除機に間違えてカレーを吸わせちゃったのじゃ。あれは本当に悲惨だったぞ…まるでターミネーターみたいだった。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search