OlympiaAI/raix

Ruby AI eXtensions

OlympiaAI / raix – Ruby AI eXtensions

何であるか – Raix は、任意の Ruby クラスに離散的な大規模言語モデル(LLM)機能を簡単に組み込める Ruby ライブラリです。3つのミックスインモジュールを提供しています:

  1. Raix::ChatCompletion – コンバセーション履歴(トランスクリプト)を管理し、下位の RubyLLM ウェッパー(OpenAI、Anthropic、Google Gemini など)を経由して LLM にチャットコンプリーションリクエストを送信するコア機能です。
  2. Raix::FunctionDispatch – モデルが呼び出すことができる ツール(関数)定義を宣言するオプションの DSL。Raix は自動的に関数を実行し、結果をトランスクリプトに追加して、モデルが通常のテキストを返すまで会話を継続します。
  3. Raix::PromptDeclarations – 再利用可能な プロンプトチェーン(順次プロンプト、ストリーミング、条件付きループ)を構築するためのオプションの DSL。

これらの3つのモジュールは、通常の Ruby オブジェクトにミックスイン可能であり、activesupport を含めれば Rails 以外のアプリでも動作します。


主な機能(README に記載)

機能 README の説明 なぜ重要か
統合されたプロバイダーアクセス ruby_llm で駆動され、OpenAI、Anthropic、Google Gemini および多数の他プロバイダーを OpenRouter 経由でサポート。 モデルやプロバイダーを変更してもコードを変更しなくてよい。
トランスクリプト処理 transcript は短い { role: "user", content: "…" } ハッシュまたは省略形 role => content 形式でメッセージを保存。save_response: false が渡されない限り、AI の返信を自動追加。 コンバセーション状態をシンプルかつ柔軟に保つ。
予測出力 prediction: パラメータ(OpenAI)を渡すことで、低遅延の予測応答を得られる。
プロンプトキャッシュ Anthropic Claude モデルでは cache_at を設定して、大きなメッセージをキャッシュされた「ブレークポイント」に分割可能。
JSON モード json: true でモデルが有効な JSON を返すよう強制。Raix は OpenAI では response_format を設定し、他のプロバイダーでは <json> タグから JSON を抽出。
before_completion フック グローバル、クラスレベル、インスタンスレベルのラムダ(またはコール可能オブジェクト)で、リクエストの修正、システムプロンプトの追加、ログ記録、PII のマスク、テナントごとのモデル選択などを可能に。
関数(ツール)ディスパッチ function :name, "description", param_schema do … end で関数を宣言。モデルがツールを要求すると Raix が自動的に呼び出し、結果をトランスクリプトに追加し、通常のテキスト返信が返るまでループ。以下をサポート:
  • available_tools による選択的公開
  • 1回の応答での複数ツール呼び出し
  • カスタム dispatch_tool_function オーバーライド
  • ActiveSupport キャッシュによる関数結果のキャッシュ | | プロンプトチェーン DSL | prompt call: SomePromptClass または prompt text: -> { … } で、マルチステップ会話(例:URL検出、メモリスキャン、ストリーミング返信)を構成可能。 | | 構成 | Raix.configure でグローバルデフォルト(例:デフォルトモデル、最大ツール呼び出し回数、グローバルフック)を設定可能。 |

一般的な使用例

シナリオ Raix の使い方
Rails または Sinatra アプリにチャットボット機能を追加 サービスオブジェクトに Raix::ChatCompletion を含め、ユーザーのメッセージを transcript に追加し、chat_completion を呼び出して返された文字列をレンダリング。
内部サービスを呼び出せる AI ベースのアシスタントを構築 Raix::FunctionDispatch を追加し、check_weatherfetch_user_profile などの関数を宣言。モデルがいつ呼び出すか判断し、Raix が自動的にリクエスト・レスポンスのやり取りを処理。
データプライバシー/PII のマスクを強制 グローバルな before_completion フックを設定し、context.messages をスキャンして、SSN、メールアドレスなどをサーバー外に出す前にマスク。
マルチステップ処理パイプライン Raix::PromptDeclarations を使って URL 取得チェック、メモリスキャン、メイン会話プロンプトを順に実行。ボイラープレートループを書かずに済む。
コスト意識のあるモデル選択 before_completion フック内で DB からテナント設定を読み込み、リクエストごとに modeltemperaturemax_tokens を注入。
高コストツール呼び出しのキャッシュ dispatch_tool_function をオーバーライドして Rails.cache を渡し、同じ引数で過去の結果を再利用可能に。

プロジェクトの成熟度(README から)

  • バージョンRaix 2.0 が言及されているため、少なくとも1回のメジャーリリースがある。
  • 起源 – 生産環境向けの Olympia チャットプラットフォームから抽出。作者は「Ruby で完全に書かれた、最も規模が大きく成功している AI チャットプロジェクトの一つ」と主張。
  • 依存関係ruby_llm(プロバイダーウェッパー)と activesupport(キャッシュおよびユーティリティ)に依存。
  • テスト – README に RSpec の例が含まれており、テストスイートが存在することを示唆。
  • ドキュメント – README 自体がかなり詳細で、コア API、フック、関数ディスパッチ、キャッシュ、プロンプトチェーンをカバー。
  • コミュニティ – 外部貢献者の明記はないが、オープンソースであり、商業製品(Olympia)および Leanpub 書籍と関連しているため、小規模だが集中したユーザー層を持つと推測。

エコシステムと互換性

項目 詳細
Ruby バージョン 指定なし。ruby_llmactivesupport に依存。おそらく Ruby 2.7+ または 3.x 互換。
Rails サポート 任意の Ruby アプリで動作。Rails 統合はオプションだが、例では Rails のログとキャッシュを使用。
プロバイダー対応 OpenAI、Anthropic、Google Gemini、および「数十の他のプロバイダー」を OpenRouter 経由でサポート。
他の gem ruby_llmactivesupport、オプションで rails(キャッシュ/ロガー)。
ライセンス README に記載なし(リポジトリを確認する必要あり)。

セットアップ手順(README に基づく)

  1. gem の追加(仮に raix と仮定)を Gemfile に追加し、bundle install を実行。
  2. コアモジュールのインクルード:AI 機能を必要とする任意のクラスに含める:
    class MyAssistant
      include Raix::ChatCompletion
    end
    
  3. メッセージの追加completion の呼び出し:
    ai = MyAssistant.new
    ai.transcript << { user: "What is the meaning of life?" }
    puts ai.chat_completion   # => モデルの応答文字列
    
  4. オプション:ツールディスパッチの追加(ツールが必要な場合):
    class WeatherBot
      include Raix::ChatCompletion
      include Raix::FunctionDispatch
    
      function :check_weather, "Check weather", location: {type: "string", required: true} do |args|
        "It is sunny in #{args[:location]}"
      end
    end
    
  5. グローバル構成(例:デフォルトモデル、フック):
    Raix.configure do |c|
      c.before_completion = ->(ctx) { { temperature: 0.7 } }
    end
    
  6. アプリの実行 – ライブラリがリクエスト構築、応答解析、ツール実行、トランスクリプト管理をすべて自動で処理します。

TL;DR

Raix は、LLM API とのやり取りのボイラープレートを抽象化する Ruby 最優先の SDK です。いくつかのモジュールをミックスインするだけで、以下が得られます:

  • 管理された会話トランスクリプト
  • OpenRouter 経由の統合されたマルチプロバイダーアクセス
  • 動的リクエスト調整のための強力なフック
  • モデルが Ruby メソッドを呼び出せる宣言型ツールコールシステム
  • 複雑なマルチステップフロー用のプロンプトチェーン DSL

Ruby エコシステムから離れずに、チャットボット、アシスタント、RAG パイプライン、自動化機能を組み込むことを目指した Ruby 開発者向けです。README には即座に開発を開始できる十分な情報が記載されています。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト