- RubyLLM, Ruby uygulamalarında sohbet botları, yapay zeka ajanları, RAG ve içerik üretimi gibi yapay zeka iş akışlarını tek bir çerçeveyle kurmayı sağlıyor
- GPT, Claude ve yerel Ollama gibi sistemleri aynı arayüzle kullanıyor; bağımlılıklar ise Faraday, Zeitwerk ve Marcel olmak üzere 3 paketle sınırlı
- Yalnızca sohbeti değil; görsel·video analizi, ses transkripsiyonu, belge işleme, görsel üretimi, embedding, moderasyon, araç çağırma, yapılandırılmış çıktı ve streaming gibi yetenekleri de kapsıyor
- Rails tarafında
acts_as_chat, model yükleme ve isteğe bağlı sohbet arayüzü oluşturucusu sunuyor;hemen kullanılabilen bir sohbet arayüzü açılabilir - OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack ve OpenAI uyumlu API'leri destekliyor
Ruby için tek bir yapay zeka çerçevesi
- RubyLLM, başlıca yapay zeka sağlayıcılarını tek bir Ruby çerçevesi üzerinden kullanmak için geliştirilmiş bir araç
- Sohbet botları, yapay zeka ajanları, RAG uygulamaları, içerik üreticileri ve diğer yapay zeka iş akışlarının oluşturulmasını hedefliyor
- Chat with Work içinde gerçek kullanımda
Sağlayıcıya özgü API farklarını gizleyen arayüz
- Her yapay zeka sağlayıcısında istemci, API, yanıt biçimi ve kullanım kalıplarının değişmesi sorununu azaltmaya odaklanıyor
- Aynı arayüz ile GPT, Claude ve yerel Ollama kullanılabiliyor
- Bağımlılık olarak yalnızca Faraday, Zeitwerk ve Marcel kullanıyor
Temel kullanım biçimi
- Basit sorular için
RubyLLM.chatile bir sohbet nesnesi oluşturulupchat.askile çalıştırılıyor- Örnek:
chat.ask "What's the best way to learn Ruby?"
- Örnek:
- Dosya analizi,
with:seçeneğine dosya verilerek yapılıyor- Görsel:
ruby_conf.jpg - Video:
video.mp4 - Ses:
meeting.wav - PDF:
contract.pdf - Kod:
app.rb
- Görsel:
- Birden fazla dosya, dizi olarak verilerek tek seferde analiz edilebiliyor
- Örnek:
with: ["diagram.png", "report.pdf", "notes.txt"]
- Örnek:
- Streaming yanıtlar için blok geçirilip
chunk.contentişleniyor
Yapay zeka özelliklerinin kapsamı
RubyLLM.paintile görsel üretimi yapılıyorRubyLLM.embedile metin embedding'leri oluşturuluyorRubyLLM.transcribeile ses metne dönüştürülüyorRubyLLM.moderateile içerik güvenliği kontrol ediliyorRubyLLM::Toolsınıfını miras alan sınıflarla yapay zekanın Ruby metotlarını çağırması sağlanabiliyor- Örnek
Weatheraracı, enlem ve boylam alıp Open-Meteo API'den güncel hava durumu verisini getiriyor
- Örnek
RubyLLM::Agentile yönergeler ve araçlar içeren yeniden kullanılabilir ajanlar tanımlanabiliyor- Örnek
WeatherAssistant,gpt-5-nanomodeli, kısa yanıt yönergesi veWeatheraracını kullanıyor
- Örnek
RubyLLM::Schemaile yapılandırılmış çıktı şemaları tanımlanabiliyor- Örnek
ProductSchema,name,pricevefeaturesalanlarını tanımlıyor
- Örnek
Özellik listesi ve sağlayıcı desteği
- Başlıca özellikler şunlar
- Chat:
RubyLLM.chattabanlı etkileşimli yapay zeka - Vision: görsel ve video analizi
- Audio:
RubyLLM.transcribetabanlı ses transkripsiyonu ve anlama - Documents: PDF, CSV, JSON gibi dosya türlerinden çıkarım
- Image generation:
RubyLLM.painttabanlı görsel üretimi - Embeddings:
RubyLLM.embedtabanlı embedding oluşturma - Moderation:
RubyLLM.moderatetabanlı içerik güvenliği kontrolü - Tools: yapay zekanın Ruby metotlarını çağırması
- Agents:
RubyLLM::Agenttabanlı yeniden kullanılabilir asistanlar - Structured output: JSON şeması tabanlı yapılandırılmış çıktı
- Streaming: blok tabanlı gerçek zamanlı yanıt
- Rails:
acts_as_chattabanlı ActiveRecord entegrasyonu - Async: Fiber tabanlı eşzamanlılık
- Model registry: özellik algılama ve fiyat bilgisi içeren 800'den fazla model
- Extended thinking: modelin düşünme sürecini kontrol etme, görüntüleme ve kaydetme
- Chat:
- Desteklenen sağlayıcılar OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack ve OpenAI uyumlu API'ler
Kurulum ve Rails entegrasyonu
- Kurulum için Gemfile'a
gem 'ruby_llm'eklenip ardındanbundle installçalıştırılıyor - API anahtarları
config/initializers/ruby_llm.rbiçinde ayarlanıyor- Örnek:
config.openai_api_key = ENV['OPENAI_API_KEY']
- Örnek:
- Rails entegrasyonu şu komutlarla kuruluyor
bin/rails generate ruby_llm:installbin/rails db:migratebin/rails ruby_llm:load_models # v1.13+
- İsteğe bağlı olarak sohbet arayüzü eklenebiliyor
bin/rails generate ruby_llm:chat_ui
- Rails modelinde
acts_as_chattanımlanırsa ActiveRecord tabanlı sohbet kullanılabiliyor- Örnek model,
Chat < ApplicationRecordiçindeacts_as_chattanımlar Chat.create! model: "claude-sonnet-4"ile sohbet oluşturulup dosya verilerek soru sorulabiliyor
- Örnek model,
- Hazır sohbet arayüzü
http://localhost:3000/chatsadresinde açılabiliyor
1 yorum
Hacker News görüşleri
RubyLLM beklenmedik derecede iyiydi ve kullanılabilirlik açısından Vercel’in AI framework’üne yakın
Kutudan çıkar çıkmaz çalışma kolaylığı ile esneklik arasında denge kurmaya çalışıyor; bu da işleri zorlaştırsa da genel olarak iyi bir deneyimdi
Yaşadığım tek büyük sorun, cache’in her zaman çalışmamasıydı. Örneğin xAI sadece completions API’yi destekliyor ve thought signature’ı hatalı döndürdüğü için sorun çıkıyor
https://github.com/crmne/ruby_llm/blob/main/lib/ruby_llm/pro...
RubyLLM soyutlamasının üzerine inşa edilmiş açık kaynak gem Raix var ve epey kullanılıyor
https://github.com/OlympiaAI/raix
RubyLLM’i prodüksiyonda kullanıyorum ve çok beğeniyorum. Harika ve kullanımı kolay bir framework
Responses API’nin varsayılan olarak desteklenmemesi, başkalarının da dediği gibi can sıkıcıydı; büyük bir eksiklik gibi görünüyordu. Başka bir geliştiricinin yaptığı bir connector var ama hataları var ve ana gem kadar kaliteli değil
Gelecekteki geliştirmeleri, özellikle de 2.0’ı heyecanla bekliyorum. Responses API artık native olarak geldiyse kesinlikle tekrar bakacağım
OpenAI’nin farklı yeteneklere sahip 2 ayrı protocol’ü var ve VertexAI’nin tüm modellerine erişmek için tek bir provider altında birden fazla protocol desteklenmesi gerekiyor; bu yüzden bu varsayım artık geçerli değil
Bu nedenle Protocols ile Providers’ı ayıran ve aynı Provider altında bile model bazında farklı Protocol’lere şeffaf yönlendirme yapan büyük bir refactor gerekiyordu. Bu çalışma RubyLLM 2.0’a dahil edilecek
Merak edenler için bakılabilecek commit’ler: https://github.com/crmne/ruby_llm/commit/d398354da493570b050...
https://github.com/crmne/ruby_llm/commit/0875ce2dfeae9d28a3a...
RubyLLM’in kullanımı çok kolay. Geçen yıl bir projede yoğun biçimde kullandım
Eksisi, gerçek izlenebilirlik/observability için enstrümantasyon yapmanın zor olmasıydı; ayrıca retry sırasında iç modeli silen bir desen vardı, bu da görünen geçmişi temiz tutsa da gerçek API çağrı sırasını doğru görmek açısından pek iyi değildi
https://rubyllm.com/instrumentation/
Sadece Claude’a odaklanan bir şey geliştiriyorum ve Anthropic ekosisteminin dışına çıkma planım yok. Bu durumda bile RubyLLM’in, Anthropic’in Ruby SDK’sını doğrudan kullanmaya kıyasla bir avantajı olup olmadığını merak ediyorum
Başka bir deyişle bu seçim Fog ile aws-sdk-s3 arasındaki bir seçime mi daha yakın, yoksa Active Storage ile aws-sdk-s3 arasındaki seçime mi daha yakın?
RubyLLM’in güzel tarafları; ActiveRecord benzeri method chaining yapabilen DSL’i, agent/tool/prompt düzenlemeye yarayan yapısı ve Anthropic’ten DeepSeek’e kolayca test edip geçerek maliyeti %90’dan fazla azaltabilmemizi sağlayan taşınabilirliği
bin/rails generate ruby_llm:installile her sohbeti veritabanına kaydedebilen ActiveRecord entegrasyonu da çok iyi. Kayıtlı sohbet geçmişini düzenli olarak dışa aktarıp claude code’a vererek agent talimatlarını iyileştirmek de büyük fayda sağladıSadece kesinti senaryosunu düşünmek bile yeterli; gerçekten ihtiyaç duyduğun gün Anthropic API çökerse ne yapacağını planlamalısın
Side project’lerimde RubyLLM kullanıyorum ve harika
Geçen yılki SF Ruby conf’ta soru ve yorumlarda geçen şeylerin şimdiden ekosistem özelliği olarak çıkmış olması ilginç: https://youtu.be/y535u1EWqAg?si=rbyv52T035apKwQk
Birkaç ay önce RubyLLM’i oldukça derinlemesine kullandım; tasarımı ve implementasyonu çok iyiydi
Çeşitli Lisp dillerinde kendi yazdığım LLM client’larım var ve RubyLLM’in tasarımından bazı fikirleri almayı bile düşündüm. Taklit bir övgüdür
Ruby’yi yapay zeka topluluğuna taşıyıp bunu açık kaynak olarak geliştirdiğiniz için teşekkürler
İyi diller daha fazla keşfedilmeyi ve ilgi görmeyi hak ediyor
Laravel için de benzer bir kütüphane var
https://laravel.com/docs/13.x/ai-sdk
RubyLLM’i prodüksiyonda da kullanıyorum ve şimdiye kadar bu alanda gördüğüm en zarif kütüphane
Issue tracker’ın işletilme şeklini de beğendim. “Feature Request” seçildiğinde, hangi geçici çözüm yollarını denediğini ve bunun neden RubyLLM’e dahil edilmesi gerektiğini açıklatıyor; böylece kapsamın sonsuza kadar büyümesini engelliyor