RubyLLM : Un framework Ruby unique pour tous les principaux fournisseurs d'IA

RubyLLM 1.16.0 est un framework Ruby qui offre une interface unifiée pour tous les principaux fournisseurs d'IA, notamment OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack et toute API compatible OpenAI. Il prend en charge le chat, la vision, l'audio, les documents, la génération d'images, les embeddings, la modération, les outils, les agents, les sorties structurées, le streaming et l'intégration Rails.
Démarrage rapide
Ajoutez au Gemfile : gem 'ruby_llm', puis bundle install.
Configurez les clés API :
RubyLLM.configure do |config|
config.openai_api_key = ENV['OPENAI_API_KEY']
end
Fonctionnalités clés
- Chat :
RubyLLM.chat.ask('question') - Vision : Analysez des images et des vidéos —
chat.ask('Décris', with: 'photo.jpg') - Audio : Transcrivez et comprenez la parole —
RubyLLM.transcribe('meeting.wav') - Documents : Extrayez du contenu de PDF, CSV, JSON, tout type de fichier
- Génération d'images :
RubyLLM.paint('prompt') - Embeddings :
RubyLLM.embed('texte') - Modération :
RubyLLM.moderate('texte') - Outils : Laissez l'IA appeler vos méthodes Ruby en sous-classant
RubyLLM::Tool - Agents : Assistants réutilisables avec
RubyLLM::Agent - Sortie structurée : Schémas JSON avec
RubyLLM::Schema - Streaming : Réponses en temps réel avec des blocs
- Rails : Intégration ActiveRecord avec
acts_as_chatet interface de chat optionnelle - Async : Concurrence basée sur les fibres
- Registre de modèles : 800+ modèles avec détection des capacités et tarification
Exemples de code
Chat avec vision :
chat = RubyLLM.chat
chat.ask('Qu'y a-t-il dans cette image ?', with: 'ruby_conf.jpg')
chat.ask('Résume ce document', with: 'contract.pdf')
Utilisation d'outils :
class Weather < RubyLLM::Tool
desc 'Obtenir la météo actuelle'
def execute(latitude:, longitude:)
JSON.parse(Faraday.get('https://api.open-meteo.com/...').body)
end
end
chat.with_tool(Weather).ask('Quel temps fait-il à Berlin ?')
Sortie structurée :
class ProductSchema < RubyLLM::Schema
string :name
number :price
array :features do
string
end
end
response = chat.with_schema(ProductSchema).ask('Analyse', with: 'product.txt')
Intégration Rails
bin/rails generate ruby_llm:install
bin/rails db:migrate
bin/rails generate ruby_llm:chat_ui
Créez ensuite un modèle Chat avec acts_as_chat et visitez /chats pour une interface prête à l'emploi.
RubyLLM n'a que trois dépendances : Faraday, Zeitwerk et Marcel.
📖 Lisez la source complète : HN AI Agents
👀 See Also

Claude Code bénéficie désormais de la vérification de modèles TLA+ via le serveur MCP tla-mcp
tla-mcp est un nouveau serveur MCP qui permet à Claude Code d'appeler le vérificateur de modèles TLA+ tla-rs comme un outil de première classe — valider des spécifications, exécuter des vérifications bornées avec des traces de contre-exemples, et rejouer des scénarios depuis le chat.

Révision : Éditeur IA conçu avec des outils de codage agentique et Y.js CRDT
Revise est un éditeur de documents IA développé entièrement à partir de zéro sur 10 mois à l'aide d'outils de codage agentique, avec un moteur de traitement de texte et une couche de rendu personnalisés qui n'utilisent Y.js que pour la pile CRDT. Il intègre plusieurs modèles d'IA, y compris des variantes de GPT-5.4 et des modèles Claude pour la relecture et la révision.

Création d'une application macOS de transcription vocale locale avec Claude Code : Étude de cas Vext
Un développeur a passé 3 mois à construire Vext, une application macOS de dictée vocale utilisant Whisper sur Apple Neural Engine. Claude Code a aidé avec le FFI Rust/Swift, l'optimisation Core ML et l'architecture des raccourcis clavier. L'application fonctionne 100 % hors ligne et transcrit 60 secondes d'audio en ~400 ms.

Culpa : Moteur de relecture déterministe open source pour le débogage d'agents IA
Culpa est un outil open source qui enregistre les sessions d'agents LLM avec un contexte d'exécution complet, permettant une relecture déterministe en utilisant les réponses enregistrées comme substituts au lieu d'accéder aux véritables API. Il fonctionne avec les API Anthropic et OpenAI via un mode proxy ou un SDK Python.