deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

TERMy, doğal dizi shell komutlarına hiçbir LLM kullanmadan çeviriyor

Açık kaynak asistan, düz dille ifade edilen istekleri düzenlenebilir JSON veri setleri, kelime dağarcığı etiketleri ve regex ile komutlara eşliyor; model yok, API maliyeti yok, anında yanıt.

TERMy, doğal dizi shell komutlarına hiçbir LLM kullanmadan çeviriyor

TERMy ne yapıyor

TERMy, "dosyaları listele" veya "test.txt dosyası oluştur" gibi kısa doğal dil isteklerini, süreçte hiçbir LLM, embedding veya başka bir makine öğrenmesi olmadan shell komutlarına dönüştüren açık kaynaklı bir terminal asistanı. Hacker News'te bir Show HN gönderisiyle tanıtıldı ve yanında, yazarı olan GitHub kullanıcısı gioblu'nun deterministik tasarıma götüren çıkmaz sokakları belgeleyen bir geliştirme günlüğü de yayınlandı.

O yazıya göre, ETH Zurich araştırmacılarının daha sonra silisyumda uyguladığı PJON ağ protokolüyle tanınan yazar, temmuz başında başlayarak projeye yaklaşık iki ay harcadı. Motivasyonun bir kısmı ekonomikti: artan AI fiyatları ve ağır sübvanse edilmiş token tüketiminin sona ermesi, bir yandan da sanal ortam etkinleştirmek gibi önemsiz işlemleri bir kodlama asistanına yaptırma alışkanlığı; aylık faturada yine de biriken bu küçük istekler. Yol gösterici soru şuydu: Bu sınıf bir görev için trilyonlarca parametreye gerçekten gerek var mı?

İşe yaramayan deneyler

Yazı, terk edilmiş iki yaklaşımdan bahsediyor. İlki, Python'da sıfırdan kurulmuş, NanoGPT ile karşılaştırılabilir, 100 ile 200 milyon parametreli bir transformer eğitim çerçevesiydi; sonradan flash attention ve Mamba gibi mimarilerle denemelerle genişletildi. Eğitim, 16GB RAM, 4GB NVIDIA GTX 1050 Ti ve bir i7-4790K'a sahip yaşlanan bir oyun makinesinde, Project Gutenberg kitapları, açık kaynak yazılımlar ve çeşitli Hugging Face veri setleri kullanılarak yürütüldü. Ortaya çıkan modeller tutarsız çıktılar üretiyor, tekrarlayan döngülere düşüyor ve teknik sorulara nadiren güvenilir biçimde yanıt veriyordu; düzgün bir koşunun en az bir ay kesintisiz eğitim gerektireceği tahmin edildi. Yazarın hükmü, modellerin garip bir şekilde canlı hissettirmesine rağmen savurgan ve amaç için pratikte işe yaramaz olduğuydu.

İkinci yaklaşım, howto adındaki bir harness ile ollama üzerinden açık ağırlıklı modeller kullandı; howto, modele yalnızca terminal komutlarıyla yanıt verecek şekilde ön prompt uyguluyor. ornith:9b, mistral:7b ve cogito:14b gibi modeller zaman zaman başarılı olsa da, özellikle yalnızca 4GB VRAM ile gecikme ve güvenilmezlik, onları günlük kullanım için elendi.

Deterministik ayrıştırıcı nasıl çalışıyor

Nihai tasarım üç açık kısıt taşıyor: embedding yok, makine öğrenmesi yok, LLM yok. Her şey yapılandırılmış veri üzerinde çalışıyor.

Bilgi, yazarın NPC-Forge projesinin bir parçası olan NDF 0.0 veri seti biçiminde saklanıyor. Her JSON girdisi bir kategoriyi, örnek ifadeleri, bir yanıt mesajını, isteğe bağlı "thinking" izlerini, bir izin düzeyini ve tool call'ları eşleştirir; bunlar tipik olarak komutu, bir açıklamayı, bir hedefi ve bir yürütme modunu taşıyan bir run_in_terminal çağrısıdır. Örnek bir girdi "list files" ifadesini ls -lah ile eşleştiriyor. Docker komutları gibi bir yetenek eklemek, veri seti dizinine yeni bir JSON dosyası bırakmak anlamına geliyor; yeniden eğitim veya fine-tuning söz konusu değil.

Argümanlı istekler intent şablonlarıyla ele alınıyor. <||vocab_create||> gibi kelime dağarcığı etiketleri, örneğin "create", "make", "generate", "craft" ve "forge" gibi eş anlamlı listelerle desteklenen kavram gruplarını temsil ediyor; dosya adı yuvası gibi tipli değişkenler ise düzenli ifadelerle çıkarılıyor. "create file test.txt" gibi bir istek şablonla eşleşiyor, dosya adını çıkarıyor ve ilgili komutu birleştiriyor.

Doğal dil anlama hattını uygulayan FlintParser ve FlintNPC sınıflarından oluşan uygulama, toplamda yaklaşık 1.000 satır kod. Yazar, yerel işletim sistemi ortamları için Python'da ve en az bir hedef daha için eşleşen uygulamalar yazdığını belirtiyor; tool call biçimi VS Code uyumlu olarak tanımlanıyor; yayımlanan yazı, tüm platformları adlandırmadan cümlenin ortasında kesiliyor.

İzinsel geçitlerle güvenlik

Her veri seti girdisi bir izin alanı taşıyor ve potansiyel olarak yıkıcı olan her şey "ask" ayarını kullanmak zorunda; yani asistan yürütmeden önce kullanıcıdan onay alıyor. Yazar, bunun aracı yapısal olarak güvenli kıldığını savunuyor; kalan risk, uygulamadaki veya bireysel veri seti girdilerindeki hatalarla sınırlı.

Neden önemli

TERMy, doğal dil arayüzünün arkasında bir model gerektirdiği varsayımını tersine çeviriyor. Kapsam, veri setlerinin kodladığı şeyle sınırlı ve kelime dağarcığının ile şablonların dışındaki ifadeler basitçe eşleşmeyecek. Ama bu zarfın içinde yanıtlar anında, çevrimdışı ve ücretsiz; oysa LLM destekli bir CLI saniyeler ve token başına maliyet harcıyor. JSON biçimi ayrıca davranışı tamamen denetlenebilir kılıyor: her komut eşlemesi insan tarafından okunabilir ve düzenlenebilir; bu da olasılıksal model çıktısının aksine, araç shell komutları yürüttüğünde önem taşıyor. AI abonelik fiyatları tırmanırken, proje, tanımlı bir dizi rutin terminal görevi için deterministik bir eşleştiricinin daha orantılı bir mühendislik tercihi olabileceğine dair faydalı bir veri noktası.

  • #open-source
  • #terminal
  • #command-line
  • #developer-tools
  • #local-first

İlgili yazılar