deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Imp, DSPy'yi Elixir'e taşıdı: BEAM üzerinde kendi kendini optimize eden LLM programları

Hacker News'te ortaya çıkan yeni bir Elixir kütüphanesi olan Imp, DSPy'nin BEAM'e tam bir portunu sunuyor: tipli LLM adımları tanımlayın, optimizer'ların bunları etiketli örneklerle yeniden yazmasına izin verin ve agent'ları supervise edilen OTP süreçleri olarak çalıştırın.

Imp, DSPy'yi Elixir'e taşıdı: BEAM üzerinde kendi kendini optimize eden LLM programları

Deepfates GitHub hesabı altında yayınlanan ve Hacker News'in ön sayfasında dikkat çeken Imp adlı proje, DSPy'nin Elixir için sıfırdan yazılmış bir yeniden uygulaması. Projenin README'sine göre Imp, Python framework'ünün fikirlerinin BEAM sanal makinesine tam bir portunu sunuyor: dil modeli çağrıları, elle ayarlamak yerine ölçebileceğiniz ve otomatik olarak geliştirebileceğiniz, tanımlı ve tipli fonksiyonlara dönüşüyor.

Programlar nasıl tanımlanıyor

Prompt yazıp yanıtları ayrıştırmak yerine, bir adımı girdilerini ve çıktılarını belirten bir imza (signature) ile tanımlıyorsunuz. Imp, prompt'u bu imzadan oluşturuyor, modelin yanıtını imzaya göre denetliyor ve tipli alanlar geri veriyor — yanıt uygun değilse hata döndürüyor. README'deki triyaj örneğinde bir çıktı alanı bug, feature veya question değerlerinden oluşan bir enum ile kısıtlanmış; bu üç değer dışındaki herhangi bir şey çağrıyı başarısız kılıyor.

Aynı imza, yeniden yazılmadan farklı akıl yürütme stratejileri arasında değiştirilebiliyor: Imp.chain_of_thought/2 bir adımı yanıtlamadan önce düşünmeye zorlarken, Imp.react/3 araçlar ekleyerek onu bir agent döngüsüne dönüştürüyor.

Prompt ayarlamak yerine optimizer'lar

Optimizasyon katmanı portun diğer yarısı. Eğitim, doğrulama ve test kümelerine bölünmüş etiketli örnekler ile bir alandaki birebir eşleşme gibi bir metrik sağlıyorsunuz; Imp programı puanlıyor ve yeniden yazıyor. GEPA optimizer'ı programı çalıştırıyor, nerede başarısız olduğunu okuyor — isteğe bağlı olarak daha güçlü bir "reflection" modeli kullanarak — ve yeni talimatlar yazıyor. Diğer optimizer'lar işe yarar örnekler seçiyor (LabeledFewShot, BootstrapFewShot), talimat ve örnek kombinasyonları arıyor (MIPROv2), programın kendi iyi ve kötü denemelerinden kurallar öğreniyor (SIMBA) veya model ağırlıklarını eğitiyor (fine-tuning, GRPO).

README, sonucun denetlenebilir kalmasını vurguluyor: geliştirilmiş programın talimatları ve örnekleri okunabilir metinlerden oluşuyor; JSON olarak kaydedilebiliyor ve yayına almadan önce diff olarak incelenebiliyor.

Agent'lar OTP süreci olarak

BEAM'de bir agent, uygulamanın geri kalanının yanında bir supervisor altında çalışan, kendi durumuna sahip bir süreçtir. Imp.call/2 bir programı kendi sürecinizde çalıştırırken, Imp.start_run/3 onu izleyip durdurabileceğiniz supervise edilmiş bir çalıştırma olarak başlatıyor. Her çalıştırma olaylar yayıyor — model istekleri, yanıtlar, araç çağrıları ve sonuçlar — ve bir yetkilendirme callback'i tek tek araç çağrılarına izin vermenizi veya reddetmenizi sağlıyor; örneğin bir fetch aracını yalnızca güvenilir host'larla kısıtlayabilirsiniz. Araçların kendileri, JSON şemasıyla tanımlanan sıradan Elixir fonksiyonları.

Hata yönetimi bilinçli olarak temkinli: model istekleri belirlediğiniz bir süre sınırında kesiliyor ve etkisi çoktan gerçekleşmiş olabilecek bir araç çağrısı sessizce yeniden denenmek yerine "bilinmiyor" olarak raporlanıyor.

Birlikte çalışabilirlik geniş. Imp, onayladığınız herhangi bir MCP sunucusundan araç içeri aktarabiliyor ve herhangi bir programı Zed ile diğer ACP istemcilerine agent olarak sunabiliyor. Ek modül biçimleri arasında, bağlam penceresinden çok daha büyük girdiler için RLM ve küçük sandbox'lanmış ifadelerle hesap yapan CodeAct ile program-of-thought var. Optimizer'lar agent'lar üzerinde de çalışıyor — GEPA bütün agent çalıştırmalarını yansıtabiliyor — ve bir "Optimize Anything" yeteneği, puanlayabileceğiniz her metni veya JSON'u, örneğin araç açıklamalarını, yeniden yazabiliyor.

Gereksinimler ve olgunluk

Imp, Elixir 1.19 veya üzerini, iki yerel bağımlılık (jaxon ve erlexec) için bir C ve C++ derleyicisini ve ilk derleme için ağ erişimini gerektiriyor. Modellere ReqLLM üzerinden erişiliyor; dolayısıyla desteklediği her sağlayıcı kullanılabiliyor. Sürüm 0.5, kütüphanenin Hex'teki ilk yayını ve README durumu hakkında açık sözlü: API hâlâ değişebilir ve optimizer'ların büyük ölçekli benchmark'lara ihtiyacı var. Proje MIT lisanslı; dokümantasyonda adım adım bir başlangıç rehberi, DSPy'den gelenler için bir isim eşleme rehberi ve Livebook öğreticileri yer alıyor.

Neden önemli

DSPy'nin temel iddiası — prompt'ları elle ayarlanacak dizeler yerine metriklere karşı optimize edilecek programlar olarak ele almak — çoğunlukla Python'da yaşadı. Tam bir port, Elixir geliştiricilerine aynı imzaları, optimizer'ları ve agent soyutlamalarını verirken, bunları supervise edilen, uzun ömürlü, eşzamanlı süreçler için tasarlanmış bir runtime ile eşleştiriyor; bu, üretimdeki agent'lar için doğal bir uyum. Hata semantiği de önemli: sınırlı süre sonları ve etkisi olabilir şekilde çalıştırılmış araç çağrılarının sessizce yeniden denenmemesi, agent framework'lerinin genellikle göz ardı ettiği gerçek operasyonel risklere değiniyor. Uyarılar gerçek — deneysel bir 0.5 API ve benchmark'lanmamış optimizer'lar — ama Imp, BEAM üzerinde yerel olarak LLM sistemleri kurmak ve geliştirmek için erken bir kilometre taşı.

  • #elixir
  • #beam
  • #dspy
  • #llm
  • #agents
  • #open-source

İlgili yazılar