
Imp, DSPy'nin BEAM'e tam portunu Elixir'e taşıyor
Imp, DSPy'yi BEAM'e taşıyan bir Elixir kütüphanesi: geliştirici her model adımının ne aldığını ve ne döndürdüğünü tanımlıyor, bir iyileştirici de programı etiketli örneklerle geliştiriyor. İmzalar ve ajan döngüleri OTP altında çalışıyor.
Elixir için yeni bir kütüphane olan Imp, kendisini DSPy'nin BEAM'e tam portu olarak tanıtıyor. Geliştirici bir dil modeli adımını tipli fonksiyon olarak tanımlıyor, sonucu ölçüyor ve bir iyileştiriciye devrediyor; OTP'nin güvenilirliği ve eşzamanlılığı ise yerinde kalıyor.
Prompt yerine imza
Temel birim imza: yalnızca neyin girdiği ve neyin çıktığı yazılıyor, örneğin "issue -> kind: enum[bug,feature,question], summary", yanına kısa bir açıklama ekleniyor. Imp.predict/2 prompt'u bundan kuruyor, yanıtı imzayla karşılaştırıyor ve tipli alanlar döndürüyor: kind her zaman izin verilen üç değerden biri oluyor, olmazsa çağrı hata veriyor.
Aynı imza başka kiplerde de çalışıyor: Imp.chain_of_thought/2 modeli önce akıl yürütmeye zorluyor, Imp.react/3 ise ona araç veriyor. Geliştiricinin ne prompt şablonu ne de yanıt ayrıştırıcısı yazması gerekiyor.
Ölç, sonra iyileştir
Etiketli örnekler ve bir metrik verildiğinde Imp programı puanlıyor ve geliştiriyor. Üç liste gerekiyor: iyileştiricinin öğrendiği trainset, adayları karşılaştıran valset ve öncesi-sonrası puanlanan testset. Imp.evaluate/3 metriği hesaplıyor, örneğin Imp.exact_match(:kind).
Ardından iyileştirici devreye giriyor: Imp.Optimizer.GEPA.new/2 hataları okuyup talimatları yeniden yazmak için daha güçlü bir model kullanıyor. Kütüphanede ayrıca LabeledFewShot ve BootstrapFewShot örnek seçiyor, MIPROv2 kombinasyonları arıyor, SIMBA programın kendi denemelerinden kurallar çıkarıyor, ağırlık eğitimi de var. Sonuç, talimatları ve örnekleri JSON olarak kaydedilip diff halinde incelenen yeni bir program.
Ajanlar ve OTP kuralları
Araç burada sıradan bir Elixir fonksiyonu: Imp.tool/3 ad, açıklama, fonksiyon ve JSON Schema alıyor; Imp.react/3 bu araçlarla yanıt bulana kadar çağrı yapan bir ajan kuruyor. README örneğinde ajan Req ile bir web sayfasını okuyup sürüm numarasını döndürüyor.
Imp.call/2 programı çağıran süreçte çalıştırıyor, Imp.start_run/3 ise onu izlenebilen, durdurulabilen ve sınırlanabilen ayrı bir supervisor süreci olarak başlatıyor; authorize callback hangi araç çağrılarına izin verileceğini belirliyor. Imp.Run.events/1 olay günlüğünü döndürüyor, model isteklerinin teslim süresi var ve etkisi çoktan gerçekleşmiş olabilecek bir araç çağrısı unknown olarak bildiriliyor, sessizce yeniden denenmiyor.
Imp onaylanan bir MCP sunucusunun araçlarını içe aktarabiliyor; ACP üzerinden herhangi bir program Zed ve diğer istemcilere ajan olarak sunuluyor. Kütüphane Hex'te, Elixir 1.19 ve C++ derleyici istiyor, modellere ReqLLM üzerinden erişiyor. Sürüm 0.5 deneysel ve MIT lisanslı.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.