Ruby developers have spent years stitching together one-off gems for each AI provider. RubyLLM collapses all of that into a single framework: one chat object, one config block, and the same code whether you’re calling OpenAI, Anthropic, Gemini, Bedrock, DeepSeek, Mistral, Ollama, or a local model. Switching from gpt-4o to claude-sonnet-4-5 is a one-liner.
## One interface, every provider
The library covers chat, multi-modal inputs, image generation, embeddings, audio transcription, tools, agents, structured output, and streaming — the full surface most apps actually need. It ships first-class Rails integration and async support, so it fits straight into existing apps instead of forcing a parallel AI stack. Under the hood it leans on just Faraday, Zeitwerk, and Marcel, keeping the dependency tree small.
## Why developers are picking it up
The appeal is portability without ceremony. Provider APIs drift, pricing shifts, and models get deprecated — RubyLLM means your application code doesn’t care. Maintained in the open by Carmine Paolino, it’s become the default way to build agents, chatbots, and RAG apps in idiomatic Ruby rather than bolted-on Python.

Leave a comment