https://github.com/crmne/ruby_llm
Ruby 4.0+ での `log_regexp_timeout=` 再定義警告を `remove_method` で抑制し、API 互換性を保ったままクリーンな出力を実現した変更です。
Bedrock Converse の `input_tokens` がキャッシュトークンを二重に減算していたバグを修正し、AWS のトークン仕様に合わせて正確なコスト計算とメトリクス取得を実現しました。
StreamAccumulator が空文字列 model_id に latch するバグを空文字列判定で修正し、Azure OpenAI のストリーミングで正しいコスト計算が行えるようになりました。
`ChatMethods#to_llm` と `cleanup_orphaned_tool_results` がメッセージ関連を事前にプリロードし、N+1 クエリと StrictLoadingViolationError を回避するよう改善されました。
Prompt クラスを抽出し、Agent を継承せずに `RubyLLM::Prompt.render` でテンプレートを描画できるようにした新機能と設計判断を解説します。
DeepSeek の思考対応モデルが必須とする `reasoning_content` を常に送出するよう、DeepSeek 用プロバイダーで `format_thinking` をオーバーライドし、マルチターンリクエストの失敗を防止した修正です。
Action Text の埋め込み添付ファイルを RubyLLM::Content に抽出できるようヘルパーと抽出ロジックを拡張し、テスト用マイグレーションを追加した変更です。
use_new_acts_as のデフォルト変更に伴い、インストールジェネレータテストが旧設定行を期待して赤CIとなっていたが、テストを `not_to include` に修正し CI が復活した。
Anthropic の 'prompt is too long' エラーを正規表現で検知し、RubyLLM の ContextLengthExceededError に統一。テスト追加で振る舞いを保証し、後方互換性を維持した実装変更です。
Chatモデル作成時に `modalities` と `pricing` をハッシュへ変換し永続化することで、JSONB カラムの構造をレジストリと統一し、価格計算の不具合を解消した。
Anthropicプロバイダで複数の `:system` メッセージを渡すたびに出力されていた誤った警告ログを削除しました。APIのペイロード生成ロジック自体は正しく動作しており、警告のみが実態と乖離していたため、最小限の削除で修正しています。あわせて `build_system_content` の直接ユニットテストが6ケース追加され、正しい動作が明文化されました。
ruby_llmのコアgemが`Zeitwerk::Loader.eager_load_all`実行時にActiveRecord統合コードを誤ってロードしてしまうバグを修正。`lib/ruby_llm/active_record`ディレクトリをZeitwerkのignore対象に追加し、ロード責任をRailtieの`ActiveSupport.on_load :active_record`フックに明示的に委譲することで、スタンドアロン環境とRails環境のロード境界を明確にしました。
Railsの `has_rich_text` を使ったメッセージモデルで `extract_content` を呼び出した際に、`ActionText::RichText` オブジェクトがそのまま文字列化されHTMLタグがLLMに送信される問題を修正しました。`respond_to?(:to_plain_text)` によるダックタイピングで平文を抽出し、Action Textを使わない既存アプリケーションへの後方互換性を維持しながら対応しています。
`cf61b719` で導入された `save_to_database` メソッドが、`refresh!` メソッド内に残っていた同一のデータベース保存ロジックを置き換えていなかった問題を修正。9行削除・1行追加の小さな変更で、保存ロジックを `save_to_database` に一本化し、コードの保守性を向上させました。
`with:` パラメータに `ActiveStorage::Blob` を渡した際、`RubyLLM::Attachment` へのラッピングにより型情報が失われ、意図しない再アップロードが発生していたバグを修正。`convert_to_active_storage_format` に ActiveStorage オブジェクトの検出ロジックを追加し、既存の Blob をそのまま再利用できるようになりました。
`Agent.find`でチャット履歴を再ロードした際、クラスレベルの`assume_model_exists: true`がActiveRecordロード後にリセットされ`ModelNotFoundError`が発生するバグを修正。新設の`apply_assume_model_exists`メソッドで`find`・`sync_instructions!`・`llm_chat_for`の各パスにフラグを統一的に伝播するよう変更された。