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.contentClaude に切り替える場合はモデル名を変えるだけです。
chat = RubyLLM.chat(model: 'claude-sonnet-4-6')
response = chat.ask('Railsとは何ですか?')
puts response.contentRails 統合(DB にチャット履歴を保存)
以下のコマンドで Rails 統合用のマイグレーションが自動生成されます。
bin/rails generate ruby_llm:install
bin/rails db:migrate生成されるテーブルは llm_chats と llm_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(検索拡張生成)への応用も検討してみてください。