RubyLLM: Un Marco de Ruby para Todos los Principales Proveedores de IA

RubyLLM 1.16.0 es un marco de Ruby que proporciona una interfaz unificada para todos los principales proveedores de IA, incluyendo OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack y cualquier API compatible con OpenAI. Soporta chat, visión, audio, documentos, generación de imágenes, embeddings, moderación, herramientas, agentes, salida estructurada, streaming e integración con Rails.
Inicio rápido
Añade al Gemfile: gem 'ruby_llm', luego bundle install.
Configura las claves API:
RubyLLM.configure do |config|
config.openai_api_key = ENV['OPENAI_API_KEY']
end
Características principales
- Chat:
RubyLLM.chat.ask('pregunta') - Visión: Analiza imágenes y vídeos —
chat.ask('Describe', with: 'foto.jpg') - Audio: Transcribe y comprende el habla —
RubyLLM.transcribe('reunion.wav') - Documentos: Extrae de PDFs, CSV, JSON, cualquier tipo de archivo
- Generación de imágenes:
RubyLLM.paint('prompt') - Embeddings:
RubyLLM.embed('texto') - Moderación:
RubyLLM.moderate('texto') - Herramientas: Permite que la IA llame a tus métodos Ruby subclasificando
RubyLLM::Tool - Agentes: Asistentes reutilizables con
RubyLLM::Agent - Salida estructurada: Esquemas JSON con
RubyLLM::Schema - Streaming: Respuestas en tiempo real con bloques
- Rails: Integración con ActiveRecord mediante
acts_as_chate interfaz de chat opcional - Async: Concurrencia basada en fibras
- Registro de modelos: Más de 800 modelos con detección de capacidades y precios
Ejemplos de código
Chat con visión:
chat = RubyLLM.chat
chat.ask('¿Qué hay en esta imagen?', with: 'ruby_conf.jpg')chat.ask('Resume este documento', with: 'contrato.pdf')Usando herramientas:
class Clima < RubyLLM::Tool
desc 'Obtener el clima actual'
def execute(latitude:, longitude:)
JSON.parse(Faraday.get('https://api.open-meteo.com/...').body)end
end
chat.with_tool(Clima).ask('¿Cómo está el clima en Berlín?')Salida estructurada:
class EsquemaProducto < RubyLLM::Schema
string :nombre
number :precio
array :caracteristicas do
string
end
end
response = chat.with_schema(EsquemaProducto).ask('Analiza', with: 'producto.txt')Integración con Rails
bin/rails generate ruby_llm:install
bin/rails db:migrate
bin/rails generate ruby_llm:chat_ui
Luego crea un modelo Chat con acts_as_chat y visita /chats para una interfaz lista para usar.
RubyLLM solo tiene tres dependencias: Faraday, Zeitwerk y Marcel.
📖 Lee la fuente completa: HN AI Agents
👀 Ver también

CodeLedger: Complemento de código de código abierto de Claude que rastrea el uso de tokens y agentes en segundo plano.
CodeLedger es un complemento de servidor MCP de código abierto para Claude Code que rastrea automáticamente el uso de tokens en proyectos, identifica agentes en segundo plano y proporciona recomendaciones de optimización de costos basadas en el análisis de archivos de sesión JSONL locales.

Qwen2-0.5B Ajustado para Automatización de Tareas Locales con llama.cpp
Un desarrollador ajustó Qwen2-0.5B para automatización de tareas usando LoRA en aproximadamente 1000 ejemplos personalizados, creando un modelo GGUF de 300MB que se ejecuta localmente en CPU mediante llama.cpp. El modelo toma tareas en lenguaje natural, detecta tipos de tareas y genera planes de ejecución con comandos CLI y atajos de teclado.

Bot de Telegram para el Control CLI de Código Claude desde el Móvil
Un desarrollador creó un bot de Telegram que se conecta a la CLI de Claude Code, permitiendo control mediante comandos móviles como /commit, /code_review y /simplify. El bot descubre automáticamente habilidades personalizadas, procesa fotos/documentos/notas de voz y admite sesiones de chat grupal.

Servidor MCP para Datos de Trenes Italianos: Retrasos en Tiempo Real, Salidas y Horarios en Claude
Un desarrollador construyó un servidor MCP no oficial para Trenitalia que proporciona cinco herramientas para consultar datos de trenes italianos a través de Claude, incluyendo tableros de salidas/llegadas en tiempo real, seguimiento de trenes y horarios con enriquecimiento de retrasos en vivo.