monty-go: GoでLLM生成PythonをWASM経由で実行、コンテナ不要
Fugue Labsのmonty-goは、PydanticのMonty PythonインタプリタをWASMとwazero経由で純Goにラップし、エージェントがLLMが書いたPythonをサブミリ秒の起動と外部呼び出しの一時停止/再開で安全に実行できるようにします。

Fugue Labsはmonty-goをリリースしました。これはPydanticのMonty PythonインタプリタをWebAssemblyにコンパイルし、wazero経由で読み込む純Goラッパーです。GoエージェントはLLMが生成したPythonコードをサンドボックス化されたWASMインスタンスで実行できます—コンテナもCGOもサブプロセスも不要で、起動はサブミリ秒です。コードが外部関数を呼び出すたびにインタプリタは一時停止し、Goコードがそれを処理して再開できます。
ツール呼び出しではなくコード実行を選ぶ理由
売り文句:LLMは逐次のツール呼び出しよりもコードを書く方が速く安く動作します。天気検索と比較のための3往復の代わりに、モデルはGo関数を呼び出す短いPythonスクリプトを書きます。1回のモデル呼び出し、3回のツール呼び出し、すべてGoバイナリに埋め込まれた2.9MBのWASMバイナリ内で完結します。
クイックスタートと外部関数
基本的な実行は簡単です:式と入力マップを渡すと結果が得られます。本当の力は外部関数呼び出しにあります。Montyは宣言された関数への各呼び出しで一時停止し、Goコールバックがそれを実行し、Montyは戻り値で再開します。複数の関数を登録し、名前でディスパッチできます。
リソース制限と安全性
暴走コードは設定可能な制限で処理されます:最大実行時間、メモリ、割り当て、再帰深度。無限ループやメモリ爆弾は*MontyErrorでクリーンに終了します。Goのコンテキスト期限も尊重されます。ファイルシステムと環境へのアクセスはコールバック経由でルーティングされ、コードが許可しない限り何も起こりません。
Gollem統合
monty-goはFugueのGoエージェントフレームワークGollemのコードモードを支えるために設計されています。LLMはツールを関数として呼び出すPythonを書き、Montyがそれを安全に実行し、Gollemがフローを調整します。READMEは、従来の逐次ツール呼び出しと比較して、1回のLLM往復で3回のツール呼び出しが可能で、レイテンシとコストが低いと主張しています。
3回のモデル呼び出しではなく1回。PythonコードがGo関数を呼び出し、Montyは各呼び出しで一時停止し、Goコードが実行し、Montyが再開します。コンテナなし。サンドボックスサービスなし。exec()なし。Goバイナリに埋め込まれた2.9MBのWASMバイナリだけです。
| 側面 | 従来のツール呼び出し | monty-goによるコードモード |
|---|---|---|
| LLM呼び出し | ツール使用ごとに1回 | 全ツールで1回 |
| レイテンシ | N × モデル往復 | 1 × モデル往復 + μs実行 |
| コスト | N × 入出力トークン | 1 × 入出力トークン |
| ロジック | LLMが段階的に推論 | LLMがロジックを一度に記述 |
| 制御フロー | なし(逐次のみ) | ループ、条件分岐、変数 |
| エラーハンドリング | LLMが各失敗に反応 | Pythonのtry/except |
| セキュリティ | ✅(ツールはGo関数) | ✅(WASMサンドボックス + 独自コールバック) |
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。