monty-go:LLM生成のPythonコードをGoから安全に実行するWASMベースのラッパー
monty-go: Pure-Go wrapper for Pydantic's Monty Python Interpreter
monty-goは、PydanticのMonty PythonインタープリタをWebAssemblyにコンパイルし、純GoのWASMランタイムwazeroで実行するラッパーです。コンテナやサブプロセス、CGOを使わずに、LLMが生成したPythonコードをサンドボックス内で安全に実行できます。外部関数呼び出しでは実行を一時停止し、Goのコールバックで処理を継続。リソース制限、print出力のキャプチャ、OSコールのルーティングも可能です。Gollemエージェントフレームワークと組み合わせることで、複数のツール呼び出しを1回のLLM呼び出しに集約できます。
LLMは、逐次的なツール呼び出しを行うよりも、コードを書く方が高速で、安価で、信頼性が高い。
HNでの議論
12- camdenclark
面白いですね。ちょうど私も純粋なGoラッパーを自分で作ったばかりで、このラッパーはかなり古いんです!https://github.com/CamdenClark/monty-go
Monty VMを起動するための新しいサブプロセスモデルを実装していて、VMの1つがクラッシュしてもメインスレッドを分離したままに保つのに役立ちます。
Montyは現在バイナリとしてパッケージ化されているので、WASMの埋め込み作業は不要で、バイナリが存在することを確認するだけで済みます。(例えば、GoでPlaywrightを実行するのと同じような感じです)
- mkl
Goラッパーよりも、Monty自体の方がはるかに興味深いように思えます。結局のところ、それはPythonコードを実行するRust実装を実行するWASMランタイムのためのラッパーに過ぎません。6ヶ月前に大きな議論がありました:https://news.ycombinator.com/item?id=46918254
- digdugdirk
これはGoの中のWASMの中のRustの中のPythonですか?
Montyという名前は完璧な選択でした。READMEを読んでいる間、遠くでヤケティ・サックスが聞こえてきました。
冗談はさておき、WASMがこういった素晴らしいことを可能にする橋渡しとして使われているのを見るのは大好きです。