monty-go: безопасное выполнение Python из Go без контейнеров и CGO

monty-go: Pure-Go wrapper for Pydantic's Monty Python Interpreter

monty-go — это обёртка на чистом Go вокруг интерпретатора Python Monty от Pydantic, скомпилированного в WebAssembly и запускаемого через wazero. Она позволяет Go-агентам безопасно выполнять код, сгенерированный LLM, в песочнице WASM с запуском менее миллисекунды. Код может вызывать внешние функции Go, которые обрабатываются через колбэки, а доступ к файловой системе и окружению контролируется. Встроены ограничения ресурсов, перехват print, а также интеграция с фреймворком Gollem для режима code-mode. Это позволяет LLM писать код вместо последовательных вызовов инструментов, сокращая количество вызовов модели и задержку.

Вместо трёх последовательных вызовов инструментов LLM пишет код, который вызывает ваши Go-функции, Monty приостанавливается на каждом вызове, ваш Go-код выполняет его, и Monty возобновляет работу.
  1. camdenclark

    Забавно — я как раз сам написал чистую обёртку на Go, потому что эта сильно устарела! https://github.com/CamdenClark/monty-go Она реализует новую модель подпроцессов для запуска VM Monty, которая помогает изолировать главный поток, если одна из VM упадёт. Так как Monty теперь распространяется как бинарник, не нужно заниматься встраиванием WASM — достаточно убедиться, что бинарник установлен. (По аналогии с тем, как, например, запускают Playwright из Go)

  2. mkl

    Сам Monty кажется гораздо интереснее, чем обёртка на Go для WASM-рантайма, запускающего Rust-реализацию, которая выполняет Python-код. Полгода назад было большое обсуждение: https://news.ycombinator.com/item?id=46918254

  3. digdugdirk

    Это Python в Rust в WASM в Go? Имя Monty было выбрано идеально — пока я читал README, где-то на фоне играла Yakety Sax. Шутки в сторону, мне очень нравится видеть, как WASM служит мостом для таких крутых вещей.

Ещё за этот день

2026-08-30