Geçtiğimiz günlerde yetenekli bir akademisyenden Botpress'in LLM'lerle nasıl entegre olduğunu soran bir e-posta aldım.
Vendor lock-in'den kaçınma üzerine bir makale yazıyordu ve LangChain veya Haystack gibi bir çerçeve kullanıp kullanmadığımızı merak ediyordu.
Ona, Botpress geliştiricilerinin LLM'lerle etkileşim kurmasını sağlayan kendi soyutlamalarımızı oluşturduğumuzu büyük bir memnuniyetle anlattım.
Konuya olan genel ilgiyi göz önünde bulundurarak bu bilgiyi kamuya açık hale getirmek istedim. Diğer geliştiriciler veya platform kullanıcılarımız için faydalı olabilir. Umarım oluştururken aldığım keyfi siz de okurken alırsınız.
Botpress'in LLM'lerle Entegre Olmasının İki Yolu
Botpress, iki şekilde çalışan kendi soyutlamalarını oluşturdu:
1. Entegrasyonlar
Entegrasyonlarda, belirli giriş ve çıkış türlerine sahip eylemler kavramı bulunur.
Platformda açık kaynak bileşenlerimiz var, böylece topluluk kendi entegrasyonlarını oluşturabilir ve bunlar ister özel ister herkese açık olarak kullanılabilir.
Yani LLM sağlayıcılarının – OpenAI, Anthropic, Groq vb. – her birinin bir entegrasyonu var. Bu, kullanıcılarımızın onlarla arayüz oluşturmasının bir yolu.
2. LLM entegrasyon arayüzleri
Entegrasyon kavramının üzerine, “arayüzler” ekledik.
Bunlar, entegrasyonların genişletebileceği standart şema tanımlarıdır. LLM'ler için standart bir şema oluşturduk.
Bir entegrasyon bu şemayı genişlettiği sürece, entegrasyon bir LLM sağlayıcısı olarak kabul edilir. Yani Botpress'te kutudan çıktığı gibi çalışır.
Farklı LLM sağlayıcıları için Botpress entegrasyonlarından bazı örnekler:
Benzer arayüzlerimiz text2image, image2text, voice2text, text2voice vb. için de mevcut.
Model yapılandırmaları
Botpress Studio içinde iki genel yapılandırmamız var: "En İyi Model" ve "Hızlı Model". Genel olarak, çoğu görev bu iki moda kolayca uyuyor.


Ancak sadece model seçimiyle sınırlı kalmayıp, farklı sağlayıcıların araç çağırma ve mesaj formatlarında çok fazla farklılık gösterdiğini gördük; bu nedenle bir modeli kolayca diğerine değiştirip iyi performans beklemek mümkün olmuyordu.
Botpress çıkarım motoru
Bu nedenle, LLMz adını verdiğimiz kendi çıkarım motorumuzu oluşturduk; bu motor, herhangi bir modelle (hiç ya da çok az prompt değişikliğiyle) çalışır. Ayrıca, çok daha iyi araç çağırma ve genellikle token maliyeti ve LLM ile yapılan sorgu sayısı açısından çok daha iyi performans sunar.
Bu motor, araç tanımları için arka planda typescript tipleri, mesaj ve kod çıktısı formatı için markdown ve çıkarım için LLM-yerel bir çalışma alanı kullanıyor.
LLMz, ileri düzey kullanım senaryoları için gereken birçok optimizasyon ve hata ayıklama özelliği sunar, örneğin:
- Girdi token'larının sıkıştırılması
- Akıllı token kısaltma
- Token-optimize edilmiş hafızadan bağlama aktarım
- Paralel ve bileşik araç çağırma
- Tek bir LLM çağrısında birden fazla mesaj ve araç çağrısının birleştirilmesi
- Tamamen tip güvenli araçlar (girdi ve çıktı)
- Sandbox serileştirme ile uzun ömürlü oturumlar
- Araç taklidi, sarmalama ve izleme
- Hafif V8 izolatlarında tam yürütme izolasyonu (binlerce eşzamanlı yürütmenin hızlı ve çok düşük maliyetle çalışmasını sağlar)
- Otomatik yinelemeler ve hata kurtarma
Tüm bunlar bizim kullanım senaryolarımız için gerekliydi. Ancak bunları standart araç çağırma yöntemleriyle yapmak ya imkansızdı ya da çok zordu.
Hafif yönlendirici modellerine karşı argüman
Uzun süre, mevcut modellerin üzerine oturacak ve eldeki görev için otomatik olarak doğru modeli seçecek hafif bir yönlendirici model oluşturmayı düşündük.
Ancak bunu yapmamaya birkaç nedenle karar verdik:
1. Öngörülebilirlik
Müşterilerimizin çoğu – anlaşılır bir şekilde – güvenilir ve öngörülebilir sonuçlar ister.
Bu yüzden dinamik bir model yönlendirici fikri, üst düzey ajanlar için biraz korkutucu. LLM'lere bir belirsizlik katmanı daha ekliyor.
2. Hız
Gecikme süresi bizim kullanım senaryolarımız için çok önemli. Yönlendiricinin hızlı olması için modelin çok küçük (ve muhtemelen daha az akıllı) olması gerekir; bu da genellikle geleneksel bir sınıflandırıcı anlamına gelir.
Bunlar genellikle belirli görevlerde iyi performans gösterse de, a) kısa bağlam boyutları uzun istemler için sorun teşkil ediyor ve b) eğitildikleri istemler dışındaki diğer istemlere genelleme yapamıyorlar.
3. Model üstünlüğü veya model eşitliği
Kıyaslamalar aksini söylese de, pratikte modellerin GPT-4o'yu geçtiğine nadiren şahit olduk (şu ana kadar).
Zamanla LLM'lerin gerçekten X görevinde Y görevine göre daha iyi performans gösterip göstermeyeceği veya tüm LLM'lerin çoğu konuda çok iyi hale gelip gelmeyeceği henüz belli değil. İkinci durum olursa, model seçimi için çaba harcamaya değmez.
Geri bildirimle LLM'leri geleceğe hazırlamak
LLM'ler birkaç yıl içinde sıradan bir ürün haline gelecek ve model seçimi artık bir konu olmayacak.
Bu nedenlerle, LLM'lere örnekler sunmak için iyi bir mekanizma geliştirmeye karar verdik.
Bu yüzden bir geri bildirim toplama sistemi oluşturduk. "Öğrenimleri" gelecekteki yürütmeler için saklıyor. Ve gelecekteki yürütmelerde, istem sırasında en alakalı öğrenimleri dinamik olarak sunarak zaman içinde güvenilir ve sürekli gelişim sağlanmasını amaçlıyor.
LLM'ler giderek daha yüksek performansa ulaşırken, platformumuzun kullanıcıları için bunlardan en iyi şekilde yararlanmaya hazır ve heyecanlıyız.





.webp)
