Ruby on Rails アプリに AI 機能を追加したいけど、何から始めればいいかわからない——そんな方に向けた記事です。

2026年現在、RubyLLM という gem を使えば、OpenAI・Anthropic(Claude)・Gemini など主要 AI プロバイダーを統一 API で扱えます。

本記事ではインストールから基本的なチャット機能の実装まで、ハンズオン形式で解説します。



RubyLLM とは


RubyLLM は rubyllm.com で公開されているオープンソースの gem です。

OpenAI / Anthropic / Gemini / Bedrock など10以上のプロバイダーに対して、同じコードで呼び出せます。

Rails との統合機能も標準で備えており、チャット履歴を DB に保存する仕組みが自動的に作られます。



インストール


Gemfile に追加します。


gem 'ruby_llm'

bundle install


初期設定


config/initializers/ruby_llm.rb を作成します。


RubyLLM.configure do |config|
config.openai_api_key = ENV['OPENAI_API_KEY']
config.anthropic_api_key = ENV['ANTHROPIC_API_KEY']
end

使いたいプロバイダーのキーだけ設定すれば OK です。



基本的なチャット


コンソールで動作確認します。


chat = RubyLLM.chat(model: 'gpt-4o')
response = chat.ask('Railsとは何ですか?')
puts response.content

Claude に切り替える場合はモデル名を変えるだけです。


chat = RubyLLM.chat(model: 'claude-sonnet-4-6')
response = chat.ask('Railsとは何ですか?')
puts response.content


Rails 統合(DB にチャット履歴を保存)


以下のコマンドで Rails 統合用のマイグレーションが自動生成されます。


bin/rails generate ruby_llm:install
bin/rails db:migrate

生成されるテーブルは llm_chatsllm_messages の2つです。

モデルに acts_as_chat を追加するだけで、会話履歴の保存が有効になります。


class Chat < ApplicationRecord
acts_as_chat
end


チャット UI を一発生成


以下のコマンドでチャット UI のビューとコントローラーが自動生成されます。


bin/rails generate ruby_llm:chat_ui

サーバーを起動して http://localhost:3000/chats にアクセスすると、すぐに動くチャット画面が確認できます。



ストリーミング対応


Hotwire(Turbo Streams)と組み合わせてリアルタイム表示もできます。


chat.ask('長い文章を生成して') do |chunk|
# チャンクごとに Turbo Stream でブロードキャスト
Turbo::StreamsChannel.broadcast_append_to(
"chat_#{chat.id}",
target: 'messages',
partial: 'messages/chunk',
locals: { content: chunk.content }
)
end


まとめ


RubyLLM を使えば、モデル変更はモデル名を変えるだけ・Rails 統合はコマンド1本・チャット UI も自動生成と、驚くほど少ないコードで AI 機能を実装できます。

次のステップとして RAG(検索拡張生成)への応用も検討してみてください。