1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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.chat ile bir sohbet nesnesi oluşturulup chat.ask ile çalıştırılıyor
    • Örnek: chat.ask "What's the best way to learn Ruby?"
  • 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
  • Birden fazla dosya, dizi olarak verilerek tek seferde analiz edilebiliyor
    • Örnek: with: ["diagram.png", "report.pdf", "notes.txt"]
  • Streaming yanıtlar için blok geçirilip chunk.content işleniyor

Yapay zeka özelliklerinin kapsamı

  • RubyLLM.paint ile görsel üretimi yapılıyor
  • RubyLLM.embed ile metin embedding'leri oluşturuluyor
  • RubyLLM.transcribe ile ses metne dönüştürülüyor
  • RubyLLM.moderate ile içerik güvenliği kontrol ediliyor
  • RubyLLM::Tool sınıfını miras alan sınıflarla yapay zekanın Ruby metotlarını çağırması sağlanabiliyor
    • Örnek Weather aracı, enlem ve boylam alıp Open-Meteo API'den güncel hava durumu verisini getiriyor
  • RubyLLM::Agent ile yönergeler ve araçlar içeren yeniden kullanılabilir ajanlar tanımlanabiliyor
    • Örnek WeatherAssistant, gpt-5-nano modeli, kısa yanıt yönergesi ve Weather aracını kullanıyor
  • RubyLLM::Schema ile yapılandırılmış çıktı şemaları tanımlanabiliyor
    • Örnek ProductSchema, name, price ve features alanlarını tanımlıyor

Özellik listesi ve sağlayıcı desteği

  • Başlıca özellikler şunlar
    • Chat: RubyLLM.chat tabanlı etkileşimli yapay zeka
    • Vision: görsel ve video analizi
    • Audio: RubyLLM.transcribe tabanlı ses transkripsiyonu ve anlama
    • Documents: PDF, CSV, JSON gibi dosya türlerinden çıkarım
    • Image generation: RubyLLM.paint tabanlı görsel üretimi
    • Embeddings: RubyLLM.embed tabanlı embedding oluşturma
    • Moderation: RubyLLM.moderate tabanlı içerik güvenliği kontrolü
    • Tools: yapay zekanın Ruby metotlarını çağırması
    • Agents: RubyLLM::Agent tabanlı 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_chat tabanlı 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
  • 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ından bundle install çalıştırılıyor
  • API anahtarları config/initializers/ruby_llm.rb içinde ayarlanıyor
    • Örnek: config.openai_api_key = ENV['OPENAI_API_KEY']
  • Rails entegrasyonu şu komutlarla kuruluyor
    • bin/rails generate ruby_llm:install
    • bin/rails db:migrate
    • bin/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_chat tanımlanırsa ActiveRecord tabanlı sohbet kullanılabiliyor
    • Örnek model, Chat < ApplicationRecord içinde acts_as_chat tanımlar
    • Chat.create! model: "claude-sonnet-4" ile sohbet oluşturulup dosya verilerek soru sorulabiliyor
  • Hazır sohbet arayüzü http://localhost:3000/chats adresinde açılabiliyor

1 yorum

 
GN⁺ 4 시간 전
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

  • 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

    • RubyLLM 1.x’te Responses API’nin implemente edilmemesinin nedeni, içeride provider ile protocol arasında fiilen 1:1 eşleşme olduğu varsayımıydı
      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

  • 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?

    • Bence Active Storage ile aws-sdk-s3 ilişkisine 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:install ile 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ı
    • Sonradan istediğin provider’ı seçebileceğin bir araç varken, neden kendini özellikle tek bir provider’a kilitleyesin ki?
      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

    • Ruby konuşulurken Hacker News’in MINASWAN havasına bürünmesini seviyorum
  • 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