
2026/06/24 23:41
RubyLLM:すべての主要 AI プロバイダーに対応する Ruby フレームワーク
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
RubyLLM は、OpenAI、xAI、Anthropic、Gemini、Ollama を含むローカルモデルに至るまで主要なすべての AI プロバイダーをサポートする統一された Ruby フレームワークです。多様な API とレスポンス形式を単一のインターフェースに統合することで開発を簡素化するのがその主たる価値であり、このことでチームはチャットボット、AI エージェント、RAG システム、コンテンツ生成器、および様々な AI ワークフローを構築できます。インストールは簡単です:Gemfile に RubyLLM を追加し、
config/initializers/ruby_llm.rb で API キーを設定し、必要であれば generator コマンドで Rails と統合し、localhost:3000/chats でローカルチャット UI を起動できます。開発者は RAG システムやコンテンツ生成器などの複雑なアプリケーションをわずか 2 分で構築でき、Ruby エコシステム内でこの機能を拡張しています。JPG(画像)、MP4(ビデオ)、WAV(音声)、PDF(文書)、RB(コード)を含む広範なファイル解析をサポートしており、RubyLLM.paint を介した画像生成、RubyLLM.embed を介した埋め込み生成、RubyLLM.transcribe を介した音声書き起こしが可能となります。また、RubyLLM.moderate を用いたコンテンツモデレーション機能も含まれており、テキストの安全性を確認できます。ユーザーは .with_tool を使用して AI エージェントが特定の指示に基づいて実行するカスタム Ruby クラスツールを定義でき、RubyLLM::Agent を用いて特定の指示、モデル、ツールの関連付けを持つエージェントを作成できます。さらに、このフレームワークは RubyLLM::Schema で定義されたスキーマによる構造化 JSON 出力をサポートし、.ask メソッドに渡されるブロックを通じてストリーミングレスポンスを提供します。このアプローチにより、高度なモデルを使用して複雑なタスクを実行する洗練されたエージェントの迅速なデプロイが可能となり、ネイティブ Ruby 環境内で堅牢な人工知能ソリューションの作成が著しく加速されます。本文
RubyLLM:単一フレームワークで全ての AI プロバイダーを統合
Ruby で開発する際、AI チャンネルを開通させたい場合の解決策です。全ての主要な AI プロバイダーに対応し、チャットボットや RAG アプリケーションなどのあらゆる workflow を簡単に構築できます。
✅ 検証済み実績
- 完全なプライベート環境での業務用 AI 導入対応
- Ruby で動作する AI チャットアプリをわずか 2 分で作成可能
- RubyLLM をご活用の方の事例共有も歓迎いたします(お話しは 5 分以内)
🚀 なぜ RubyLLM か?
各 AI プロバイダーは肥大化したクライアント、異なる API 仕様、レスポンス形式を求められて疲弊させがちです。RubyLLM はそれらを抽象化した単一の美しいフレームワークを提供します。
- GPT、Claude、Ollama などを問わず、同一インターフェースで利用可能
- 必要な依存関係はたった 3 つ:
,Faraday
,Zeitwerk
で完結Marcel
💻 コードサンプル
🔹 基本的なチャットと多様な処理
ファイルアップロードやストリーミング対応、画像生成など多彩な機能を
chat.ask や簡潔なメソッドで呼び出せます。
chat = RubyLLM.chat # 単なる質問 chat.ask "Ruby を学ぶ最良の方法は何ですか?" # ファイル分析(画像・ビデオ・音声・ドキュメント・コード) chat.ask "この画像には何がありますか?", with: "ruby_conf.jpg" chat.ask "この会議について教えてください", with: "meeting.wav" chat.ask "この文書要約してください", with: "contract.pdf" # 複数ファイルの同時分析 chat.ask "これらのファイルを分析してください", with: ["diagram.png", "report.pdf"] # レスポンスストリーミング出力(リアルタイム表示) chat.ask "Ruby の物語を語ってください" do |chunk| print chunk.content end # その他の機能呼び出し RubyLLM.paint "水彩画風の夕暮れの山々" # 画像生成 RubyLLM.embed "Ruby はエレガントです" # エンベッディング RubyLLM.transcribe "meeting.wav" # 音声認識 RubyLLM.moderate "テキストの安全性を確認する" # コンテンツ調整
🔹 AI に Ruby コードを実行させる(ツール)
自分の Ruby メソッドを AI が利用可能なツールとして提供します。
class Weather < RubyLLM::Tool desc "現在の天気を取得する" def execute(latitude:, longitude:) url = "https://api.open-meteo.com/v1/forecast?latitude=#{latitude}&longitude=#{longitude}¤t=temperature_2m,wind_speed_10m" JSON.parse(Faraday.get(url).body) end end chat.with_tool(Weather).ask "ベルリンの天気はどうですか?"
🔹 指示(System Prompt)とツールでエージェントを定義
再利用可能な AI エージェントを簡単に作成できます。
class WeatherAssistant < RubyLLM::Agent model "gpt-5-nano" instructions "簡潔になり、常に天気に関するツールを利用してください。" tools Weather end WeatherAssistant.new.ask "ベルリンの天気はどうですか?"
🔹 構造化された出力(JSON スキーマ)
ただスキーマを定義すれば、AI は自動的に JSON フォーマットで応答してくれます。
class ProductSchema < RubyLLM::Schema string :name number :price array :features do string end end response = chat.with_schema(ProductSchema).ask "製品を分析してください", with: "product.txt" # response.data -> JSON オブジェクトが返されます
📜 機能一覧
- チャット:
で即時対話可能RubyLLM.chat - ビジョン: 画像とビデオの視覚解析
- オーディオ: 音声トランスクリプションと理解 (
)transcribe - ドキュメント: PDF, CSV, JSON などあらゆる形式からの情報抽出
- 画像生成: AI による画像作成 (
)paint - エンベッディング: ベクトル表現の生成 (
)embed - モデレーション: コンテンツ安全性の調整 (
)moderate - ツール: AI が外部 Ruby メソッドを呼び出せる仕組み
- エージェント:
でカスタムアシスタント作成RubyLLM::Agent - 構造化出力: JSON スキーマを定義するだけで動作
- ストリーミング: ブロック処理でリアルタイムレスポンス取得
- Rails 統合:
を使った ActiveRecord インタグリゼーションacts_as_chat - 非同期処理: Fiber ベースの並列実行対応
- モデルレジストリ: 800 以上のモデル検出と価格情報提示
- 拡張思考(Chain of Thought)制御: 検討プロセスの保存・監視可能
- プロバイダー対応: OpenAI, xAI, Anthropic, Gemini, Ollama など全主要 API 対応
📦 インストール
Gemfile に以下のライブラリを追加してください:
gem 'ruby_llm'
その後、依存関係をインストールします:
bundle install
🔑 API キーの設定
config/initializers/ruby_llm.rb のようなファイルに設定を行います。
RubyLLM.configure do |config| config.openai_api_key = ENV['OPENAI_API_KEY'] end
🚄 Rails への統合
インストール手順
bin/rails generate ruby_llm:install bin/rails db:migrate # v1.13 以降 bin/rails ruby_llm:load_models
チャット UI の追加(オプション)
Web インターフェースを迅速に追加したい場合:
bin/rails generate ruby_llm:chat_ui
モデル定義と動作確認
class Chat < ApplicationRecord acts_as_chat end
以下のコードを実行すると、データベース内にチャットスレッドが作成されます:
chat = Chat.create! model: "claude-sonnet-4" chat.ask "このファイルには何がありますか?", with: "report.pdf"
最後にブラウザから
http://localhost:3000/chats を訪れ、すぐに使えるチャット UI を確認してください!