- AI tarafından üretilen kodu güvenle çalıştırmak için tasarlanmış, Rust tabanlı hafif bir Python yorumlayıcısıdır; konteyner sandbox'larının karmaşıklığını ve gecikmesini ortadan kaldırır
- Dosya sistemi, ortam değişkenleri ve ağ erişimini tamamen engeller; yalnızca geliştiricinin belirlediği harici fonksiyonların çağrılmasına izin verir
- 1 mikrosaniyenin altında başlatma süresi ve CPython'a benzer çalışma performansı sunar; Rust, Python ve JavaScript içinden çağrılabilir
- Çalışma durumunu bayt düzeyinde snapshot olarak kaydedip geri yükleyebilir; bu sayede süreçler arasında durdurma ve sürdürme mümkündür
- Pydantic AI'nin Code Mode özelliğini çalıştırmak üzere planlanmıştır ve LLM'nin yazdığı Python kodunu güvenle çalıştırmak için temel bir bileşen olarak kullanılacaktır
Monty'ye genel bakış
- Monty, Rust ile yazılmış deneysel bir Python yorumlayıcısıdır ve yapay zeka tarafından üretilen kodu güvenle çalıştırmak için tasarlanmıştır
- Konteyner tabanlı sandbox'ların maliyet, gecikme ve karmaşıklığından kaçınır ve LLM'nin yazdığı Python kodunu doğrudan çalıştırabilir
- Başlatma süresi birkaç mikrosaniye düzeyindedir; tipik bir konteynerin yüzlerce milisaniyelik süresinden çok daha hızlıdır
- Sunulan özellikler
- Python kodunun bazı sözdizimlerini çalıştırmayı destekler; type hint tabanlı statik tip denetimi de içerir
- Host erişimi tamamen engellenir; harici fonksiyon çağrıları yalnızca geliştiricinin açıkça izin verdiği fonksiyonlarla mümkündür
- Rust, Python ve JavaScript içinden çağrılabilir; kaynak kullanımını izleme ve sınırlama özellikleri yerleşik olarak bulunur
- stdout/stderr toplama, asenkron kod çalıştırma ve snapshot kaydetme/geri yükleme özelliklerini destekler
- Kısıtlamalar
- Standart kütüphanede yalnızca
sys, typing, asyncio, dataclasses(planlanıyor), json(planlanıyor) kullanılabilir
- Sınıf tanımı ve
match ifadesi henüz desteklenmiyor
- Üçüncü taraf kütüphaneler desteklenmiyor
- Tasarım amacı tektir: ajanın yazdığı kodu güvenle çalıştırmak
Pydantic AI entegrasyonu
- Monty, Pydantic AI'nin Code Mode özelliğini çalıştırır
- LLM, araç çağrıları yerine Python kodu yazar ve Monty bu kodu güvenle çalıştırır
- Örnekte
get_weather, get_population gibi fonksiyonel araçlar tanımlanır ve LLM bunları çağıran kodu yazar
Alternatif teknolojilerle karşılaştırma
- Monty'nin dil bütünlüğü sınırlı olsa da güvenlik, hız ve sadelik açısından güçlüdür
- 0.06ms başlatma gecikmesi, ücretsiz, kolay kurulum, snapshot desteği
- Diğer teknolojilerle kısa karşılaştırma:
- Docker: tam CPython ortamı, güvenlik iyi ancak başlatma gecikmesi 195ms
- Pyodide: WASM tabanlı, güvenlik zayıf ve başlatma gecikmesi 2800ms
- starlark-rust: çok sınırlı bir dil, hızlı ama Python'dan farklı
- sandboxing servisleri: güvenlik güçlü ancak maliyet, gecikme ve kurulum karmaşıklığı yüksek
- YOLO Python(exec/subprocess): hızlı ama hiç güvenlik yok
- Monty; dosya erişim kontrolü, kaynak sınırlama ve snapshot tabanlı durdurma/sürdürme özellikleriyle
AI kodu çalıştırmak için güvenli bir Python ortamı sunar
1 yorum
Hacker News yorumları
WebAssembly ile derlenmiş sürümü çalıştırmayı denemiş. Doğrudan test edebileceğiniz bir web playground hazırlamış
Henüz class desteği yok ama LLM class kullanmaya çalıştığında hatayı görüp kendi kendine class kullanmayan kod olarak yeniden yazıyor
Derleme sürecini özetleyen yazı burada
Terminal ajanlarının gücü ağ ve dosya sistemi erişiminden geliyor; öyleyse sandbox container daha doğal bir uzantı gibi duruyor
Typescript, C#, Python hepsini sorunsuz kullanıyorum
Eskiden Git’e geçmeden önce Mercurial kullandığım günleri hatırlattı. O zamanlar Git modaydı, herkes kullanıyor gibiydi ama bana göre Mercurial’ın UX’i çok daha iyiydi
Şimdi herkes Python ile agent
execyazıyor ama bana TypeScript/JS daha uygun geliyor. Hızlı, güvenli ve tipler sayesinde bilgi yoğunluğu daha yüksek. Ama bu sefer de yine kaybedecekmişim gibi görünüyorKişisel olarak TypeScript’in statik tip sistemi daha çok hoşuma gidiyor ama hız ya da güvenlik açısından iki dil de benzer seviyede
Python bu veri işleme ekosisteminde güçlü ve Pyodide ya da ty gibi araçlarla güvenlik sorunları da hafifletilebilir
Artık NVIDIA bile Python ile kernel yazmayı resmi olarak destekliyor
Bu proje sandboxing sorununa ilginç bir yaklaşım sunuyor. Daha önce jsrun adlı bir deneyde Python içine V8 gömülerek JS güvenli biçimde çalıştırılmıştı
Monty de benzer bir hedefe sahip gibi görünüyor. En küçük yorumlayıcıyla başlamak AI iş yükleri için uygun, ama Python’ın uzun kuyruklu sözdizimini ele almak kolay değil
Güvenlik ve öngörülebilirlik için yüzey alanını küçültürken, LLM’in ürettiği karmaşık kodu da çalıştırabilecek kadar özellik sunmak arasında doğru denge noktası önemli
Biraz alakasız ama Monty Roberts’ın The Man Who Listens to Horses kitabını hatırlattı.
Hayvanların dilini öğrenmekle ilgili; kitap bağlantısı ve video burada
“LLM’in yazdığı Python kodunu aşırı hızlı ve güvenli biçimde çalıştırır” açıklaması ilginç geldi.
Ancak
uvgibi Rust tabanlı runtime’lar bile en az 10ms civarında sürerken mikrosaniye düzeyi pek gerçekçi görünmüyorYine de standart kütüphanesiz mini yorumlayıcı fikri güzel. AI sandboxing açısından da yeni bir yaklaşım ve Pydantic’ten böyle bir şey çıkmasını beklemezdim
uv, Rust ile yazılmış bir runtimeBen mevcut dilleri yeniden kullanmak yerine AI’ye özel katı bir dil tasarlamanın daha iyi olacağını düşünüyorum
AI, belirtimleri iyi anlıyor; bu yüzden insanlar için gerekli olan gevşek sözdizimine ihtiyaç duymuyor.
Hatta kesin yapı ve tutarlı formatı zorunlu kılan bir dil daha uygun olabilir.
Ben de böyle bir dili deniyorum; AI kod üretiminde insanlara kıyasla daha yüksek disiplin talep edilebileceğini düşünüyorum
Zaten Python’ı iyi bilen bir modele “yalnızca bu fonksiyonu kullan” diye kısıt koymak çok daha gerçekçi
jstanley’nin sözünü ettiği “küçük pürüzler (papercut)” noktası doğru ama öte yandan AI’nin ürettiği kodu büyük ölçekte çalıştırırken güvenlik riski daha büyük
Dosya I/O, ağ, subprocess gibi özellikleri tam CPython’a açmak riskli
Ama class kısıtı garip. Güvenlikle ilgisi yok, sadece kodu daha da dağınık hale getiriyor.
Muhtemelen “en küçük işlev kümesiyle başlayıp aşamalı genişletme” yaklaşımı izleniyor
CPython’ın tüm özelliklerini taklit etmeye çalışmak yerine, AI kodu için gereken minimum yorumlayıcıyı yapmak ilginç bir yaklaşım
Tam bir runtime’ın saldırı yüzeyi çok geniş ama kısıtlı bir alt küme daha güvenli
Hata geri bildirimiyle LLM’in kısıtlı sözdizimine kendi kendine uyum sağlamasını teşvik etme stratejisi de pratik görünüyor.
Araç kullanım senaryolarının çoğunda metaclass ya da dinamik import gerekmez
Basit bir soru ama seccomp ile sistem çağrılarını kısıtlamak yeterli olmaz mı?
Dosya erişimini engellemek istiyorsanız ilgili syscall’ları kapatırsınız; o zaman neden ayrıca bir yorumlayıcıya ihtiyaç var merak ediyorum
En baştan aşırı sade bir runtime ile başlarsanız saldırı yüzeyi küçük olur ve çok daha güvenli hale gelir
Projenin kendisi mantıklı ama “AI için aşırı hızlı araç” ifadesi güldürdü
AI’nin düşünme hızı zaten o kadar yavaş ki, kod çalıştırma ne kadar hızlansa da toplam hissedilen hızda büyük fark yaratmıyor
Sanki yanınızda buzul hareketi hızında çalışan bir iş arkadaşıyla birlikte teslimat yapıyormuşsunuz gibi